機器學習技法--Soft-Margin SVM

本文參考整理了Coursera上由NTU的林軒田講授的《機器學習技法》課程的第四章的內(nèi)容,主要介紹了Soft-Margin SVM和它的對偶問題的基本推導過程,主要介紹了Soft-Margin引入的動機、dual problem、αn的物理意義(包括bounded SV、free SV、non SV)及SVM中模型和參數(shù)如何選擇等內(nèi)容,文中的圖片都是截取自在線課程的講義。
歡迎到我的博客跟蹤最新的內(nèi)容變化。
如果有任何錯誤或者建議,歡迎指出,感激不盡!
--

本系列文章已發(fā)四章,前三章的地址如下:


引入Soft Margin的動機

利用上一章所講的Kernel,我們可以利用很多復雜的模型,比如Gaussian Kernel允許我們進行無限多維度的特征轉(zhuǎn)換,雖然有Large Margin的控制來減少VC維度,但還是可能Overfitting。產(chǎn)生過擬合的原因,一方面是因為我們的模型實在太powerful,另一方面與我們堅持要求分隔界限必須完美劃分OO和XX的Hard Margin要求也密不可分,如果我們能夠放松要求,允許一些點被劃分錯誤,也可能會少fit一些Noise,減少一些Overfitting的可能。

Give Up On Some Examples

在《機器學習基石》中,我們學到的第一個模型是Pocket,它的思想是當沒有辦法完美分開OO和XX時,我們找一條犯錯誤最少的線就好。

再看Hard-Margin SVM的要求,它的要求更加苛刻,除了要全劃分對,還要選W最短的,即

類似的,我們將兩者相結(jié)合

系數(shù)C用來衡量Large-Margin和犯錯誤之間的相對重要性。

該問題就是我們的新問題,即Soft-Margin SVM。

化簡Soft Margin SVM

將正確分類的點的要求和錯誤分類的點的要求寫成一個式子,如下

注意這里有個問題,這里的運算包含一個[[]]布爾操作,它不是線性約束,所以問題也不再是QP問題,也不再能用之前所推導的對偶問題、Kernel Trick等技法。

而且,這里也沒辦法區(qū)分錯誤的大小,到底錯誤點的偏離程度有多大。

下面用一個新式子來表達這種帶有錯誤衡量的Soft Margin SVM問題,而且該問題還是一個QP的形式。

我們用ξn來代表(Xn,yn)離正確分類的yn一側(cè)的胖胖的邊界線的錯誤偏離程度。即如果是正確的點,應該滿足yn(W’Zn+b)>=1,且左側(cè)的值越大,則點離線W’Zn+b=0越遠,最近的點,即margin上的點,滿足yn(W’Zn+b)=1;而錯誤的進入了軟性的margin內(nèi),甚至到達反向的對側(cè)的點,yn(W’Zn+b)肯定都嚴格小于1,且越小偏離越遠,我們用一個ξn來衡量這種偏離度,即使得yn(W’Zn+b)>=1-ξn一直成立,同時要求ξn>=0盡可能小,這樣對于正確的點,本來就大于1,ξn自然為0;而錯誤的點則需要1-正數(shù)ξ來糾正偏離,ξn就衡量了點犯錯誤的大小程度。我們之前的式子,用犯錯的點的總個數(shù)來衡量錯誤,現(xiàn)在的式子用每個點的犯錯程度的總和來衡量,而且形式也是一個二次規(guī)劃QP的形式,新的式子如下:

參數(shù)C:large margin和margin violation的trade-off

  • C很大:margin-violation的懲罰很大,盡可能少犯錯誤
  • C很小:margin大一點,很多點犯錯沒什么大關(guān)系,因為懲罰很小

該QP問題有d+1+N個變量,其中d+1是之前的W和b,增加的N個是記錄每個點的犯錯程度的ξn;有2N個約束,增加的N個約束是ξn>=0。

下一步,我們將仿照之前推導Dual SVM的方法,重新推導Soft Margin SVM的對偶問題,并嘗試利用kernel trick移除對d~的依賴。

Soft Margin SVM的對偶問題

原始問題:


原來變量的約束還是用αn來代表其lagrange multipliers,我們用βn來代表新增加的變量約束ξn>=0的lagrange multipliers,得到Lagrange Function如下:

其對應的Lagrange Dual問題如下:

代入Lagrange Function,如下

對變量ξn偏微分,

所以,我們可以把βn換成C-αn,再滿足條件βn>=0,則有αn<=C,加上原來的條件αn>=0,則得到0<=αn<=C,這樣就完全不用考慮β了。

用C-αn消去β后,化簡后如下

發(fā)現(xiàn),所有的ξn也被消掉了,就像之前在Hard-Margin SVM Dual的問題中,把b消去一樣。

式子變簡單了,如下

發(fā)現(xiàn)這個式子和之前Hard Margin SVM的Lagrange Dual基本一樣,只是多了αn<=C的條件,接下來按照之前的步驟化簡,對b微分,消去b,對W微分,用αn對ynZn的線性表示替換W,變成只有一個變量α的最優(yōu)化問題,比較簡單,請參考前面推導Hard Margin SVM Dual的過程。

最終會得到Soft Margin SVM Dual的標準形式。

Standard Soft-Margin SVM Dual

唯一的差別就是增加了條件αn<=C和隱式的βn=C-αn的條件。

這是另外一個QP問題,有N個變量,2N+1個條件,它也是個convex的問題。

Kernel Soft-Margin SVM

基本過程

基本和Hard-Margin一樣,但是比Hard-Margin更加靈活,因為可以控制參數(shù)C。
而且Soft-Margin不論是Primal還是Dual總是有解,而不像Hard-Margin的問題需要數(shù)據(jù)linear-separable,因此在實踐中Soft-Margin經(jīng)常使用。

如何算b?

對于Hard-Margin SVM,我們利用互補松弛條件和一個SV就可以算出b

對于Soft-Margin SVM,也有類似的complementary slackness條件

所以,要解出唯一的b,需要找一個自由支撐向量(Xs,ys),即0<αs<C,則

如果沒有free SV(極少數(shù)的情況下),則b只能被一堆不等式所表示,只要不等式范圍內(nèi)的b滿足所有的KKT條件,則這些b都是可以的。

實際的Soft-Margin Gaussian SVM

灰色的部分代表margin內(nèi)部,越大的C,對錯誤的懲罰就越大,就盡可能少犯錯,就越可能fit Noise,對Noise的容忍度就越小,就越可能Overfit。

注意:如果參數(shù)調(diào)節(jié)不好,就算是Soft-Margin SVM還是有可能產(chǎn)生Overfit的!

因此,對于Soft-Margin Gaussian SVM,我們需要仔細地選擇參數(shù)(γ,C)。

αn的物理含義

哈利波特條件(Complementary Slackness):

之所以叫哈利波特條件,是因為左邊的兩個括號,如果一個不為0,另一個一定為0,就像哈利波特和伏地魔兩者至少必有一個死亡。

可以把點分成3類:

  1. free SV:0 < αn < C,ξn = 0,可以用來確定b,可以算出yn(W’Zn+b)=1,意味著點(Xs,ys)在胖胖的邊界上,在上圖中用□代表。
  2. non SV:αn = 0,ξn = 0,意味著沒有犯錯,大部分可能落在胖胖的邊界的正確一側(cè)的外面,極少數(shù)可能剛剛好落在胖胖的邊界上,在上圖中它們就是不用□或者△圈出的點。
  3. bounded SV:αn = C,則ξn = 1 - y(W’Zn+b),即ξn = violation amount,在上圖中用△代表。極少數(shù)的情形,點剛剛好在邊界上,大部分來說,只要看到αn=C,就意味著它違反了胖胖的邊界。

注意:violation有兩種,一種是小小的違反,只是進入margin而沒有跨過中線,雖然有小小的違反,但是沒有造成我們的分類錯誤;還有一種是大大的違反,已經(jīng)跨過中線,造成分類錯誤。

因此,利用αn可以幫助我們進行數(shù)據(jù)的分析。

bounded SV是唯一可能造成Ein錯誤的點,如果ξn>=1,意味著這種violation造成了0/1分類錯誤,如果0<=ξn<1,就不會造成0/1分類錯誤。因此,Ein的可能范圍在0.0000<=Ein(gsvm)<=#(bounded SVs)/N

實踐需要:模型選擇

上圖9個全部都是Soft-Margin Gaussian SVM,橫軸是使用了不同的參數(shù)C,縱軸是使用了不同的參數(shù)γ。

如何選擇哪組參數(shù)對應的模型最好呢?

之前《機器學習基石》課程告訴我們最簡單好用的工具就是Validation

V折交叉驗證

利用Cross Validation的值選擇

我們能不能做最優(yōu)化?

不能。因為對于每個(C,γ),Ecv(C,γ)不是(C,γ)的平滑函數(shù),很難最優(yōu)化,通常只能送進去幾個不同的(C,γ)值,看看哪一個最好。

我么可以用V-fold cross Validation在幾個不同的(C,γ)上選擇最合適的model。

對于SVM來說,Cross Validation是一個非常常用的方式來選擇適當?shù)膮?shù)。

Leave-One-Out CV

V-fold的極限:E(loocv) = E(cv) with N folds

LOO在SVM有一個有趣的結(jié)果:

證明:對于點(Xn,yn),如果剛好最優(yōu)αn=0,即說明該點不是SV,則對于去掉點(Xn,yn)后的數(shù)據(jù)集,(α1,α2,α3....αn-1,αn+1,...,αN)這一組α仍然是去掉點后的數(shù)據(jù)集的最優(yōu)解,假設不是最優(yōu)解,存在更好的解,把αn=0加回去,則構(gòu)造了最開始數(shù)據(jù)集的一個更優(yōu)解,矛盾。

則對SVM來說,g-=g(當去掉一個non-SV點后)

而e(SV) <= 1

則不難得到以上bound,即E(loocv) <= #SV/N

所以,我們可以近似用這個做模型的選擇

利用#SV做模型的選擇

數(shù)字是SV的數(shù)量。

注意:#SV只是一個上限,并不代表真正的loocv。

常用#SV來排除一些危險的模型,再做cross validation選擇一個最適合的參數(shù)。即#SV常用來做安全檢查(safety-check),如果計算Ecv太過于耗時。

Mind Map Summary


我們從最開始的Linear Hard-Margin SVM開始推導,研究了它的Dual Problem,并利用Kernel Trick簡化了transform + inner product的運算,這一講又討論了在實踐中最常用的Soft-Margin SVM的問題,但這些都是在做最基本的binary classification,下一講我們將把學過的SVM模型應用到更多的問題上,比如soft binary classification,即logistic regression問題,敬請關(guān)注。

如果您對這一系列文章感興趣,歡迎訂閱我的專題或者關(guān)注我以獲得最新的更新信息!

本文首發(fā)于我的博客,如果您想提前看到更多的內(nèi)容或者懶于尋找之前的章節(jié),可以直接來我的博客閱讀長文版,感謝您的鼓勵支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容