支持向量機(jī)(support vector machine,SVM)是有些難理解的部分帅刀,筆者通過(guò)查詢一些資料菲饼,整理下個(gè)人理解肾砂。因數(shù)學(xué)水平有限,并沒(méi)有進(jìn)行完整的數(shù)學(xué)推導(dǎo)宏悦。:D
ps:簡(jiǎn)單起見(其實(shí)主要是我太菜菜:(),這里討論的是2D線性可分的情況,以及忽略了公式推導(dǎo)
一镐确、為什么要出現(xiàn)SVM包吝?
如果你已經(jīng)學(xué)過(guò)邏輯回歸的話,面對(duì)下圖的分類問(wèn)題很快能想到可以找出將圈圈和方塊分類的線源葫,也就是說(shuō)把二者分類诗越。但是,從數(shù)據(jù)樣本來(lái)看臼氨,你可以找出很多條線掺喻,比如下圖的綠線和紅線,它們都可以將樣本分類储矩。那么感耙,到底哪條才是最優(yōu)的呢?
這時(shí)候我們采用一個(gè)參考持隧,間距(margin)即硼,就是你找到的那條線h,和貼它最近的那個(gè)點(diǎn)的距離屡拨,這種點(diǎn)我們也稱它為支持向量只酥,(比如圖中貼近線的圈圈和方塊),所有貼近邊際線的都是支持向量。
間距當(dāng)然是越大越好呀狼,你看看下圖紅線和綠線的分類效果裂允,明顯是間距更大的綠線表現(xiàn)更好。
方便理解起見哥艇,這是2D的绝编,如果是在多維空間,SVM做的事貌踏,就是找到那個(gè)區(qū)分二類的超平面十饥,使間距最大(margin)。
二祖乳、如何找到超平面逗堵?
首先定義超平面為:WX+w0=0
(其中W=[w1,……wn],X=[x1,……xn])
比如說(shuō)在2D,此時(shí)只有兩個(gè)特征向量,即x=[x1,x2]
此時(shí)超平面方程為:w0+w1x1+w2x2=0
在超平面之上:w0+w1x1+w2x2>0
在超平面之下:w0+w1x1+w2x2<0
之前說(shuō)了眷昆,支持向量是貼在距離超平面最小距離的邊際線上的點(diǎn)蜒秤,現(xiàn)在我們已經(jīng)定義了超平面的方程,接下來(lái)要做的就是調(diào)整w(weight)亚斋,使超平面定義邊際的兩邊:
h1:w0+w1x1+w2x2=1 (y=+1)
h2:w0+w1x1+w2x2=-1 (y=-1)
這里的h1,h2就是我們說(shuō)的決策邊界垦藏。
由h1,h2得出y(w0+w1x1+w2x2)=1,這就是支持向量的表達(dá)式了伞访。
三掂骏、求間距(margin)
現(xiàn)在我們已經(jīng)定義了超平面的方程,也已經(jīng)定義了決策邊界厚掷,那么怎么求出最大間距呢弟灼?
因?yàn)樯婕皵?shù)學(xué)推導(dǎo)级解,在這里就略過(guò),想要看具體的推導(dǎo)田绑,可以看
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
這里給出結(jié)論:
前面給出了超平面的公式:WX+w0=0
X是特征向量勤哗,在2D里就是[x1,x2],那么只要找到合適的W就可以帶入已知的樣本掩驱,得到分類結(jié)果芒划。
結(jié)果如下:
因?yàn)樯婕昂芏鄶?shù)學(xué)推導(dǎo),在這里略過(guò)欧穴,只給出結(jié)論民逼,如果想了解公式推導(dǎo)可以查看下面給出的參考資料。
四涮帘、舉個(gè)栗子
我認(rèn)為理解一個(gè)算法原理最好的辦法就是嘗試用簡(jiǎn)單的例子去手動(dòng)算一遍或者跑一遍拼苍。于是,在這里采用現(xiàn)成的例子手動(dòng)計(jì)算一遍调缨,看看SVM是如何工作的疮鲫。:)
現(xiàn)在已三個(gè)樣本,(1,1) (2,3) (2,0)
圈圈(1,1) (2,0)為-1類
方塊(2,3)為+1類
這里取拉格朗日乘子為1弦叶,把樣本帶入公:
w=(2,3)-(1,1)=(a,2a)
因?yàn)椋?,1)被分為-1,所以g(1,1)=-1
(2,3)被分為+1,所以g(2,3)=+1
如上圖分別帶入再解方程可以求出最后的式子:g(x)
五俊犯、其他問(wèn)題
之前已經(jīng)說(shuō)過(guò)了,為了簡(jiǎn)單起見(主要是我太菜菜:()伤哺,這里討論的是只有兩個(gè)特征值的情況瘫析,也就是說(shuō)是2D的,且是線性可分的情況默责。
那么,線性不可分的情況呢咸包?(這里先說(shuō)用核函數(shù)解決:D)
線性不可分的情況待研究研究再寫吧桃序。
以上。
參考資料:
圖片來(lái)源
公式推導(dǎo)參考
wiki