理解支持向量機(三)SMO算法

在支持向量機模型的求解中,我們用到了SMO算法來求解向量α。那麼什麼是SMO算法?在講SMO算法之前,我們需要先了解以下座標上升法。
1、座標上升法
假設有優化問題:

max┬α⁡〖W(α_1,α_2,…,α_m)〗
W是α向量的函數。利用座標上升法(當然,求目標函數的最小時即爲座標下降法)求解問題最優的過程如下:
這裏寫圖片描述
算法的思想爲:每次只考慮一個變量進行優化,將其他變量固定。這時整個函數可以看作只關於該變量的函數,可以對其直接求導計算。然後繼續求其他分變量的值,整個內循環下來就得到了α的一組值,若該組值滿足條件,即爲我們求的值,否則繼續迭代計算直至收斂。一個示意圖如下:
這裏寫圖片描述
如圖爲一個二次橢圓曲線的等高線,變量維數爲2,初始值在點(2,-2),可見其優化路徑爲折線式前進,因爲算法每次只在一個方向上對函數進行優化。

2、SMO算法
在講支持向量機求目標函數最優時,通過求解對偶問題轉換爲求解目標函數對α的極大值,如下:

這裏寫圖片描述
其中C爲懲罰係數,α爲要求的變量,每個分量α_i 對應一個樣本點(x_i,y_i),變量數爲樣本點容量N。
可以看到優化問題與上面提到的座標上升法很相似,參考上面講到的座標上升法,我們也可以選擇向量α的一個變量,將其他變量固定進行優化。但與上面不同的是,該處優化問題包含了約束條件,
變量必須滿足等式約束∑_(i=1)^N▒〖α_i y_i 〗=0,所以考慮每次選擇兩個變量進行優化。
不失一般性,將設選擇的兩個變量爲α_1,α_2,其他變量α_i (i=3,4,…,N)是固定的。
於是優化問題的子問題可以寫作:
這裏寫圖片描述
因爲我們選擇除α_1,α_2以外的變量固定,故可令ζ=-∑_(i=3)^N▒〖y_i α_i 〗
則約束條件改寫爲:
這裏寫圖片描述
其中,y爲類標籤,值爲±1,所以α_1 與α_2可以表示爲:
這裏寫圖片描述
α_1—α_2=ζ爲例,目標函數的約束域如下:
這裏寫圖片描述
直線α_1—α_2=ζ被約束條件0≤α_i≤C約束在了一個C×C的正方形中。
從圖中可以看出,最優問題的子問題是求在正方形內的線段上的最優值。這使得兩個變量的最優化問題成爲了實質上的單變量的最優化問題,不妨設爲變量α_2的最優化問題,由不等式約束可得α_2的取值範圍:
L≤α_2≤H
L,H分別爲正方形區域內線段的端點值。
引入符號:
這裏寫圖片描述
表示對輸入x_i的預測值和真實輸出y_i之差

這裏寫圖片描述
φ(x)是輸入空間到特徵空間的映射。

由條件:
這裏寫圖片描述
將α_1代入最優子問題的目標函數W(α_1,α_2 ),得到只包含α_2的函數,對α_2求偏導並令其爲0 ,可得〖α_2〗^(new,unc)的值,

這裏寫圖片描述
new,unc表示求偏導後還沒加取值範圍[L,H]時的值,稱爲未剪輯值。

加上取值範圍約束進而得到α_2 的值,再而得到α_1。α_2,α_1 的更新值如下:

這裏寫圖片描述
其中,new表示更新後的值,old表示更新前的值。
若α值滿足停止條件,則α即爲我們求的近似解。否則重新掃描選擇兩個變量繼續迭代計算直至滿足停止條件。

3、變量的選擇
現在的問題就是如何選擇兩個變量構造最優子問題。SMO採用啓發式選擇方法選擇變量。所謂啓發式,即每次選擇拉格朗日乘子時,優先選擇前面樣本系數中滿足條件0<α_i < C的
α_i作優化,不考慮約束條件中相等的情況是因爲在界上的樣例對應的係數α_i 一般都不會改變。
通過啓發式搜索找到第一個變量,那麼第二個應該如何選取呢?因爲要考慮算法的收斂性,第二個變量顯然不是隨便選的。實際上由Osuna定理,只要選擇的兩個變量中有一個違背KKT條件,那麼目標函數在一步迭代後值就會減小,並且我們希望找到的α_2 在更新後能夠有足夠大的變化。
由上面〖α_2〗^new 的公式可以看出,其值依賴於|E_1-E_2|,當α_1 確定後E_1也就確定了,因此在給定第一個變量的初始值α_i=0後,對輸入樣例循環遍歷,找出違背KKT條件中使|E_1-E_2|最大的樣例點的係數作爲α_2。

在特殊情況下,通過以上選擇的α_2 不能使目標函數有足夠的下降,那麼採用以下啓發式規則繼續選擇α_2:
遍歷在間隔邊界上的支持向量點,依次將其對應的變量作爲α_2 試用,直到目標函數有足夠的下降。若找不到合適的α_2,那麼再遍歷訓練數據集尋找
若仍未找到,則放棄第一個α_1,重新選擇α_1 。

在α_1,α_2 完成一次更新後,還需要對閾值b進行更新,b的更新可以通過KKT約束條件:

這裏寫圖片描述
計算得出。

以上介紹了SMO算法的思路和大概流程,沒有對算法的推導及實現上的細節做詳細的介紹,大家有興趣想要深入瞭解SMO的話,可以看Andrew ng的支持向量機視頻和John C.Platt的《Sequential Minimal Optimization A Fast Algorithm for Trainning Support Vector Machines》。

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