SVM學習筆記


一、SVM概述

        支持向量機(support vector machine)是一系列的監督學習算法,能用於分類、回歸分析。原本的SVM是個二分類算法,通過引入“OVO”或者“OVR”可以擴展到多分類問題。其學習策略是使間隔最大化,也就是常說的基於結構風險最小化尋找最優的分割超平面。SVM學習問題可以表示為凸優化問題,也可以轉變為其對偶問題,使用SMO算法求解。線性SVM與LR有很多相似的地方,分類的准確性能也差不多,當數據量比較少時SVM可能會占據優勢,但是SVM不方便應用於軟分類(probability estimates)。SVM的另一優勢是靈活的核函數用於學習非線性問題,常用的核函數是高斯核(rbf)、多項式核(poly),也可以自己定義核函數。SVM的算法的復雜度是7325ea0226849021035c250bebb23461ccf847dc,所以當數據量比較大時,SVM的效率比較低。盡管有人說SVM在工業界大數據量應用中很少使用,但是其思想還是非常優秀的,在筆試、面試非常常見,需要認真學習。

二、SVM簡單推導

1. SVM原始問題

       原始的SVM問題是在線性可分的情況下,根據“最大化最小間距”的原則尋找最優的超平面w,b。抽象成如下數學優化問題。首先要知道點到超平面的距離公式,可以聯想以前學過的點到直線的距離,距離公式見下圖紅色框框。為了便於求解,同時縮放w,b使得最小的函數間隔為1(函數間隔、幾何間隔見參考鏈接1),最后將最大問題轉變為最小優化問題,整理出標准的SVM的數學形式。SVM原始的標准形式可以從正則化的角度看成是在Ein=0的L2正則化。基於SVM最大化邊界條件得到的模型有更好的范化能力。SVM標准問題是二次凸目標函數加線性的限制條件,可以使用現成的二次規划程式求解(QP)。

imageimage

2. SVM的對偶問題

         SVM原始問題使用QP求解,復雜度和樣本特征屬性成正比,在處理線性問題時尚可忍受。但是使用線性模型處理非線性問題是,需要將原始特征轉換到更高的維度才能使用線性模型,SVM也不例外。原始特征轉到線性可分的高維特征會導致特征維度爆炸式增長,例如原始特征維度為2,轉換后為5,如果原始空間是3維的,轉換后會得到19維的新空間,,使得QP求解變得很麻煩。SVM滿足KKT條件,通過拉格朗日算子將原始問題轉變為其等價的對偶問題。對偶問題會更容易求解,可以很自然的引入核函數,進而將SVM推廣到非線性分類問題。求解對偶SVM問題首先分別令w,b的偏導為0,得到w,b和alpha之間的關系式,最后變成只含有alpha的優化問題,可以使用SMO算法求解alpha,最后根據之前的關系式得到w,b

imageimage

3 .SVM核函數

        文章開頭講過SVM的一大優勢是可以使用的kernel處理線性不可分的情況。回顧之前使用特征轉換的方式線性分類器處理非線性問題,將原始數據轉到高維空間,在高維空間進行分類的操作。這種方式的缺點是轉換后維度爆炸增長,效率太低。核函數處理線性不可分問題本質上也是轉換到可線性處理的高維空間,但是核函數的方式是“隱式”的。核函數直接在低緯空間進行向量內積的運算,不需要顯示地寫出映射到高維空間的結過,避免了高維空間的復雜計算。解決了之前的維度爆炸問題。常見的核函數有高斯核47ed3b4a33cd152093bab738cf2002fa69c54c21這個核函數號稱能將原始空間映射到無窮維度,調節gamma,gamma越小高次特征權重衰減越快,gamma越大,模型越復雜,越容易過擬合;多項式核59ec4d406b308d297b0e2e908f767564cd4e64ec,gama越大,模型越復雜。線性核是b8ce75ac275fbe7a9cc88f535e164ba2397d3a85,原始空間中的內積,就是在原始空間分類。除此之外還可以自己定義核函數。下右圖比較了使用SVM核函數、LR、決策樹分類的區別,后面兩個都是直線或者是直線的組合,說明SVM在非線性分類的優勢。

imageimage

4 .SVM松弛變量(軟邊界)

         基於最大邊界距離的SVM相比以前的線性分類器有更好的泛化能力,引入核函數能處理線性不可分的問題。但是這種“始終堅持線性可分的SVM”很容易受噪聲、異常點的影響,異常點的存在會使超平面發生變化,甚至造成原本線性可分的數據變得不在可分,模型變得復雜,嚴重的會造成過擬合,影響模型的泛化能力。為了處理這種情況,SVM在實際使用中會加入松弛變量,允許數據點在一定程度上偏離超平面。軟邊界SVM,松弛變量體現在懲罰系數C上,C越大,對錯誤點的懲罰越大,最大邊距越小,模型越復雜。帶有松弛變量的SVM,同樣有其對偶問題,並能使用核函數。通過對偶問題,可以看出,優化問題沒變,只是對alpha增加了一個上界C。這樣現在的SVM可以處理線性、非線性、並能容忍噪聲和outliers。

imageimage

5. 從L2正則化理解SVM

        SVM與LR有很多相似的地方,可以表示為L2正則化模型的形式。下左圖簡單的羅列了Soft SVM轉化為L2形式的過程。一種新的誤差測量函數hinge loss=max(1-ys,0)。標准L2形式中的lamda用C表示,lamda = 1/2C,C越大,lamda越小,正則化項越小。右邊那張圖是台大林的課件中的原圖,比較了zero_one,SCE,hingeloss之間的區別,hinge Loss是zero one的上界。除此之外kernel SVM可以看做是在轉換后Z空間的logReg,SVM確實和正則化的LR是非常近似的。實際中LR和線性SVM的性能也相近。

imageimage

6. SVR(support vector Regression)

       SVR是基於epsilon-insensitive error 損失函數的回歸模型,准確的說是一種Tube Regression。在Tube之內不算錯誤,在Tube之外根據距離Tube的遠近計算錯誤。相比基於平方錯誤的一般回歸模型,Tube在很大范圍與一般回歸模型相似,而且Tube模型受異常樣本的影響更小。L2 正則化的Tube Regression模型是一種稀疏的回歸模型,模型參數w有很多為0。模仿SVM能將L2正則化的Tube Regression寫成SVM的形式,稱為SVR。SVR使用二次規划求解(QP),也可以模仿SVM引入Lagrange Multipliers寫成SVM的對偶形式求解。參數C調節Regularization 的程度,C越大,相當於正則化系數lamda越小。參數epsilon表示Tube的寬度。

image_thumb3     image_thumb10

image_thumb19        image_thumb18

三、凸二次規划和SMO算法

1. 二次規划

        原始SVM能帶入QP問題求解,對偶問題使用特殊的QP問題求解。fcfaaf51f3deb48f6c8a26b9f01f3a292cf578f2百科中有一段很短的話介紹二次規划,二次規划的標准形式如下,當G=0時,退化為線性規划;G為半正定時,稱為凸二次規划,至少存在一個向量滿足約束條件並且在可行域有下界,存在一個全局最小值;G為正定時,稱為嚴格的凸二次規划,全局最小值存在且唯一。SVM屬於半正定的情況。SVM的QP解法就是將SVM化為QP形式,帶入現成的QP求解包求解。

image

2. SMO算法

        QP問題求解二次規划,QP的復雜度與樣本的特征維度有關。在數據量比較大時,需要較大的計算能力支撐。SMO算法是Platt在1996年提出的,用於解決SVM的對偶問題,SVM的對偶問題是在一堆alpha中求目標函數的最小值。SMO算法的核心是將大的優化問題分解為多個小優化問題求解。為了求解那么多的alpha算子,SMO每次任意抽取兩個乘子alpha1和alpha2,固定其它的算子。不斷迭代求解出所有的alpha,最終求b。SMO算法沒有想象中的那么難,july的支持向量通俗導論中介紹得很詳細。

 

參考資料:

1.支持向量機系列:http://blog.pluskid.org/?page_id=683

2.支持向量機通俗導論pdf:http://pan.baidu.com/s/1eQrgiOU

3.台大林老師機器學習技法SVM六講:https://class.coursera.org/ntumltwo-002/lecture


免責聲明!

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



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