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