機器學習小結:SVM


  第一次接觸SVM(支持向量機)還是四年前的事情了,那時用它做手寫體數字識別,參考了一些書和文獻,照着人家的步驟用Matlab敲出了PCA+SVM的代碼,識別率一般,90都沒上,不好意思跟人打招呼。最囧的是,后來參加一個面試,人家問我神馬是支持向量,我都答不上來。上了研究生,在各種模式識別和機器學習相關的課上,反復學習了這一經典算法,每次都有新的體會。借此機會做一個總結。

  SVM是一種線性分類器。它針對的也是簡單的有監督學習問題:給定m個樣本(x(i), y(i)),y(i)=+/-1,確定一個線性分類面。這個問題可以用多種方法解決:感知器、Fisher線性判別分析、Logistic回歸等。不同算法的實現和遵循的准則各不相同:感知器算法采用迭代的方法,對樣本進行序貫處理,根據新來的樣本調整線性分類面函數的系數,所有訓練樣本被正確划分即完成迭代;Fisher線性判別分析方法遵循的是類內離散度小、類間離散度大的准則,得到線性分類器;Logistic回歸將y|x看作服從Bernoulli分布、取值為0或1的離散隨機變量,通過最大化后驗概率P(y|x)的辦法來得到線性分類器。SVM遵循的准則是類間間隔(margin)最大,根據這個准則得到的分類面有以下的特點:屬於不同類的、在分類面垂直方向投影距離最近的樣本點的距離最小。設這個分類面的方程為:w'x+b=0,gamma為跟margin成正比的一個量,稱為函數間隔(function margin),則我們優化的目標為max gamma。約束條件為: (1) y(i)[w'x(i)+b]>=gamma;(2) w模的歸一化,即||w||=1。將約束條件改為:y(i)[w'/gamma*x(i)+b]>=1,用w代替w/gamma,則SVM的求解變為二次規划(QP)問題:min ||w|| ; s.t y(i)[w'x(i)+b]>=1。matlab里自帶了求解QP問題的quadprog的命令可以求解這個問題。但一般工程實現中不這么干,一方面因為它的實現效率低,另外一方面,這種形式不利於將SVM推廣到高維空間,即Kernel SVM。一般工程實現往往選擇解決它的對偶問題(Dual Problem),如果一個優化問題滿足KKT條件,那么(一般把它叫做原問題Primal Problem)就可以轉化為求解它的對偶問題(Dual Problem)。對於上述線性SVM的原問題,它的對偶問題為:Max W(alpha) s.t alpha(i)>=0; y(1)*alpha(1)+y(2)*alpha(2).....+y(m)*alpha(m)=0。得到alpha(i)后,就可以通過w=alpha(1)*y(1)*x(1)+alpha(2)*y(2)*x(2).....+alpha(m)*y(m)*x(m)得到w。由於alpha(i)>=0,alpha(i)>0對應的x(i),滿足y(i)[w'x(i)+b]=1,對w的產生做出了“貢獻”,為支持向量;對於alpha(i)=0,y(i)[w'x(i)+b]>1,為非支持向量。

 

  上面介紹的SVM為樣本線性可分前提下的線性SVM,在實際中的樣本往往在線性歐式空間內不可分,解決這個問題的辦法有兩個:(1)將樣本映射到高維空間,即Kernel SVM;(2)采用軟間隔(Soft Margin)的SVM。在線性SVM的對偶問題中的目標函數和決策函數表達式中,都會出現內積項<x(i), x(j)>,Kernel SVM的主要思想是:用一個核函數K[x(i), x(j)]=<f[x(i)], f[x(j)]>代替<x(i), x(j)>,f[x(i)]為x(i)向高維空間的映射函數,由於對偶問題的求解中x(i), x(j)之間的所有運算都為內積運算,所以沒有必要顯示地求出f[x(i)],只要給出K[x(i), x(j)]即可,用得最多的是RBF和多項式核。軟間隔SVM的基本思想是對於無法線性可分的情況,引入懲罰項sigma(i)和懲罰系數C。min (||w||^2)/2+C*(sigma(1)+sigma(2)+......sigma(m)); s.t y(i)[w'x(i)+b]>=1-sigma(i)。y(i)[w'x(i)+b]>=1-sigma(i)意味着可以容忍一定錯分的情況;目標函數出現C*(sigma(1)+sigma(2)+......sigma(m))一項表明錯分會帶來懲罰,這樣就避免了錯分的樣本過多,分類性能惡化。求解SVM對偶問題一般采用SMO方法,參考鏈接給出了具體的實現。

  參考鏈接:http://v.163.com/movie/2008/1/C/6/M6SGF6VB4_M6SGJVMC6.html

       http://v.163.com/movie/2008/1/9/3/M6SGF6VB4_M6SGJVA93.html

       http://blog.csdn.net/pennyliang/article/details/7103953


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM