我們都知道其經(jīng)常被用來做分類問題,當(dāng)計(jì)算機(jī)的能力不足時,SVM是一個最火的算法,直到多層神經(jīng)網(wǎng)絡(luò)算法的出現(xiàn)。 介紹將下面的點(diǎn)進(jìn)行分類如何劃分?劃分為幾類呢? 220px-Svm_separating_hyperplanes_(SVG).svg.png 通過人的眼和人腦處理后,我們可以很快的分辨出是紅線劃分是最好的,可是計(jì)算機(jī)是如何才能知道,又如何制定規(guī)則呢? SVM尋找區(qū)分兩類的超平面(hyper plane), 使邊際(margin)最大Image [4].png 如上圖所示,將數(shù)據(jù)劃分開的平面有很多,圖一,圖二都可以將數(shù)據(jù)劃分開,但是每一種方式的劃分的平面又有很多個平面,比如將平面進(jìn)行平移也可以將數(shù)據(jù)劃分開,但是是否可以一直平移?答案是否定的,它存在上下界(指的是恰好可以分開數(shù)據(jù)),也就是存在數(shù)據(jù)點(diǎn)正好落在分割面上,而這些點(diǎn)就是支持向量。 分類按照分割的情況將SVM分為三種:
images [1].jpg
我們再次把這個圖放出來,首先我們要證明的就是線性可分支持向量機(jī) Image [4].png 首先我們假設(shè)中間的超平面方程為: Image [5].png 當(dāng)然如上面所言,我們可以對這個超平面進(jìn)行平移,直到達(dá)到不能移動的支持向量的點(diǎn)。 Image [8].png 如上圖公式所示,我們先證明的是二分類,讓等式大于1的為正例,小于1為負(fù)例。為什么選1呢?其實(shí)你可以選任何數(shù),同樣正例與父類用(1,-1)表示也是為了計(jì)算方便。 這樣我們可以很容易得出: Image [9].png 這樣兩個公式就合并了,同時得出了條件了。 最大化邊際我們都知道svm就是要尋找使邊際最大的那個狀態(tài)的超平面,用M來表示兩個邊界平面間的距離,那么? max M = ? 這時我們可以直接把公式簡化為, Image [2].png =1 兩個平面間的距離公式直接可以得出, M = |b+1-(b-1)|/sqrt(w^2+0)=2/||w|| 所以M要最大,|w|就需要最小 所以我們得到的目標(biāo)函數(shù)就是使 |w|最小,即|w|^2最小,為求導(dǎo)方便,我們設(shè)為求
最小。 構(gòu)造函數(shù)通過以上兩次分析,我們已經(jīng)把問題轉(zhuǎn)化為了大學(xué)的數(shù)學(xué)問題 在已知 Image [9].png 的條件下,要使得 1/2|w|^2 最小。 這就明顯變?yōu)榱艘粋€目標(biāo)函數(shù)和一個約束條件,組合成的拉格朗日求最小值的問題了 但是由于條件是一個不等式,同時這個條件包含所有的數(shù)據(jù)點(diǎn), 利用一些數(shù)學(xué)推倒,以上公式可變?yōu)橛邢拗频耐箖?yōu)化問題(convex quadratic optimization)利用 Karush-Kuhn-Tucker(KKT)條件和拉格朗日公式,可以推出MMH可以被表示為以下“決定邊界“ Image [13].png 詳細(xì)的推倒在下面會附上。 這里舉一個例子: Image [15].png Sklearn SVM2 sklearn畫出決定界限
|
|