【机器学习】今天想跟大家聊聊SVM
來源:深度學(xué)習(xí)自然語言處理
一、Motivation
之前我在自己的簡書上寫過SVM,可是當(dāng)時(shí)寫的只是皮毛(主要是現(xiàn)在忘了O.O),那么現(xiàn)在想再次拾起的原因是什么呢?
目前經(jīng)典的機(jī)器學(xué)習(xí)算法我覺得有兩個(gè):SVM和決策樹系列。所以目前先從SVM開始整理下,鞏固下記憶。
二、簡單了解什么是SVM
SVM,Support Vector Machine支持向量機(jī)(也被叫做支撐向量機(jī))。曾經(jīng)因?yàn)镾VM的出現(xiàn),淹沒了之前的一次深度學(xué)習(xí)革命。但是現(xiàn)在深度學(xué)習(xí)找到突破口又一次卷土重來,淹沒了SVM,但是在一些和計(jì)算機(jī)交叉的領(lǐng)域,SVM還是有自己的一席之地,因?yàn)?#xff0c;并不是任何任務(wù)都能用深度學(xué)習(xí)來做的,比如一些小數(shù)據(jù)。SVM既能做分類,也能做回歸,目前先從分類說起。
三、SVM提出的緣由
比如有一組數(shù)據(jù)
?
?
我們可以在這兩組數(shù)據(jù)中間任意畫一條線作為分割,比如下面的兩條線
?
?
但是這樣會(huì)導(dǎo)致線的不確定性,也會(huì)導(dǎo)致分類的還不確定性。這樣的分類存在局限性,比如有一個(gè)測試點(diǎn)在這里
?
?
在上述分類情況中,你說它應(yīng)該屬于哪一類呀?當(dāng)然應(yīng)該屬于藍(lán)色的類別,但是實(shí)際上它應(yīng)該屬于紅色的類別。像上述的分類情況,沒有泛化能力。那么怎么設(shè)置分類邊界呢?大家應(yīng)該都能猜出來,就是離這兩類邊界處的點(diǎn)盡可能的遠(yuǎn)。如下
?
?
使得邊界點(diǎn)距離分類線最大,這個(gè)方法就是SVM。
四、SVM理論
SVM就是尋找一個(gè)最優(yōu)的決策邊界,距離兩個(gè)類別的最近的樣本最遠(yuǎn),其中最近的樣本點(diǎn)稱為支持(支撐)向量:
?
?
轉(zhuǎn)化成數(shù)學(xué)問題,就是使得中間的直線距離兩邊的直線的間隔(margin)最大(這兩邊的直線的斜率是一樣的),也就是SVM算法就是最大化margin。
?
確定決策線(分類線)的表達(dá)式
線的表達(dá)式為Ax1 + Bx2 + C = 0,其中ABC為參數(shù),為了寫成矩陣的形式,這里將ABC寫為:
w1x1 + w2x2 + b = 0
矩陣形式為
[w1, w2].T * [x1, x2] + b = 0
簡寫為
W.T * X + b = 0
接下來要用到距離公式,這里先擺出來:
?
?
而改完之后的距離公式為:
?
?
其中
?
?
現(xiàn)在我們知道中間的決策線公式為
?
?
現(xiàn)在設(shè)置紅色點(diǎn)label y=1,藍(lán)色點(diǎn)label y=-1(這樣設(shè)置y值是為了后續(xù)的計(jì)算方便,當(dāng)然取別的值也可以),邊界直線到?jīng)Q策線長度為d,那么就有公式:
?
?
因?yàn)閐>0,現(xiàn)在做個(gè)變換(分母同除以d):
?
?
這里可以看設(shè)置W.T / ||W||d 為W.T_d,b / ||W||d 為b_d:
?
?
此時(shí)可以得出這三條線的公式分別為
?
?
而我們看中間的線,右邊是0,左右兩邊同時(shí)除以一個(gè)常數(shù)||W||*d,是不影響這個(gè)直線的,所以改為
?
?
這個(gè)時(shí)候,我們可以看出
?
?
參數(shù)都為W.T_d和b_d,所以我們可以統(tǒng)一替換為W.T和b,就相當(dāng)于重新命名而已(該W.T和b非之前的W.T和b):
?
?
最后再對條件公式做一個(gè)變形:
?
?
大家應(yīng)該能看懂,僅僅為了方便計(jì)算。
?
現(xiàn)在我們的優(yōu)化目標(biāo)就是最大化距離:
?
?
而數(shù)據(jù)都是在兩邊線線上和線外,所以 |W.T*X + b| 的結(jié)果永遠(yuǎn)大于等于1,所以優(yōu)化的目標(biāo)只有||W||:
?
?
也就是
?
?
而為了容易求導(dǎo)和計(jì)算,改為;
?
?
該公式即為目標(biāo)函數(shù)。
?
最終問題轉(zhuǎn)化為數(shù)學(xué)公式:
?
?
(該公式為數(shù)學(xué)中常見的有條件的數(shù)學(xué)優(yōu)化問題。)
總結(jié)
以上是生活随笔為你收集整理的【机器学习】今天想跟大家聊聊SVM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 机器学习开发库精选
- 下一篇: redis面试问题(一)
