SVM是多層神經網絡算法出現之前的神

我們都知道其經常被用來做分類問題,當計算機的能力不足時,SVM是一個最火的算法,直到多層神經網絡算法的出現。

介紹

將下面的點進行分類如何劃分?劃分為幾類呢?

SVM是多層神經網絡算法出現之前的神

220px-Svm_separating_hyperplanes_(SVG).svg.png

通過人的眼和人腦處理後,我們可以很快的分辨出是紅線劃分是最好的,可是計算機是如何才能知道,又如何制定規則呢?

SVM尋找區分兩類的超平面(hyper plane), 使邊際(margin)最大
SVM是多層神經網絡算法出現之前的神

Image [4].png

如上圖所示,將數據劃分開的平面有很多,圖一,圖二都可以將數據劃分開,但是每一種方式的劃分的平面又有很多個平面,比如將平面進行平移也可以將數據劃分開,但是是否可以一直平移?答案是否定的,它存在上下界(指的是恰好可以分開數據),也就是存在數據點正好落在分割面上,而這些點就是支持向量。

分類

按照分割的情況將SVM分為三種:

  • 硬間隔支持向量機(線性可分支持向量機):當訓練數據線性可分時,可通過硬間隔最大化學得一個線性可分支持向量機。用通用的話來說就是上圖中的虛線間沒有數據點。
  • 軟間隔支持向量機:當訓練數據近似線性可分時,可通過軟間隔最大化學得一個線性支持向量機。用通俗的話來講就是上圖中虛線間還存在部分數據點。
SVM是多層神經網絡算法出現之前的神

images [1].jpg

  • 非線性支持向量機:當訓練數據線性不可分時,可通過核方法以及軟間隔最大化學得一個非線性支持向量機。無法用線性來進行劃分。比如上圖的情況。

算法

得到公式 Image [9].png

我們再次把這個圖放出來,首先我們要證明的就是線性可分支持向量機

SVM是多層神經網絡算法出現之前的神

Image [4].png

首先我們假設中間的超平面方程為:


SVM是多層神經網絡算法出現之前的神

Image [5].png

當然如上面所言,我們可以對這個超平面進行平移,直到達到不能移動的支持向量的點。

SVM是多層神經網絡算法出現之前的神

Image [8].png

如上圖公式所示,我們先證明的是二分類,讓等式大於1的為正例,小於1為負例。為什麼選1呢?其實你可以選任何數,同樣正例與父類用(1,-1)表示也是為了計算方便。 這樣我們可以很容易得出:

SVM是多層神經網絡算法出現之前的神

Image [9].png

這樣兩個公式就合併了,同時得出了條件了。

最大化邊際

我們都知道svm就是要尋找使邊際最大的那個狀態的超平面,用M來表示兩個邊界平面間的距離,那麼?

max M = ?


這時我們可以直接把公式簡化為,

SVM是多層神經網絡算法出現之前的神

Image [2].png

=1 兩個平面間的距離公式直接可以得出,

<code>M = 

|b+1-(b-1)|

/sqrt(w^

2

+

0

)=

2

/

||

w

||

/<code>

所以M要最大,|w|就需要最小

所以我們得到的目標函數就是使 |w|最小,即|w|^2最小,為求導方便,我們設為求

<code>

1

/

2

|w|

^

2

/<code>

最小。

構造函數

通過以上兩次分析,我們已經把問題轉化為了大學的數學問題


在已知

SVM是多層神經網絡算法出現之前的神

Image [9].png

的條件下,要使得

<code>

1

/

2

|w|

^

2

/<code>

最小。

這就明顯變為了一個目標函數和一個約束條件,組合成的拉格朗日求最小值的問題了

但是由於條件是一個不等式,同時這個條件包含所有的數據點, 利用一些數學推倒,以上公式可變為有限制的凸優化問題(convex quadratic optimization)利用 Karush-Kuhn-Tucker(KKT)條件和拉格朗日公式,可以推出MMH可以被表示為以下“決定邊界“

SVM是多層神經網絡算法出現之前的神

Image [13].png

詳細的推倒在下面會附上。

這裡舉一個例子:

SVM是多層神經網絡算法出現之前的神

Image [15].png

Sklearn SVM


SVM是多層神經網絡算法出現之前的神


2 sklearn畫出決定界限


SVM是多層神經網絡算法出現之前的神



鏈接:https://www.jianshu.com/p/501505437200


分享到:


相關文章: