機器學習技法 筆記四 Soft-Margin Support Vector Machine

上面一章我們看完了kernel,通過合併轉換和內積兩個步驟來加速,這樣我們可以通過dual SVM來解決很多問題。

但是正如上一章最好說的,我們現在的要求都是基於在Z空間裏線性可分的,但是過度強求每個點都分正確,是有可能帶來overfit的,比如有noise的點。

今天,我們就要來解這樣一個問題。

其實,這樣的思想,我們在學習機器學習基石的時候,已經有過了,當時講PLA和pocket的時候,pocket的其實就是尋找錯誤最少的那條線。


如圖所示,對於pocket,我們就是找到錯誤數量最少的那條線,而對於以前的SVM,相對於今天的soft,其實就是hard-margin,要求嚴格的在Z空間線性可分,

爲了完成我們今天的母的,我們做一個combine,也就是說我們可以允許犯錯誤,但是犯錯誤也是會有代價的,就是會在以前的結果上增加數值,所以就形成了如圖的表達式,可以這樣想,以前要求很嚴格,要求全部都大於等於1,然後找到了對應的w,現在不要求都大於1了,條件變寬鬆了,我們可以找到更小的w,但是同時,錯誤會帶來代價,就是錯誤的個數會加在w上,所以不能錯太多。而參數C就是來調節這兩方面的重要程度。

這樣看上去,我們上面這個新的式子似乎挺不錯的。

but


我們仔細看這個式子,最右邊是一bool運算,y和sign(wz+b)不等就是1,相等就是0,所以下面這半邊的式子,在正確的時候,即y和sign(wz+b)相等的時候,就還是y(wz+b)>=1,否則是>=負無窮

我們可以看到就是這個bool運算不是一個線性運算,不滿足我們的二次規劃了,但是想想我們前幾天學習的,我們的dual和kernel都基於二次規劃的。同時這個式子還有另外一個需要推敲的地方,比如對於一個點,正確的分類是圈圈,但是我們的預測把它弄到XX了,但是同樣是XX,在去sign之前,肯定有個計算的power,即wz+b。顯然如果wz+b和邊界差得越遠,說明錯得越離譜,所以我們應該考慮的不僅僅是錯誤的次數,還有考慮錯誤的大小。

下面看一個新的式子,在上面的式子上進行改進的

引入了一個新的參數叫ξ,怎麼理解呢?=。=

我自己的理解

如果按照以前的hard-svm來看,我們的ξ對於所有的n都是0,那麼我們直接得到w,而後面那一堆就沒有了

但是這個條件比較嚴格,因爲爲了滿足這個嚴格的條件,我們可能會使得w會很大,但是如果我們可以付出一點錯誤的代價,比如y(wz+b)不>=1,而是像剛纔前面那個有點錯誤,而這個錯誤的大小就是ξ,我們也許允許有了一點錯誤,使得後面那一堆變大了,但是如果可以使得我們找到的margin更加寬,也就是w更小,那麼我們總的和還是更小了,所以說我們的思想其實就是允許一些錯誤,來換取更寬的margin,防止比如noise帶來的錯誤,但是在允許錯誤的同時,也會考慮錯誤的大小,我們更歡迎錯誤差距更小的錯誤,而不是更大的錯誤。等等剛纔看了一個

其實可以看到,那一個在margin中間的點,就是一個被放棄忽略的點,顯然如果我們要強行線性可分,也可以做到,那就是做一條很細的margin,但是考慮到放棄僅僅一個點,卻可以大量增大margin的寬度,而這個寬度就是這個被放棄的點到邊界的距離。

接下來,我們再利用以前處理hard問題的dual 來處理soft問題

再解決hard 的dual 問題的時候,我們引入了α這個參數,但是現在對於soft問題我們有了兩個條件,y(wz+b)>=1-ξ是一個ξ>=0是一個

前者我們依然可以用α來做,後者我們則需要引入β


根據我們在dual那一部分學習的內容,我們可以可以寫成這樣,

接着就是和以前求偏微分了

這個過程比較簡單,可以直接寫結論了



先對ξ求偏微分,可以得到上面的等式,自然可以得到α<C,然後把替換掉,發現可以直接消掉很大一部分,ξ直接被我們消掉了,真是666

那麼得到下面的式子

 

其實我們就可以發現,和hard問題比起來,其實就是在α上加上了C這個上界

只不過在回解b的時候,soft要麻煩一些,由以前講的伏地魔我們可以清楚知道,找一個SV,那麼α>0,那麼最初式子後面那一坨等於0

即1-ξ-y(wz+b)=0,但是這個式子裏面有ξ,那麼最簡單的方式就是令ξ=0,而由伏地魔,我們知道β(-ξ)=0,因爲ξ=0,那麼β>0

即C-α>0,α<C,所以就是找過一個α<C的SV,這樣的SV叫做free SV,如果一個SVM問題沒有free SV,那就用不等式夾=。=

下面我們看看用不同的C做出來的分類效果


C過大還是可能overfit

其實總結一下,soft問題中,點一般來說可以分成3類

1.0<α<C

就是free SV

2.α=C ,錯誤的點

3.α=0,普通的點

當然有一些特殊的點,但是由於實踐經驗太少,對於這些點沒有一個太清楚的認識,埋個坑=。=

至於模型選擇,還是可以cross validation =。=

同時可以通過support vector的數量,來控制錯誤的上界

一般來說 leave one  out 的錯誤 <= SVs/點的個數  

因爲不是sv的點不會影響margin,不會影響最佳解

當然這個只是一個上界,並不是準確的。

=。=


發佈了44 篇原創文章 · 獲贊 30 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章