SVM是數(shù)據(jù)挖掘十大算法之一昵宇,其原理不是很好理解,學(xué)習(xí)了一些資料之后做一個(gè)淺顯的筆記垫竞,歡迎有機(jī)器學(xué)習(xí)愛好的同仁來交流席怪,和批評指正应闯。
SVM介紹
SVM(Support Vector Machine)指的是支持向量機(jī),是一種分類算法挂捻。在機(jī)器學(xué)習(xí)領(lǐng)域碉纺,是一個(gè)有監(jiān)督的學(xué)習(xí)模型,通常用來進(jìn)行模式識別、分類以及回歸分析骨田。在深度學(xué)習(xí)出現(xiàn)之前耿导,SVM被認(rèn)為機(jī)器學(xué)習(xí)中近十幾年表現(xiàn)最好的算法。
SVM是在一個(gè)向量空間內(nèi)通過找到一個(gè)超平面[1]态贤,將數(shù)據(jù)分隔在超平面兩側(cè)的算法舱呻,從而達(dá)到對數(shù)據(jù)分類,及預(yù)測分類的目的抵卫。
例子:
區(qū)分兩個(gè)分類哪條線最好狮荔?
SVM尋找分類的超平面
SVM尋找區(qū)分兩類的超平面,使超平面距離支持向量[2]的邊際最大
如何選取使邊際最大的超平面介粘?
超平面到一側(cè)最近點(diǎn)的距離等于超平面到另一側(cè)最近點(diǎn)的距離,兩側(cè)的兩個(gè)超平面平行
線性可區(qū)分和線性不可區(qū)分
在上圖1給的樣本數(shù)據(jù)中大部分是分布在分隔線兩側(cè)的晚树,但是有兩個(gè)點(diǎn)不是姻采,這樣找不到一條直線把樣本數(shù)據(jù)完全分隔開,這時(shí)候就是線性不可區(qū)分的爵憎,圖2也是線性不可區(qū)分的慨亲。這種是比較復(fù)雜的情況,我目前只學(xué)習(xí)了線性可區(qū)分的知識宝鼓。
定義與公式建立
超平面可定義為
以下圖為例
這里W和X都是向量刑棵,假如平面是二維的,超平面就是一維的愚铡,設(shè)W向量表示為|w1,w2|蛉签,向量X表示為|x1,x2|,超平面公式等價(jià)于
w1*x1 + w2*x2 + b = 0
x2 = -w1/w2 * x1 - b/w2
斜率 = -w1/w2
截距 = - b/w2
所以在超平面上方的點(diǎn)滿足
w1*x1 + w2*x2 + b > 0
在超平面下方的點(diǎn)滿足
w1*x1 + w2*x2 + b < 0
調(diào)整b的值沥寥,使得超平面到兩邊支持向量的距離都為1碍舍,有
超平面上方的點(diǎn)滿足
w1*x1 + w2*x2 + b >= 1
超平面上方邊際方程:
w1*x1 + w2*x2 + b = 1
超平面下方的點(diǎn)滿足
w1*x1 + w2*x2 + b <= -1
超平面下方邊際方程:
w1*x1 + w2*x2 + b = -1
下圖超平面的算法
即綠色斜線方程的算法
理解:
第一步 尋找支持向量
一類是(1,1)、(2,0)邑雅,另一類是(2,3)片橡,支持向量點(diǎn)是(1,1)和(2,3),如果如果樣本特征向量比較多淮野,尋找支持向量需要計(jì)算
第二步 尋找能分隔兩類捧书,且距兩類點(diǎn)都最遠(yuǎn)的線
這條線應(yīng)該滿足以下兩點(diǎn):
1、與(1,1)和(2,3)為頂點(diǎn)的線段d垂直
2骤星、能平分線段d
求解過程如下:
為了閱讀和理解的方便经瓷,將X1 寫成 x ,X2 寫成y
設(shè)斜線方程為:ax+2ay + b = 0
(1,1) 在斜線下方妈踊,(2,3)在斜線上方了嚎,假使上下邊際都是1的情況下,有
1a+2a+b=-1,2a+6a+b=1兩個(gè)方程成立
得:a = 2/5,b = -11/5
斜線方程:x+ 2y - 5.5 = 0
SVM如何找到邊際最大的超平面
其實(shí)我也不知道這個(gè)公式是怎么推到出來的歪泳,涉及到凸優(yōu)化萝勤、KTT條件、拉格朗日公式
超平面:在幾何體中呐伞,超平面是一維小于其環(huán)境空間的子空間敌卓,三維空間的超平面是二維,二維空間的超平面就是一維的伶氢。
支持向量:就是離分隔超平面最近的那些點(diǎn)趟径。接下來要試著最大化支持向量到分隔面的距離,需要找到此問題的優(yōu)化求解方法癣防。