支持向量機(SVM)算法推導

Author: DivinerShi

線性迴歸可以簡單理解爲去找到一條線,使得這條線可以區分不同類的數據。那麼SVM就是去找到所有可行的線中,最優的那條。什麼叫最優?就是距離兩類數據都最遠的那條分割線。

優點:
可用於線性和非線性分類,也可以用於迴歸
低泛化誤差,容易解釋
計算複雜度較低
缺點:
對參數和核函數的選擇比較敏感
原始SVM只擅長處理二分類問題。

線性可分支持向量機

給定線性可分訓練數據集,通過間隔最大化或者等價得求解相應的凸二次規劃問題學習得到的分離超平面爲
這裏寫圖片描述
以及相應的分類決策函數
這裏寫圖片描述
稱爲線性可分支持向量機。

假設超平面爲wx+b=0,那麼|wx+b|可以用於表示點x距離超平面的距離,而我們要做就是最大化|wx+b|。爲了去掉絕對值,可以用y(wx+b)替代,因爲y和wx+b是同正負號的,所以y(wx+b)一定是正值。因此可以利用y(wx+b)來表示分類的正確性和確信度,這就是函數間隔

但是我們知道,等比例的改變函數的係數,函數是不變的,但是函數的輸出值變了。如將函數間隔中的w,b等比例的變成2w,2b那麼函數間隔將擴大兩倍。所以我們需要對函數間隔加一定的約束,這裏我們對函數係數統一除以w的L2模,||W||。那麼我們就可以得到幾何間隔
這裏寫圖片描述
因爲我們要求的是係數w和b,因爲最優解是唯一的,唯一要確定的就是w和b的比例,所以當||w||確定後,w和b就可以確定了。因此我們可以將||w||定爲1,即||w||=1.
那麼就可以唯一確定w和b了。

間隔最大化

現在有了幾何間隔後,我們要做得就是去使得間隔能夠最大化。支持向量機的基本思想就是求解正確劃分訓練集並且幾何間隔最大的分離超平面。線性可分的超平面可能有無數個,但是幾何間隔最大的分離超平面是唯一的。
所以我們要做得就是最大化幾何間隔,而且所有的樣本點到最優超平面的距離都需大於幾何間隔。因此我們可以得到如下的約束優化函數:
這裏寫圖片描述
然後可以進一步改寫爲
這裏寫圖片描述
上面我們也提到過,可以將函數間隔直接定爲一個常數,這裏選擇爲1,這樣w和b就是唯一確定的值了。帶入上式中,得到這裏寫圖片描述。爲求解方便,將最大化這裏寫圖片描述轉化爲最小化這裏寫圖片描述,所以我們可以得到如下最優化問題
這裏寫圖片描述
這是一個凸二次規劃問題。直接求解就可以。但是爲了更容易的求解,並且能自然的引入核函數,所以這裏選擇使用對偶算法來進行求解。

對偶:

定義拉格朗日函數:
這裏寫圖片描述
原始問題爲:這裏寫圖片描述
因爲先求α,需要去固定w,b兩個參數,難以求解,所以利用對偶來解,轉化爲這裏寫圖片描述
1.先固定α,求解w,b,分別對w,b求偏導數並令其等於0;
2.求α的極大;

軟間隔最大化

但是真實數據中,其實很難做到能完全線性可分的數據。所以這裏假設所有的數據都存在一定的偏移。爲了解決這個問題,對每個樣本點這裏寫圖片描述引入一個鬆弛變量這裏寫圖片描述,使得函數間隔加上鬆弛變量大於等於1,即約束條件變爲這裏寫圖片描述,目標函數由原來的這裏寫圖片描述變成這裏寫圖片描述
所以現在的線性支持向量機的學習問題變成如下凸二次規劃問題:
這裏寫圖片描述

非線性支持向量機與核函數

什麼是核函數?
最開始的支持向量只能支持線性可分數據,對於那些非線性的數據集無能爲力。如果可以將非線性的數據通過一個函數映射到線性可分的空間,映射後的特徵空間叫希爾伯特空間。
核函數的作用就是在不知道該函數是什麼的情況下來進行映射;
設X輸入空間,H爲希爾伯特空間,如果存在一個從X到H的映射
這裏寫圖片描述
使得對所有來自X的x,z,函數K(x,z)滿足條件
這裏寫圖片描述
則稱K(x,z)爲核函數,這裏寫圖片描述爲映射函數,式中這裏寫圖片描述這裏寫圖片描述這裏寫圖片描述的內積。
其實說白了就是找不到確定映射函數,然後找個可以做非線性映射的函數替代下,並且這個函數只需要去計算它的內積就可以了。
我們之前的解是可以解出來的,然後解裏面是存在一個內積的,核技巧就是把這個內積改成核函數的內積,在外面套了一層函數,這就把原始數據做了一個映射了。
常見的一些核函數也就是
線性核(就是和之前的一樣,線性的)
高斯核(用高斯函數做核函數),也叫徑向基核
等等
整體的流程就是這樣還有一點要注意的就是,在求解參數α的時候,因爲參數很多,一般會用SMO算法啓發式的去求解這些α的值。

參考

統計學習方法-李航

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