SMO計算思路

簡化版SMO算法

和座標上升法的思想類似,SMO算法也想每次只更新一個變量,但是很可惜,
這裏寫圖片描述
上式限定了,當固定其他所有參數,那麼α1上也是個定值,變不了;因此不得不將多增加一個αi,這樣α1才能變動,關於αi的選擇,有啓發式方法,這裏先不考慮,介紹一種簡單的SMO實現方法。

簡化版SMO算法的主要步驟

創建一個alpha向量並將其初始化爲0向量
當迭代次數小於最大迭代次數時(外循環)
對數據集中的每個數據向量(內循環):
如果該數據向量可以被優化:
隨機選擇另一個數據向量
同時優化這兩個向量

如果兩個向量都不能被優化,退出內循環

如果所有向量都沒有被優化,增加迭代數目,繼續下一次循環

如何更新α

SMO之所以高效是因爲,當固定了其他參數後,對一個參數的優化過程很高效,現在我們就來看看到底怎麼優化這一個參數。
假設我們選取了初始值{α1,α2,…,αn}並且滿足KKT條件,下面固定{α3,…,αn},這樣W就是α1,α2的函數,而α1,α2滿足條件:
這裏寫圖片描述
爲了方便,我們將等式右邊的常數值表示爲k。
根據y1、y2符號是否相同,可以分爲以下兩種情況:
這裏寫圖片描述
接下來以左邊的圖爲例,來說明以下α的選取範圍。
當y1、y2異號時,直線的斜率是1,由於KKT條件限定了α1、α2的範圍必須在邊長爲c的正方形內,因此直線有下面兩種可能性,
這裏寫圖片描述
從圖中不難總結出取值的上限H和下限L:
L=max(0,α2-α1),H=min(C,C+α2-α1)
同理,y1、y2同號時,
L=max(0,α2+α1-c),H=min(C,α2+α1)

將α1用α2來表示,帶回W中,W會被表示成一個二次函數,a(α2)^2+bα2+c,二次函數求最值問題是高中最常做的一個問題了,基本思想是數形結合,找對稱軸,然後看變量的取值範圍裏是否包含了對稱軸,如下圖:
這裏寫圖片描述
根據能否取得對稱軸,我們可以得到以下更新α2的原則:
這裏寫圖片描述
有了α2,求解新的α1就不是難事了。

參考文獻:http://www.cnblogs.com/XBWer/p/4247903.html

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