支持向量機 SVM (一)

支持向量機SVM 這一知識點在機器學習中是非常重要的一個知識點,筆者想要通過自己的學習記錄總結下來方便日後複習。

學習資料參考:周志華老師的《機器學習》第六章、李航老師的《統計學習方法》的第七章。

文章中許多公式及圖片來自於書中,這篇總結是根據筆者的基礎會補充一些筆者不懂的知識點。

支持向量機(support vector machines,SVM)是一種二類分類模型。它的基本模型是 定義在特徵空間上的間隔最大的線性分類器。它通過引入一個超平面,將樣本點分隔成兩簇,以達到預測樣本類別的目的。而SVM算法的主要過程就是求出這個分離超平面。

  • 超平面:

我們將SVM學習得到的分離超平面記爲

W*是超平面的法向量,b*是超平面的截距。分離超平 面對應於方程w·x+b=0,它由法向量w和截距b決定,可用(w,b)來表示。分離超平面將特 徵空間劃分爲兩部分,一部分是正類,一部分是負類。法向量指向的一側爲正類,另一側 爲負類。

  • 幾何性質

首先在二維平面中我們計算點到直線的距離如下,這不難想象到三維空間及高維空間的點到平面的距離是如何計算的。

所以如上圖即可以證明w是法向量 ,也可以推導出點到平面的距離公式。其中距離公式的分母是w的L2範數(歐式距離)。任意點到超平面的距離=將點代入平面方程的絕對值/法向量的模。

  • 原始公式推導

西瓜書中給出

此時樣本點到超平面的間隔爲

注:分類不正確的情況下,求得的間隔爲負數,不影響計算的最終結果。 

定義了樣本點到超平面的間隔後,我們繼續定義樣本訓練集到超平面的間隔:訓練集所有樣本點到超平面的間隔的最小值

而支持向量機SVM算法的最終目的,就是獲得最高的分類準確率,等同於找到訓練集間隔最大的最優超平面。

下圖是對於SVM原始公式推導(西瓜書和統計學習方法書中的推導個人認爲略有不同,但是最終推導得出的結果是一樣的)

其中需要注意的是對於超平面W*x+b=0 (這個時候w有個轉置上標) 參數組(w,b)=(w*,b*)和 (w,b)=(kw*,kb*)表示的是同一個平面,即在等倍數縮放w,b結果表示的都是同一個平面。所以爲了簡化最優問題,令樣本點到超平面的最小間隔爲1.則\gamma =\frac{2}{\left \| w \right \|}\:。這一改變對不等式約束及目標函數優化沒有影響,也就是說它產生一個等價的最優化問題。

注意:將max\frac{1}{\left \| w \right \|}改爲min\frac{1}{2}\left \| w \right \|^2是爲了後續的計算更簡便,這兩個是等價的。 

 

  • 最大間隔分離超平面的存在唯一性(李航老師的統計學習方法中第七章中講的非常詳細)

存在性易得,這裏討論一下唯一性:

假設問題存在兩個最優解( W*1, b*1)和(W*2 ,b*2 )。根據假設因爲要求最大化最小間隔,所以\frac{1}{\left \| w \right \|}是相等的,也就意味着

     其中c是一個常數。設   ,由上述的公式可知,

因爲公式的約束導致 c 此時是最小的 \left \| w \right \|.

所以最後不等式表明,式中的不等號可變爲等號,即  ,從而有w_{1}^{*} = \lambda w_{2}^{*}\left | \lambda \right |=1。若 \lambda =-1,則w=0,(w,b)不是問題的可行解,矛盾。因此必有\lambda =1,即 w_{1}^{*} = w_{2}^{*},所以兩個最優解爲(w,b_{1}^{*}) 和  (w,b_{2}^{*})

上圖中的x1',x2'是集合{xi | yi = +1}中分別對應(w,b_{1}^{*}) 和  (w,b_{2}^{*})使得問題的不等式等號成立的點,同理x1''和x2''是集合{xi | yi = -1}分別對應(w,b_{1}^{*})(w,b_{2}^{*})使問題的不等式等號成立的點。上述推導過程很清楚,最後一列公式是將x2'代入(w,b_{1}^{*})的超平面能夠被分類正確所以滿足  同理其他的式子也是將點分別代入超平面。最後兩個不等式要取等號才能滿足。推導過後得到 b是相同的,所以得到兩個最優解是相同的,解的唯一性得證。

 

拉格朗日函數

在支持向量機和最大熵模型中都會用到拉格朗日的對偶性,主要爲解決約束最優化問題,通過將原始問題轉換爲對偶問題求解。接下來就補充一下這方面的知識。

1.原始問題

先從求函數最小值開始: 

求f(x)f(x)的最小值時x的取值,f(x)在R^{n}上連續可微(爲什麼要求連續可微?因爲假設其連續可微根據高中知識,對函數求導,令導數爲0即可求出最優解)。這時候我們對f(x)求導令導數爲0就能取到極值了。若此時加入約束如下:

其中f(x),ci(x),hj(x)在 R^{n} 上連續可微我們稱此約束最優化爲原始問題,也是拉格朗日對偶性需要解決的問題。
此時我們直接求導是無法解決了,要是可以將約束條件轉換爲未知變量(把約束條件去掉)或許就可以找到答案了,而拉格朗日函數就是做這個的。

2.拉格朗日函數

這部分參考:https://www.cnblogs.com/90zeng/p/Lagrange_duality.htmlhttps://blog.csdn.net/asd136912/article/details/79149881

爲了求解原始問題,引進廣義拉格朗日函數(generalized Lagrange function):

其中x = (x_{1},x_{2},x_{3},......,x_{n})\in R^{n} , \alpha _{i}\beta _{j}是拉格朗日乘子且\alpha _{i}\geq 0 ,式子看上去好像很複雜(哈哈哈真的複雜)其實是將原始問題的所有的約束條件加上新引入的變量(拉格朗日乘子)構成了一個新的函數,這樣就是把約束條件轉換爲了未知變量。

現在,把L(x,\alpha ,\beta )看作是關於 \alpha _{i}\beta _{j}的函數,經過優化就是確定\alpha _{i}\beta _{j}的值使得L(x,\alpha ,\beta )取得最大值(此過程中把x看做常量),確定了\alpha _{i}\beta _{j}的值就可以得到L(x,\alpha ,\beta )的最大值,,而此時  就是隻和x有關的函數。

此時我們考慮x的函數:

下標P代表原始問題 ,其中,

有:

接下來分析證明x是否滿足原始問題中的約束

首先如果x違反了某個原始問題的約束,即存在某個i使得C_{I}>0或者存在某個j使得\bg_white h_{j} \neq 0 那麼就會有

 因爲若某個i使得C_{I}>0,則可令\bg_white \alpha _{i} \rightarrow + \infty ; 或者若某個j使得\bg_white h_{j} \neq 0 那麼就可令\beta _{j}使\beta _{j}h_{j}\rightarrow +\infty,而將其餘各\alpha _{i}\beta _{j}均取爲0

所以如果考慮極小化問題,則: 

 這樣可以發現它是與原始最優化問題等價的,即它們有相同的解。

 

  • 對偶問題

上述公式爲得到的原始問題的對偶問題。該對偶問題是極大極小問題,爲了得到對偶問題的解,先求L\left ( w,b,\alpha \right ) 對w,b的極小,再求\alpha的極大。

1.求L\left ( w,b,\alpha \right )對w,b的極小。

所以得到

接着把上述式子回代入到拉格朗日函數中:

 

所以

推導式子中的m和最終N其實是一樣的

2.求\alpha的極大,即是對偶問題:

 

 

 

 

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