[機器學習]SVM原理


  SVM是機器學習中神一般的存在,雖然自深度學習以來有被拉下神壇的趨勢,但不得不說SVM在這個領域有着舉足輕重的地位。本文從Hard SVM 到 Dual Hard SVM再引進Kernel Trick,然后推廣到常用的Soft Kernel SVM。

 

  一、Hard SVM

  SVM本身是從感知機算法演變而來,感知機算法是在一個線性可分的數據集中找到一個分類超平面,盡可能的將數據集划分開,理論上這樣的超平面有無數多個,但是從直覺上,我們知道離兩側數據都比較遠的超平面更適合用於分類,於是我們選擇了一個比較“胖”的邊界的超平面作為分類界,這就是SVM。

  我們知道一個超平面wx+b=0w是這個超平面的法向量,則平面外一點到這個平面的距離為:d=1/||W||*|WTx+b|(解析幾何的知識)。絕對值符號會導致函數不平滑,又因為數據集是線性可分的,所以我們可以把距離公式改寫為:d=1/||W||*yi·(WTxi+b)(具體可以參考感知機)。那么我們就有了最基本的優化對象:

                              maxw,b  margin(b,w)

                        subject to:for every n yi·(WTxi+b)>0

                            margin(b,w) = minw,b d

  我們知道同時放縮一個超平面的系數並不會改變這個超平面,such as 3wx+3b=0=wx+b,所以我們可以假設離我們超平面最近的那個向量到平面的距離為1,即讓yi·(WTxi+b)=1,那么原來的優化問題就變為了:

                                   maxw,b  1/||W||

                        subject to:for every n yi·(WTxi+b)>0 (已經滿足)

                               mini yi·(WTxi+b)≥1

  最大化問題不是很好解決,我們可以轉換為我們熟悉最小化問題:

 

                                    minw,b  0.5*WT*W

                               subject to:mini   yi·(WTxi+b)≥1

  很明顯這是一個二次規划問題,我們有成熟的算法如SMO,來解決這樣的問題。

 

  二、Dual SVM    

  對於一個已經解決的問題,為什么我們還要考慮它的對偶問題?這是因為化作對偶問題后會更容易求解,同樣也方便引入Kernel Trick。

  考慮原始SVM問題:      

                                   minw,b  0.5*WT*W

                             subject to:all i   yi·(WTxi+b)≥1

  我們改變其形式,轉化為:

                          minw,b(maxall α>0  0.5*WT*W+∑α(1-yi·(WTxi+b)))

  我們發現如果滿足了條件α的值會變成0,如果不滿足就會變成+∞,以此來約束我們的條件。然后我們從極小極大的問題轉換為極大極小的問題。  

     minw,b(maxall α>0  0.5*WT*W+∑α(1-yi·(WTxi+b))) ≥ minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))

    minw,b(0.5*WT*W+∑α(1-yi·(WTxi+b))≥maxall α>0(minw,b  0.5*WT*W+∑α(1-yi·(WTxi+b)))

  maxall α>0(minw,b  0.5*WT*W+∑α(1-yi·(WTxi+b)))就是我們的Lagrange Dual Problem。這是我們原問題的一個下界,那么什么時候能夠取得等號呢?根據拉格朗日對偶問題,當優化函數和條件是凸函數時,對偶問題是原問題的解的充要條件即為KKT 條件。然后我們求解對偶問題的極小問題,對w,b求偏導,令其等於0,得到結果為

                              L(w,b,α)=-0.5*||∑αyx||2+∑α

  我們就可以來解決極大問題了,原始優化問題就可以轉化為:

                             maxall α>0 ∑yα = 0 w=∑αyx   -0.5*||∑αyx||2+∑α

  這顯然又是一個二次規划問題!所以就可以求解了,然后用KKT條件來求解w,b。這就是對偶問題的求解方案。

 

  三、Kernel Trick

  當數據不是線性可分的,那么SVM就失去了作用,但是我們可以尋找一種函數將數據映射到更高維的空間中,以此把問題變成一個線性可分的問題,但是這會帶來維度的急劇上升,使得模型求解效率大大下降,而Kernel Trick就是為了解決這樣的問題而出現的!(下回補完!)

 

  四、Soft SVM


免責聲明!

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



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