機器學習(6)SVM

SVM有嚴格的數學證明,但挺複雜,我僅粗略地寫下這篇文章。

用一個二維空間裏僅有兩類樣本的分類問題來舉個小例子。假設我們給定了下圖左圖所示的兩類點Class1和Class2(也就是正樣本集和負樣本集)。我們的任務是要找到一個線,把他們劃分開。

顯然,只要在兩堆數據中劃一條線就可以。但劃線也有很多種畫法:

那到底哪種分法比較好?

SVM試圖尋找一個超平面來對樣本進行分割,把樣本中的正例和反例用超平面分開,但是不是很敷衍地簡單的分開,而是盡最大的努力使正例和反例之間的間隔margin最大。

我們的目標是尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠離超平面,我們關心求得的超平面能夠讓所有點中離它最近的點具有最大間距。

我們先用數學公式來描述下。假設我們有N個訓練樣本{(x1, y1),(x2, y2), …, (xN, yN)},x是d維向量,而yi∊{+1, -1}是樣本的標籤,分別代表兩個不同的類。這裏我們需要用這些樣本去訓練學習一個線性分類器(超平面):f(x)=sgn(wTx + b),也就是wTx + b大於0的時候,輸出+1,小於0的時候,輸出-1。sgn()表示取符號。而g(x) =wTx + b=0就是我們要尋找的分類超平面,如上圖所示。剛纔說我們要怎麼做了?我們需要這個超平面最大的分隔這兩類。也就是這個分類面到這兩個類的最近的那個樣本的距離相同,而且最大。爲了更好的說明,我們在上圖中找到兩個和這個超平面平行和距離相等的超平面:H1: y = wTx + b=+1 和 H2: y = wTx + b=-1。

好了,這時候我們就需要兩個條件:(1)沒有任何樣本在這兩個平面之間;(2)這兩個平面的距離需要最大。(對任何的H1和H2,我們都可以歸一化係數向量w,這樣就可以得到H1和H2表達式的右邊分別是+1和-1了)。先來看條件(2)。我們需要最大化這個距離,所以就存在一些樣本處於這兩條線上,他們叫支持向量(後面會說到他們的重要性)。那麼它的距離是什麼呢?我們初中就學過,兩條平行線的距離的求法,例如ax+by=c1和ax+by=c2,那他們的距離是|c2-c1|/sqrt(x2+y2)(sqrt()表示開根號)。注意的是,這裏的x和y都表示二維座標。而用w來表示就是H1:w1x1+w2x2=+1和H2:w1x1+w2x2=-1,那H1和H2的距離就是|1+1|/ sqrt(w12+w12)=2/||w||。(因爲y係數爲1)也就是w的模的倒數的兩倍。也就是說,我們需要最大化margin=2/||w||,爲了最大化這個距離,我們應該最小化||w||,看起來好簡單哦。同時我們還需要滿足條件(2),也就是同時要滿足沒有數據點分佈在H1和H2之間:

也就是,對於任何一個正樣本yi=+1,它都要處於H1的右邊,也就是要保證:y= wTx + b>=+1。對於任何一個負樣本yi=-1,它都要處於H2的左邊,也就是要保證:y = wTx + b<=-1。這兩個約束,其實可以合併成同一個式子:yi (wTxi + b)>=1。

所以我們的問題就變成:

然後這就是個凸二次規劃問題,就可以通過一些現成的 QP (Quadratic Programming) 的優化工具來得到最優解。除了用解決QP問題的常規方法之外,還可以應用拉格朗日對偶性,通過求解對偶問題得到最優解,這就是線性可分條件下支持向量機的對偶算法,這樣做的優點在於:一是對偶問題往往更容易求解;二者可以自然的引入核函數,進而推廣到非線性分類問題。


對偶問題

在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉換爲對偶問題,通過求解對偶問題而得到原始問題的解。至於這其中的原理和推導參考文獻[3]講得非常好。大家可以參考下。這裏只將對偶問題是怎麼操作的。假設我們的優化問題是:

min f(x)

s.t. hi(x) = 0, i=1, 2, …,n

這是個帶等式約束的優化問題。我們引入拉格朗日乘子,得到拉格朗日函數爲:

L(x, α)=f(x)+α1h1(x)+ α2h2(x)+…+αnhn(x)

然後我們將拉格朗日函數對x求極值,也就是對x求導,導數爲0,就可以得到α關於x的函數,然後再代入拉格朗日函數就變成:

max W(α) = L(x(α), α)

這時候,帶等式約束的優化問題就變成只有一個變量α(多個約束條件就是向量)的優化問題,這時候的求解就很簡單了。同樣是求導另其等於0,解出α即可。

核函數:

我們可以把我們的原始樣本點通過一個變換,變換到另一個特徵空間,在這個特徵空間上是線性可分的

核函數之一高斯核函數公式:

我公衆號:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章