SVM支持向量機及SMO算法總結

之所以寫這篇文章,主要是因爲SVM和SMO的算法看了很多遍纔看懂,現在網絡上也有很多相關的資料,這篇文章主要是記錄自己的學習過程,集中在後面的證明求解過程。初學者建議先看底下的參考資料,把相關概念弄清楚了之後,如果在看論文過程中有疑惑的,可以過來看沒看有沒有參考的地方。

首先對於SVM(support vector machine)的理解爲:尋找一個超分類平面,把不同分類的數據分隔開,且兩邊的最小間距最大。

這裏寫圖片描述

函數間距與幾何間距:

在Andrew Ng的材料中,涉及到兩個間距的概念:函數間距與幾何間距。

函數間距的定義:γ^(i)=y(i)(wTx+b) , 當wb 成比例變化,函數間距也成比例變化

幾何間距的定義:γ(i)=y(i)(wTx+b)||w|| , 當wb 成比例變化,幾何間距不變

最大化間距

SVM目標是最大化最小几何間距,故有:

最小几何間距: γ=mini=1,..,mγ(i)

maxγ,w,b     γ

s.t.        y(i)(wTx+b)γ,i=1,...,m

               ||w||=1

第一個限制條件保證所有例子的函數間距大於我們的最小几何間距γ||w||=1 保證了函數間距和幾何間距等價。

由於該式子比較難求解,故我們可以考慮轉換一下上式爲:

maxγ,w,b    γ^||w||

s.t.        y(i)(wTx+b)γ^,i=1,...,m

考慮到函數間距與wb 成比例變化,故成比例變化wb 不影響該最大式子,故可以考慮令γ^=1

原式可變爲:

maxw,b     1||w||

s.t.        y(i)(wTx+b)1,i=1,...,m

最後該式子等價爲:

minw,b     12||w||2

s.t.        y(i)(wTx+b)1,i=1,...,m

拉格朗日對偶

上面已經列出了我們需要求解wb 的式子,但是由於涉及到限制條件,很難直接求解。這時候就需要我們的朗格朗日乘子和朗格朗日對偶問題的知識了。

對於一般式子:

minw   f(w)

s.t.   gi(w)0,i=1,...,k

          hi(w)=0,i=1,...,k

L(w,α,β)=f(w)+i=1kαigi(w)+i=1lβihi(w) , 該式子稱爲拉格朗日函數

在滿足原式子的限制條件下有:maxα,β:α0L(w,α,β)=f(w)

又有以下對偶式子:

maxα,β:α0minwL(w,α,β)minwmaxα,β:α0L(w,α,β)=minwf(w)

當滿足一定條件下時, 我們有該等式成立。該條件稱爲KKT:

wiL(w,α,β)=0,i=1,...,n

βiL(w,α,β)=0,i=1,...,l

αigi(w)=0,i=1,...k

gi(w)0,i=1,...k

αi0,i=1,...k

在滿足以上KKT條件下,原來求f(w) 在限制條件下的最小值就可以等價轉換爲求maxα,β:α0minwL(w,α,β)

應用拉格朗日求解最小間隙最大值

構造朗格朗日函數:

L(w,b,α)=12||w||2+i=1mαi(1y(i)(wTx(i)+b))

根據KKT條件有:

wL=0

bL=0

得到以下結果:

w=i=1mαiy(i)x(i)

i=1mαiy(i)=0

以上結果回代入拉格朗日函數得到:

L(w,b,α)=i=1mαi12i,j=1my(i)y(j)αiαj(x(i))Tx(j)

故原式子可等價爲:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)>

s.t.      αi0,i=1,...m

             i=1mαiy(i)=0

<(x(i)),x(j)> 表示兩個向量的內積. 實際上,可以用核函數來表示兩個向量的相似度,這樣,我們的SVM模型就可以應用在一些非線性可分的問題上。

正則化及不可分情形討論

實際上的問題經常是,我們無法找到一個線性可分的超分類平面,這樣,我們之前的限制條件是無法被滿足的。那麼前面做的這麼多工作都只能應用於可分的情況嗎?

之前我們的限制條件是非常嚴格的y(i)(wTx+b)1 , 但是我們可以考慮加入一些鬆弛變量ζ 來打破這種情況,同時對於這種情況要加一些懲罰條件,故原先的式子可改寫成:

minw,b     12||w||2+Ci=1mζi

s.t.        y(i)(wTx+b)1ζi,i=1,...,m

               ζi0,i=1,...,m

還是構造拉格朗日函數:

L(w,b,α)=12||w||2+Ci=1mζi+i=1mαi(1ζiy(i)(wTx(i)+b))+i=1mri(ζi)

w , b , ζ 分別對L 偏導可以得到:

w=i=1mαiy(i)x(i)

b=i=1mαiy(i)=0

Cαiri=0,i=1,..,m

由於ri0 , αi0

故由Cαiri=0,i=1,..,m 可得0αiC,i=1,...,m

w , b 回代回去,原式子可以等價爲:

maxα    W(α)=i=1mαi12i,j=1my(i)y(j)αiαj<(x(i)),x(j)>

s.t.       0αiC,i=1,...m

             i=1mαiy(i)=0

且再次檢查KKT條件,有:

αi(1ζiy(i)(wTx(i)+b))=0

1ζiy(i)(wTx(i)+b)0

ri(ζi)=0

ζi0

ζi0

αi0

αi 進行討論(由KKT條件)有:

αi=0y(i)(wTx(i)+b)1

αi=Cy(i)(wTx(i)+b)1

0αiCy(i)(wTx(i)+b)=1

SMO優化

前面已經做了很多工作,現在目標函數已經有了. 接下來就是需要α 使得我們的目標函數取到最大值。參考資料中的SMO論文求目標函數的最小值:

minα  Ψ(α)=minα12i,j=1my(i)y(j)αiαjK(x(i),x(j))i=1mαi

s.t.       0αiC,i=1,...m

             i=1mαiy(i)=0

取出一對α1,α2 我們有α1y(1)+α2y(2)=k=i=3mαiy(i) 故有如下圖關係


這裏寫圖片描述

分兩種情況討論:y1,y2 不同號以及y1,y2 同號

其中對應的α2 的邊界爲:

  1. 同號情況:L=max(0,α2α1),H=min(C,C+α2α1)
  2. 異號: L=max(0,α2+α1C),H=min(C,α2+α1)

化簡目標函數,把α1,α2 提取出來:

s=y1y2,Kij=K(xi,xj)

Ψ(α)=12α12K11+12α22K22+sα1α2K12α1α2+y1α1v1+y2α2v2+Ψconst

其中有:

vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i (α1 表示舊的值)

則有α1+sα2=y1i=3mαiyi=α1+sα2=t

α1=tsα2 代入目標函數有:

Ψ(α)=12(tsα2)2K11+12α22K22+s(tsα2)α2K12(tα2)α2+y1(tsα2)v1+y2α2v2+Ψconst

目標函數對α2 求導並令其爲0:

α2Ψ(α)=α2(K11+K222K12)st(K11K12)y2(v1v2)+s1=0

t=α1+sα2,vi=j=3mαjyjKij=ui+by1α1K1iy2α2K2i 代入上式得:

α2(K11+K222K12)=α2(K11+K222K12)+y2(u1u2+y2y1)

目標函數對α2 進行二次求導有:

2α2Ψ(α)=η=K11+K222K12

  1. η>0 有:

    α2new=α2+y2(E1E2)η

    這裏寫圖片描述

    α1new=α1+s(α2α2new,clipped)

  2. η0 有, 此時易知α2 取到邊界時,目標函數最小:

    f1=y1(E1+b)α1K11sα2K12,

    f2=y2(E2+b)sα1K12α2K22,

    L1=α1+s(α2L)

    H1=α1+s(α2H)

    ΨL=L1f1+Lf2+12L12K11+12L2K22+sLL1K12

    ΨH=H1f1+Hf2+12H12K11+12H2K22+sHH1K12

    對比ΨL,ΨH , 取值較小的那個

  3. 每次更新完α 後都需要更新b值:

    α1 不在界上時:

    bnew=b1=E1+y1(α1newα1)K11+y2(α2new,clippedα2)K12+b

    α2 不在界上時:

    bnew=b2=E2+y1(α1newα1)K12+y2(α2new,clippedα2)K22+b

    當雙方都在界上時:

    b=b1+b22

推薦相關參考資料:

  1. Andrew Ng在網易公開課的課堂資料,其中part V涉及到SVM. http://cimg3.163.com/edu/open/ocw/jiqixuexikecheng.zip

  2. John Platt的SMO論文. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/smo-book.pdf

  3. JerryLead的博客. http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html#undefined

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