本文參考整理了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ā)四章,前三章的地址如下:
- 一、線性SVM
- 二、SVM的對偶問題
- 三、Kernel SVM
引入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類:
- free SV:0 < αn < C,ξn = 0,可以用來確定b,可以算出yn(W’Zn+b)=1,意味著點(Xs,ys)在胖胖的邊界上,在上圖中用□代表。
- non SV:αn = 0,ξn = 0,意味著沒有犯錯,大部分可能落在胖胖的邊界的正確一側(cè)的外面,極少數(shù)可能剛剛好落在胖胖的邊界上,在上圖中它們就是不用□或者△圈出的點。
- 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)注。