支撐矢量機SVM

1.線性SVM

     首先,回顧一下SVM問題的定義,如下:

      線性約束很煩,不方便優化,是否有一種方法可以將線性約束放到優化問題本身,這樣就可以無拘無束的優化,而不用考慮線性約束了。其對應的拉格朗日對偶形式爲:

         最終的優化結果保證離超平面遠的點的權重爲0。

 

        經過上面的對偶變化,下面來一步一步的簡化我們的原始問題,

          首先對b求偏導數,並且爲0:

          對w求偏導數:

也就是

          化簡原型

        將w帶入,並且去掉min,得到如下

        

       執行到這裏,現在目標函數只與有關,形式滿足QP,可以輕易得到,也就是得到w。但是在計算過程中,需要計算一箇中間矩陣Q,維度爲N*N,這個是主要計算開銷。上一講無需計算這個Q,因爲Q的形式十分簡單。

       計算出拉格朗日乘子就得到了w:


        而對於b的計算,KT條件幫助我們解決這個問題。如果原始問題和對偶問題都有最優解,且解相同,那麼會滿足KKT條件。這也是一個充分必要條件,其中很重要的一點是complementary slackness(互補鬆弛性),該條件有下面等式成立,

     由於(對偶條件),且(原始條件),那麼兩者有一個不爲0時,另外一個必然爲0。所以,只要找到一個,就可以利用這個性質計算出b,計算方

       理論來說,只需要一個點就可以,但是實際上由於計算有誤差,可能會計算所有的b,然後求平均。並且這些可以計算出b的點,就是支持向量,因爲他們滿足了原始問題中支撐向量的定義。但是,並不是所有的支撐向量,都有對應的。一般的,我們只用的向量稱爲支撐向量:

       或者,b這樣計算:



2.非線性SVM

        對於數據不可分的情況,使用核空間映射方法。即將線性不可分,映射到高維度空間,變爲線性可分。在線性不可分的情況下,支持向量機首先在低維空間中完成計算,然後通過核函數將輸入空間映射到高維特徵空間,最終在高維特徵空間中構造出最優分離超平面,從而把平面上本身不好分的非線性數據分開。

   


      本質上,不知道非線性核映射的具體形式。實際上需要的也只是兩個向量在覈映射後的內積值而已。常使用的核函數包括SVM核函數。同時,對於新樣本,也並未實際需要計算出w。如分類函數所示


3.帶鬆弛變量的SVM

            通常,高維數據本身是非線性結構的,而只是因爲數據有噪音。經常存在偏離正常位置很遠的數據點,我們稱之爲 outlier ,在我們原來的 SVM 模型裏,outlier 的存在有可能造成很大的影響,因爲超平面本身就是隻有少數幾個 support vector 組成的,如果這些 support vector 裏又存在 outlier 的話,其影響就很大了。

           鬆弛變量定義了一個常量,即對於每個支撐樣本,容許他距離超平面的距離在1的一定範圍內波動,即:


           C爲鬆弛係數或者懲罰因子,優化目標方程變爲:



    其中 C是一個參數,用於控制目標函數中(“尋找margin最大的超平面”和“保證數據點偏差量最小”)之間的權重。注意,其中 ξ 是需要優化的變量(之一),而C是一個事先確定好的常量。對應的拉格朗日對偶形式爲:

   

         即整個過程中,只不過計算的拉格朗日乘子alpha多了一個上限。
     (1)並非所有的樣本點都有一個鬆弛變量與其對應。實際上只有“離羣點”纔有,或者也可以這麼看,所有沒離羣的點鬆弛變量都等於0。
     (2)鬆弛變量的值實際上標示出了對應的點到底離羣有多遠,值越大,點就越遠。
     (3)懲罰因子C決定了你有多重視離羣點帶來的損失,顯然當所有離羣點的鬆弛變量的和一定時,你定的C越大,對目標函數的損失也越大,此時就暗示着你非常不願意放棄這些離羣點,即希望鬆弛變量越小越好。最極端的情況是你把C定爲無限大,這樣只要稍有一個點離羣,目標函數的值馬上變成無限大,馬上讓問題變成無解,這就退化成了硬間隔問題。
     (4)懲罰因子C不是一個變量,整個優化問題在解的時候,C是一個你必須事先指定的值。


         鬆弛變量也有變形形式。例如用來解決分類問題中樣本的“偏斜”問題。先來說說樣本的偏斜問題,也叫數據集偏斜(unbalanced),它指的是參與分類的兩個類別(也可以指多個類別)樣本數量差異很大。
         對於SVM。假設正樣本明顯多於負樣本,會導致分類超平面往負樣本偏移。對於此種情況,可以給負樣本較大的懲罰因子,對應正樣本小一點的懲罰因子。

          LibSvm即使用此種方式調節,實際過程中。libSVM就直接使用樣本數量的比來作爲正負樣本的懲罰因子。



          SVM方法,在經驗誤差和推廣誤差方面達到平衡。但是在大樣本上存在較大的計算代價,此時可以使用樣本抽樣來解決。對於多分類問題,則存在死區。





參考:

       1.機器學習基石--學習筆記02--Hard Dual SVM

       2.SVM學習(五):鬆弛變量與懲罰因子

       3.支持向量機通俗導論(理解SVM的三層境界)

       4.機器學習算法與Python實踐之(二)支持向量機(SVM)初

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