機器學習算法原理系列篇12: 支撐向量機 (support vector machine)算法推導

更多有趣和專業的人工智能相關文章,微信搜索  : robot-learner , 或掃碼

 

 

 

支撐向量機算法(Support Vector Machine)是一種常用的分類算法,尤其在較小的樣本訓練集中能得到比其他算法更好的效果。支撐向量算法的參數由訓練樣本中少量的幾個樣本點決定。其基本思想在於,如果能保證訓練數據中最難分類的少數樣本點具有最大置信度的正確分類結果,那麼數據中其他的樣本點也會有較好置信度的正確分類結果。

 

 

 

如上圖所示,在一個分類問題中,有多種因素可能影響分界線的劃定:比如數據點的不規則分佈,極端點位置,或者數據不平衡。不同的算法可能考慮不同的因素從而得到不同的分界線。

 

 

       如上圖所示,支撐向量機算法假設能夠找到這樣一個最佳超平面來給數據分類:

                        

       從而使得一個分類的所有數據點都滿足        

       而另一個分類的所有數據點都滿足:

            

 

 

       並且在數據點的邊緣處,正好存在兩個超平面:

                    

 

不同分類的數據點中正好有少量的點分別處在上面兩個超平面上。正是這些數據點決定了分類超平面的形狀,所以這些數據點又被稱爲支撐向量。假設有一條垂直於分類超平面的直線和支撐向量所在平面分別交於x0和x1兩點,如下圖所示:

 

 

這樣x0和x1可以帶入下式:

 

 

  

      

 

兩式之差正好可以得到x0和x1之間的距離,也就是兩個支撐向量所在平面之間距離爲:

         

 

其中

爲垂直於超平面的法線方向。支撐向量機算法正是試圖通過把上述距離d,也被稱爲margin最大化來獲得最佳分類界限,也就是下圖所示的Margin距離。同時,必須要保證不同的分類的數據點在邊界超平面兩側,也就是支撐向量點所在平面兩側。

       因此,支撐向量機算法最終可以轉化爲一個有限制的優化問題,如下所示:

 

其中上述的限制條件能夠保證y=+1的數據點在   

一側,

 

而y=-1的數據點在   

一側。

 

可以看出,這個限制條件是挺強的,它要求所有數據點正好在分界平面兩側,而實際情況是有的數據點一定會被誤分類。爲了放寬這一條件,從而得到更好的優化效果,我們允許每一個數據點有越界的可能性,從而允許合理的分類錯誤。這個方法被稱爲soft margin的優化(相對於之前的hard margin),其優化問題如下式所示:

 

上式中,最小化wTw和最大化margin是等價的,ξi被稱爲slack variable,是每一個點被允許偏離分界面(或者說進入margin)的距離。C是懲罰係數,係數越大,ξi的取值越會被限制,因此每個點被允許的誤判距離越小,結果越趨向於hard margin。

 

有意思的是,上訴的優化問題可以從另一個角度來看。首先,上訴的兩個限制條件可以統一改爲一個:

 

       把這個限制條件帶入優化的公式中,可以看出支撐向量機算法等同於最小化下式:

                                     

其中

  

 

被稱爲Hinge 損失函數。和邏輯迴歸中的Logistic 損失函數相比, Hinge函數是分段函數。因此,支撐向量機算法也就可以認爲是對Hinge損失函數的最小化,加上一個對w係數的L2限制項。

 

與線性迴歸思路類似,支撐向量機算法也可以解決非線性問題,通過引入Kernel方程的思想來構造非線性空間進行分類。如下圖所示,Kernel方法的基本思想是,通過構造Kernel方程把特徵變量映射到高緯度的非線性空間進行運算,從而使在原空間線性不可分的樣本在覈空間變得線性可分。

 

      

 

如上圖所示,假設有這樣一個變化方程Φ(x), 把數據點x從左邊線性不可分的空間映射到右邊一個線性可分的特徵空間。

 

 

比如上圖中的一個例子,左邊是一個在二維空間中不可線性分割的數據集合。但是通過下面一個簡單的轉化以後:

                                                              

 

左邊的線性空間便映射到了右邊所示的一個線性可分的三維空間中。這樣的例子給我的提示是,總是可以通過高維空間的映射把低維度不好分類的問題轉化爲比較好分類的問題。但是這樣有一個巨大的問題是會導致維度的急劇膨脹,從而給新空間中的向量計算帶來巨大的困難。另一方面,支撐向量機的具體優化解法中可以發現,涉及的向量計算其實是各個向量之間的點乘,即

                                              

 

這意味着,經過高維轉換以後,在新的座標系下,我也只需要處理這樣的點乘:

                                       

 

Kernel函數的優點正是使得我們在計算新空間的向量點乘時候,不用先做高緯度轉化而是直接通過Kernel函數實現比較簡單計算。因爲Kernel函數可以保證:

 

 

 

 

常用的Kernel函數有:

 

  1. 線性函數形式

                                        

  1. 多項式函數

                                            

  1. 高斯函數

                                       

 

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