SVM(一)

SVM(support vector machine,支持向量機)是最好的分類模型之一。通過尋找高維空間上的超平面,把樣本分隔爲兩類,並且計算複雜度並沒有因爲高維映射而增加。

 

間隔

在logistic迴歸中,通過logistic函數,我們得到介於[0,1]之間的預測值h(x)。h(x)>0.5,判定爲正類,反之判定爲負類。在建立概率模型時,我們把h(x)大小當做x屬於正類的概率,即,也就是屬於正類的置信度。

直觀地,我們觀察下面這幅圖:


在二維空間中,以一條直線分隔兩類樣本。其中A遠離分界面,C靠近分界面。我們直觀地感覺A屬於這一類的可能性會大於C。

於是,在分類建模是,我們會希望尋找一條分隔線,在所有樣本分隔正確的同時,使所有樣本儘可能遠離分隔線。我們稱這條分隔線爲最小間隔平面,也就是我們希望得到的最優分類器。下面具體定義間隔。

 

函數間隔

在線性分類中,我們定義如下的一種間隔:


Y屬於[-1或1],

Wtx+B項是線性擬合函數,類似logistic迴歸中得到的h(x)值,越大,屬於正類的可能性越大。

如果分類正確,y與wtx+B同號,置信度爲正,且越大,置信度越大。

如果分類錯誤,那麼得到一個負值。這種間隔稱爲函數間隔。

 

那麼,得到這麼一個結論:函數間隔越大,樣本正確分類置信度越大。

於是,在尋找最優分割平面時,我們可以以最小化函數間隔爲目標建模。

 

缺點:我們直接把w變爲2w,b變爲2b。那麼得到的預測值

的符號不會變,也就是分類效果不變。但是,得到的函數間隔擴大的兩倍。於是我們要引入歸一化方法。

我們可以設:

||w||=1或者用替代w,b。

 

幾何間隔

我們用更直觀的方法來定義間隔,如下:

直接用點到直線的歐式距離來定義間隔。根據幾何知識,我們可以寫出幾何間隔的公式:


可以看出,如果||w||==1,幾何間隔就變爲函數間隔。

 

最大間隔分類器

現在定義一種線性分類器,其尋找一條最大幾何間隔的分隔平面。根據上面函數間隔的定義,我們可以得到這種分類器的最優化式子:


其中r表示函數間隔,約束爲所有的樣本的函數間隔都大於這個最小間隔,||w||=1爲函數間隔歸一化約束。

上述的最優化問題中,||w||=1是非凸域,所以上式是一個非凸優化問題。我們轉而最大化幾何間隔,就可以去掉歸一化非凸約束,得到:


R還是函數間隔,不過現在目標函數維最小化幾何間隔,並且目標函數是非凸的。

考慮到我們可以隨意給w,b一個約束來歸一化,而不會改變結果。也就是我們可以隨意改變幾何距離的量綱。這裏,我們假設最優的函數間隔r=1,再把max改寫成min,得到:


終於,得到了一個二次凸規劃問題(QP),可以用簡單的最優化算法求得最優解。

 

拉格朗日對偶規劃

上述解得最優解,我們得到在當前空間上的最優分隔面。當時之前說過,SVM是在高維空間上的最優分隔平面。我們通過下面的方法,得到這種高維映射。

考慮一般的最優化問題:


我們可以寫出其拉格朗日乘子,得到:


根據等式約束最優性條件,解:


最後能夠得到原最優化問題的最優解。

 

關於不等式約束問題:


接下來我們要通過一定的變換,得到上述優化問題的等價形式,也就是其對偶規劃。

寫出拉格朗日乘子:


我們考慮下面這個優化問題:


也就是


觀察上面的問題,如果w不滿足約束,也就是

這裏的變量是alfa,beta,那麼第一項是常數不變,第二項爲正數*alfa,第三項爲非零*beta。那麼,這個最優化問題最大值爲正無窮。

當w滿足約束,也就是


考慮到附加條件alfa>=0,於是其最大值只有在alfa=0時得到,後兩項均爲0。於是,上式等價於:


也就是是f(w)+約束的等價形式,即約束問題的無約束形式。

 

於是,有約束問題我們通過如上的方法,寫成無約束形式,如下:


我們直接交換min,max順序,得到稱爲對偶規劃的形式,如下:


原約束最優解爲P*,對偶問題的最優解爲d*。一般的,關於對偶問題,有:

Min max>=maxmin;

一個簡單的比喻就是:一羣胖子中的最瘦的會大於一羣瘦子中最胖的。

於是我們有:

經證明,在一定條件下,上面的式子取等號。也就是傳說中的KKT條件:


其中的條件:


稱爲KKT互補條件。也就是alfa,g至少有一個爲0。

 

小結:不等式優化問題可以寫成無約束問題,無約束問題可以再寫出其對偶規劃問題。在KKT條件下,原問題與對偶問題有相同的解。於是,我們可以在KKT條件下,解對偶問題,得到原問題的解。

 

對偶規劃運用於SVM問題

通過之前的推導我們得到SVM的最優化形式:

 

支持向量的來源

上式寫出其拉格朗日乘子的話,有乘子項:


根據KKT互補條件,只有一部分的gi(W)的係數alfai!=0,僅當g(w)=0,也就是這些樣本的幾何間隔爲1。也就是在求解的過程中,只有這部分對於最後的結果有影響。

直觀來看,如下圖:


無論其他點如何,最優的分割面只由最接近的三個樣本點決定,這些也就是SVM的支持向量。

 

繼續上面的推導,我們寫出SVM優化的拉格朗日乘子:


寫出KKT條件的兩個條件 :


以及:

 

帶回到拉格朗日乘子中,得到包含部分KKT條件的拉格朗日乘子形式:


*上面的步驟中,我們通過部分的KKT條件,用其他的變量表示w。

再根據對偶規劃理論,以及剩餘的KKT條件,得到如下的對偶問題:


其約束爲對偶KKT條件的附加項。有了附加KKT條件,對偶規劃的解也就是原規劃的解。

 

*至此,原優化問題完全等價於上面的優化問題。

解上述問題後,我們得到最優的alfa,再通過之前KKT的條件,我們可以解出w與b :

 

預測分類時,當一個測試樣本輸入時,我們如下計算:


也就是任意一個測試樣本,都要與所有的訓練樣本求內積。由此我們引出核方法來簡化計算。

核方法

對於一個樣本,我們可以寫出其高維組合,如下:


有這麼一種函數K(X,Z),其結果爲X,Z高維投影后的內積,也就是:


我們稱之爲核函數。

 

先假設我們有這樣的函數,並且其計算時間複雜度很低。那麼上面的SVM中,我們直接用核代替所有的內積,就能夠得到樣本高維投影的高維空間最優分隔平面。由於許多樣本是線性不可分的,但是投影到高維空間後,卻可以更好地尋找一個線性分隔面。如下:

 

以簡單的線性核函數爲例子闡述如下:


 

而考慮高維點積如下:


即核函數結果等於高維內積。

在考慮其時間複雜度:

核函數第一步的計算爲N爲向量點積後得到實數相乘,複雜度爲O(N)。

高維投影后,兩個N^2的向量點積,時間複雜度爲O(N^2)。

 

也就是說,我們通過核函數,用低維的計算量得到了高維的結果,沒有增加計算複雜度的同時,得到了性質更好的高維投影。也就是kernel trick。

 

Mercer定理

那麼,怎樣的函數,得到的結果會是原向量的高維內積呢?如下推導核函數的Mercer定理。

對於給定的任意向量集合:


核矩陣定義爲任意兩個向量核函數組成的矩陣,也就是:


對於任意的矩陣z,根據內積的非負性,我們有:


也就是說,K如果是核函數,那麼對於任意的樣本集合,得到的核矩陣爲半正定矩陣。

發佈了89 篇原創文章 · 獲贊 51 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章