支持向量機SVM淺析(待補充)

先發一張個人對svm的主要概念圖:
在這裏插入圖片描述

1. 幾何間隔與支持向量

 對於用於分類的支持向量機,它是個二分類的分類模型。也就是說,給定一個包含正例和反例(正樣本點和負樣本點)的樣本集合,支持向量機的目的就是基於訓練集D在樣本空間找到一個劃分超平面,將不同類別的樣本分開,原則是使正例和反例之間的間隔最大。如下圖所示:
在這裏插入圖片描述
在樣本空間中,劃分超平面可通過如下線性方程來描述:
在這裏插入圖片描述
其中w=(w1;w2;w3;…wn)爲法向量,決定了超平面的方向;b爲位移項,決定了超平面與原點之間的距離。在進行分類的時候,遇到一個新的數據點x,將x代入f(x) 中,如果f(x)小於0則將x的類別賦爲-1,如果f(x)大於0則將x的類別賦爲1。

若樣本被超平面成功分開,則在H1: y = wTx + b=+1 和 H2: y = wTx + b=-1 (總存在一個對w係數矩陣的縮放變化使H1 H2成立,即=1/-1)這兩條線上的樣本點稱爲“支持向量”,兩個異類支持向量到超平面的距離之和稱爲“間隔”。

而SVM思想就是:試圖尋找一個超平面來對樣本進行分割,把樣本中的正例和反例用超平面分開,但是不是很敷衍地簡單的分開,而是盡最大的努力使正例和反例之間的間隔相等且最大。
在這裏插入圖片描述
在這裏插入圖片描述
支持向量與間隔
H1和H2的距離就是|1+1|/ sqrt(w1 ^2+w1 ^2)=2/||w||。(本來是矩陣的第二範數,但是矩陣的範數等價性)也就是w的模的倒數的兩倍。其中||w||爲w的二階範數(範數是一個類似於模的表示長度的概念),是單位向量(一個向量除以它的模稱之爲單位向量)。

也就是說,我們需要最大化margin=2/||w||,爲了最大化這個距離,我們應該最小化||w||,並且保證沒有數據點分佈在H1和H2之間。 也就是,對於任何一個正樣本yi=+1,它都要處於H1的右邊,也就是要保證:y= wTx + b>=+1。對於任何一個負樣本yi=-1,它都要處於H2的左邊,也就是要保證:y = wTx + b<=-1。這兩個約束,其實可以合併成同一個式子:yi (wTxi + b)>=1。
所以我們的問題就等價轉化成了:

在這裏插入圖片描述

OK,到此爲止,算是瞭解到了SVM的第一層,對於那些只關心怎麼用SVM的朋友便已足夠,不必再更進一層深究其更深的原理。

2. 對偶問題

在約束最優化問題中,常常利用拉格朗日對偶性(Lagrange duality)將原始問題轉爲對偶問題,通過解決對偶問題而得到原始問題的解。

對偶問題有非常良好的性質,以下列舉幾個:

1.對偶問題的對偶是原問題;
2.無論原始問題是否是凸的,對偶問題都是凸優化問題;
3.對偶問題可以給出原始問題一個下界;
4.當滿足一定條件時,原始問題與對偶問題的解是完全等價的;

在這裏插入圖片描述

  因爲現在的目標函數是二次的,約束條件是線性的,所以它是一個凸二次規劃問題。這個問題可以用現成的QP (Quadratic Programming) 優化包進行求解。一言以蔽之:在一定的約束條件下,目標最優,損失最小。

另一方面可以通過拉格朗日對偶性變換到對偶變量的優化問題,即通過求解與原問題等價的對偶問題(dual problem)得到原始問題的最優解,這就是線性可分條件下支持向量機的對偶算法,這樣做的優點在於:

一,對偶問題往往更容易求解;

二,可以自然的引入核函數,進而推廣到非線性分類問題。

首先先對原問題構建拉格朗日函數,爲此需要引進拉格朗日乘子(Lagrange multiplier)αi0\alpha_i \ge 0, i=1,2,…n。則拉格朗日函數爲:
在這裏插入圖片描述
在這裏插入圖片描述
至此可以進一步轉化間隔最大化爲上述等價問題,然後求奇對偶問題,由於弱對偶性,所以使用salter和kkt。

salter(Slater定理保證p= d)**:
在這裏插入圖片描述
簡單說r就是,存在x,使不等式 約束中的“小於等於號”要嚴格取到“小於號”。

KKT(保證p = d*的解爲最優解)*:
在這裏插入圖片描述

3. 軟間隔

Hinge Loss 是機器學習領域中的一種損失函數,可用於“最大間隔(max-margin)”分類,其最著名的應用是作爲SVM的目標函數。

在二分類情況下(有多種變形,平滑),公式如下:

L(y) = max(0 , 1 – t⋅y)

其中,y是預測值(-1到1之間),t爲目標值(1或 -1)。其含義爲,y的值在 -1到1之間即可,並不鼓勵 |y|>1,即讓某個樣本能夠正確分類就可以了,不鼓勵分類器過度自信,當樣本與分割線的距離超過1時並不會有任何獎勵。目的在於使分類器更專注於整體的分類誤差
面對一些非線性可分的情況下,允許SVM在少量樣本上出錯,即將之前的硬間隔最大化條件放寬一點,爲此引入“軟間隔(soft margin)”的概念(即允許少量樣本不滿足約束)。爲了使不滿足上述條件的樣本點儘可能少,我們需要在優化的目標函數裏面新增一個對這些點的懲罰項。最常用的是hinge損失:
在這裏插入圖片描述
可見在SVM軟間隔中,參數t爲1,z=yi(XiTW+b)y_{i}(X^T_{i}W+b),而之前的約束條件已知yi(XiTW+b)1y_{i}(X^T_{i}W+b)\ge1,也就是說正常劃分成功的z都是大於等於1的,代入此hinge loss即當樣本被正確劃分時,損失函數爲0,當被錯誤分類時,損失值爲1-z,錯分類越差則損失值越大。

此時目標函數由:
在這裏插入圖片描述
在這裏插入圖片描述
轉化爲:
在這裏插入圖片描述

其中C > 0稱爲懲罰參數,C越小時對誤分類懲罰越小,越大時對誤分類懲罰越大,當C取正無窮時就變成了硬間隔優化(即要求所有的樣本都被正確劃分)。實際應用時我們要合理選取C,C越小越容易欠擬合,C越大越容易過擬合。(此處和正則化原理類似)

然後對目標函數構造拉格朗日函數,對偶函數,slater,kkt求解。

4. 非線性分類

硬間隔和軟間隔都是解決線性分類問題,面對非線性問題,SVM採用核技巧將低維數據放到高維處理,讓問題在高維中變得線性可分。

SVM與其他機器學習算法對比(圖):

在這裏插入圖片描述

5. 總結

任何算法都有其優缺點,支持向量機也不例外。

支持向量機的優點是:

1.由於SVM是一個凸優化問題,所以求得的解一定是全局最優而不是局部最優。
2.不僅適用於線性線性問題還適用於非線性問題(用核技巧)。
3.擁有高維樣本空間的數據也能用SVM,這是因爲數據集的複雜度只取決於支持向量而不是數據集的維度,這在某種意義上避免了“維數災難”。
4.理論基礎比較完善(例如神經網絡就更像一個黑盒子)。

支持向量機的缺點是:

1.二次規劃問題求解將涉及m階矩陣的計算(m爲樣本的個數), 因此SVM不適用於超大數據集。(SMO算法可以緩解這個問題)
2.只適用於二分類問題。(SVM的推廣SVR也適用於迴歸問題;可以通過多個SVM的組合來解決多分類問題)

svm-知乎
svm拉格朗日對偶問題-知乎
拉格朗日對偶性

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