11SVM-SMO-序列最小優化演算法

白爾摩斯發表於2018-12-06

05 SVM – 支援向量機 – 概念、線性可分
06 SVM – 線性可分模型演算法和案例
07 SVM – 軟間隔模型
08 SVM – 軟間隔模型演算法流程

09 SVM – 線性不可分模型
10 SVM – 核函式

十三、SMO初識

序列最小優化演算法 (Sequential minimal optimization, SMO) 是一種用於解決SVM訓練過程中所產生的優化問題的演算法。 於1998年由John Platt發明,論文詳見:《Sequencial Minimal Optimization-a Fast Alg for Training SVM.pdf》

回顧線性可分SVM求解步驟:

回顧 - SVM優化問題

假定存在一個β*=(β1,β2,…,βm)是我們最終的最優解,那麼根據KKT條件我們可以計算出w和b的最優解,如下:

有了最優²*後,求解w,b

進而我們可以得到最終的分離超平面為:

目標 - 分離超平面

拉格朗日乘子法和KKT的對偶互補條件為:

β、μ和C之間的關係為:C – βi – μi = 0

根據這個對偶互補條件,我們有如下關係式:

也就是說我們找出的最優的分割超平面必須滿足下列的目標條件(g(x)):

拉格朗日對偶化要求的兩個限制的初始條件為:


從而可以得到解決問題的思路如下:

1、初始化後一個β值,讓它滿足對偶問題的兩個__初始限制條件__;

2、不斷優化這個β值,使得由它確定的分割超平面滿足__g(x)目標條件__;而且在優化過程中,始終保證β值滿足__初始限制條件__。

__PS:__這個求解過程中,和傳統的思路不太一樣,不是對目標函式求最小值,而是讓__g(x)目標條件__儘可能的滿足。

在這樣一個過程中,到底如何優化這個β值呢???

整理可以發現β值的優化須遵循以下兩個基本原則:

1、每次優化的時候,必須同時優化β的兩個分量;因為如果只優化一個分量的話,新的β值就沒法滿足__初始限制條件中__的__等式約束條件__了。

2、每次優化的兩個分量應該是違反__g(x)目標條件__比較多的。也就是說,本來應當是大於等於1的,越是小於1違反__g(x)目標條件__就越多;

或者換一種思路來理解,因為目標函式中存在m個變數,直接優化比較難,利用啟發式的方法/EM演算法的思想,每次優化的時候,只優化兩個變數,將其它的變數看成常數項,這樣SMO演算法就將一個複雜的優化演算法轉換為一個比較簡單的兩變數優化問題了。

分析定義

十四、SMO演算法推導

1、構建β1、β2的函式

目標函式轉換

認為β1、β2是變數,其它β值是常量,從而將__目標函式轉換__如下:

由於β1y1 + β2y2 = k,並且y2 = 1,使用β2來表示β1的值:

用²2來表示²1的值

將上式帶入目標優化函式,就可以消去β1,從而只留下僅僅包含β2的式子。

最終求得的公式

深入分析__最終求得的公式__:

深入分析 - 1

深入分析 - 2

2、求解β2的值

深入分析步驟1:

深入分析步驟1

求解²2步驟 - 1

求解²2步驟 - 2

求解²2步驟 - 3

分析最後的公式

求解完最優的β值後,我們接下來要考慮限制條件。


3、考慮β1和β2的取值限定範圍

目標函式轉換

²1和²2的取值限定範圍

考慮β1和β2的取值限定範圍,假定新求出來的β值是滿足我們的邊界限制的,即如下所示:

²值是滿足邊界限制

分析y1==y2時²的取值範圍

當y1=y2的時候,β1+β2=k; 由於β的限制條件,我們可以得到:

y1==y2

當y1≠y2的時候,β1-β2=k;由於β的限制條件,我們可以得到:

y1`y2

結合β的取值限制範圍以及函式W的β最優解,我們可以得帶迭代過程中的最優解為:

最優解

然後根據β1和β2的關係,從而可以得到迭代後的β1的值:

迭代後的²1的值

求解β的過程中,相關公式如下:

求解²的過程


求解最優β討論到這裡,不明白的可以私信。
下章討論如何選擇最初的β變數。

12 SVM – SMO – 初始β變數的選擇


相關文章