支持向量機(SVM)的詳細推導過程及注解


我是搬運工:http://my.oschina.net/wangguolongnk/blog/111353

支持向量機的原理很簡單,就是VC維理論和最小化結構風險。在閱讀相關論文的時候,發現很多文 章都語焉不詳,就連《A Tutorial on Support Vector Machines for Pattern Recognition》這篇文章對拉格朗日條件極值問題的對偶變換都只是一筆帶過,讓很多人覺得很困惑。下面我將就SVM對線性可分的情況作詳盡的推 導。

1

如上圖所示,有一堆訓練數據的正負樣本,標記為:2,假設有一個超平面H:3,可以把這些樣本正確無誤地分割開來,同時存在兩個平行於H的超平面H1和H2:

4

使離H最近的正負樣本剛好分別落在H1和H2上,這樣的樣本就是支持向量。那么其他所有的訓練樣本都將位於H1和H2之外,也就是滿足如下約束:

4

寫成統一的式子就是:

 5(1)

而超平面H1和H2的距離可知為:

6

SVM的任務就是尋找這樣一個超平面H把樣本無誤地分割成兩部分,並且使H1和H2的距離最大。要找到這樣的超平面,只需最大化間隔Margin,也就是最小化25。於是可以構造如下的條件極值問題:

 7(2)

對於不等式約束的條件極值問題,可以用拉格朗日方法求解。而拉格朗日方程的構造規則是:用約束方程乘以非負的拉格朗日系數,然后再從目標函數中減去。於是得到拉格朗日方程如下:

 8(3)

其中:

9 (4)

那么我們要處理的規划問題就變為:

10 (5)

上式才是嚴格的不等式約束的拉格朗日條件極值的表達式。對於這一步的變換,很多文章都沒有多做表述,或者理解有偏差,從而影響了讀者后續的推演。在此我將詳細地一步步推導,以解困惑。

(5)式是一個凸規划問題,其意義是先對α求偏導,令其等於0消掉α,然后再對w和b求L的最小值。要直接求解(5)式是有難度的,通過消去拉格朗日系數來化簡方程,對我們的問題無濟於事。所幸這個問題可以通過拉格朗日對偶問題來解決,為此我們把(5)式做一個等價變換:

11

上式即為對偶變換,這樣就把這個凸規划問題轉換成了對偶問題:

 12(6)

其意義是:原凸規划問題可以轉化為先對w和b求偏導,令其等於0消掉w和b,然后再對α求L的最大值。下面我們就來求解(6)式,為此我們先計算w和b的偏導數。由(3)式有:

 13(7)

為了讓L在w和b上取到最小值,令(7)式的兩個偏導數分別為0,於是得到:

 14(8)

將(8)代回(3)式,可得:

 23(9)

再把(9)代入(6)式有:

 15(10)

考慮到(8)式,我們的對偶問題就變為:

 16(11)

上式這個規划問題可以直接從數值方法計算求解。

需要指出的一點是,(2)式的條件極值問題能夠轉化為(5)式的凸規划問題,其中隱含着一個約束,即:

17 (12)

這個約束是這樣得來的,如果(2)和(5)等效,必有:

18

把(3)式代入上式中,得到:

19

化簡得到:

20 (13)

又因為約束(1)式和(4)式,有:

21

所以要使(13)式成立,只有令:24,由此得到(12)式的約束。該約束的意義是:如果一個樣本是支持向量,則其對應的拉格朗日系數非零;如果一個樣本不是支持向量,則其對應的拉格朗日系數一定為0。由此可知大多數拉格朗日系數都是0。

一旦我們從(11)式求解出所有拉格朗日系數,就可以通過(8)式的

22

計算得到最優分割面H的法向量w。而分割閾值b也可以通過(12)式的約束用支持向量計算出來。這樣我們就找到了最優的H1和H2,這就是我們訓練出來的SVM。

1

2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM