SVM(支持向量機)—— 原理
代碼請移步:SVM-SMO —— 代碼
線性可分
首先對於線性可分的數據必然存在一個分離超平面 能夠把數據完全正確的分開,我們的目標就是要求該分離超平面的形式。前面的感知器通過最小化分錯的點到超平面的距離
為所有被分離超平面 錯誤分類的點的集合。上式中個人感覺因為上面的式子不好算所以用了下面的式子來代替,然後用迭代的方法更新 ,但這時得到的解不是唯一的,有無窮多個,線性可分的SVM用間隔最大化來求解分離超平面,相當於在原始感知器的基礎上加了一個間隔最大化的條件,使解是唯一的
對於超平面 樣本點 的函數間隔為
但對於函數間隔來說,當 等比例變化 時表示的該超平面不變,但函數間隔 變為原來的 倍,故不能直接用函數間隔來表示
現有間隔表示幾何上點 到超平面 的距離
相當於在函數間隔上對超平面加了一個約束 。
由此SVM表示為了最大化樣本點中最小的幾何間隔
由於當 成比例的變化 時函數距離 也成比例變化,但該超平面 不變,幾何間隔 也不變,故此時的函數間隔 可取任意值,現取 ,也就是說樣本點到超平面的最小函數距離設為 ,故此時的優化問題變為 該優化問題等價於
這樣就消去了上面的最小化間隔形式中的 ,轉變成了一個單純的二次優化問題,該優化問題存在不等式約束故需要用KKT條件,現插播一下KKT條件
KKT條件 —— 鬆弛變數法
KKT條件使用鬆弛變數法推出來的,現有優化問題
用鬆弛變數使不等式約束轉變為等式約束
然後根據拉格朗日乘子法得到
然後求偏導 得到 ,現在可分為兩種情況
- :此時不等式約束 不起作用
- :此時不等式約束退化為等式約束
所以等價於 或者 也就消去了鬆弛變數 故此時有
並且對應的KKT條件為
對偶
由上一節可以得到
並且對應的KKT條件為
故現在優化問題變為一個極小極大問題
其與一個極大極小問題對應
由上面的KKT條件可以消去裡面的
故現在優化問題變為
支持向量
關於支持向量的圖示網上有很多這裡就不再畫一個了,只說下在優化的角度支持向量的解釋
支持向量是那些在分割帶邊緣的點,也即滿足最小化間隔的點,在上述的優化問題中就是滿足 的點,支持向量有一個性質,SVM的解只與支持向量有關,而非支持向量的變化不改變SVM求解的超平面,再由前面的KKT條件的 得到,支持向量需滿足 ,這時改點構成的約束 起作用,並且該約束退化為等式約束 也同樣表示了在分隔帶邊緣的點,而其他點滿足約束 而 ,此時對應的約束失效,同樣表示為非支持變數的變化不影響最終優化的解
線性可分SVM學習機
解上面的對偶優化問題可以得到最優的 ,要得到最終的學習機的形式需要得到該超平面,由上面可以得到 ,想要得到具體的學習機的形式還需要知道 的值,這裡用的是支持向量的性質,由上面得到支持向量 滿足等式 得到
則分離超平面為
並且對應的決策函數為
可以看到不管是對偶優化,還是分割平面和最終的決策函數都只與樣本的 的內積有關
線性不可分 與 軟間隔
SVM為了應對線性不可分的情況採取了一種軟間隔策略,首先看下SVM如何看待線性不可分,其把線性不可分的數據看成了在線性可分基礎上的一些少量離群點,線性可分的形式在最小間隔下所有的點需要滿足 ,由於有少量離群點的存在,該間隔用鬆弛變數法成了一個軟間隔的形式