1. 程式人生 > >SVM系列理論(十一)SMO序列最優化演算法

SVM系列理論(十一)SMO序列最優化演算法

支援向量機的的學習問題可以形式化為求解凸二次規劃問題。求解凸二次規劃問題可以借用一些凸二次規劃求解工具,但這需要強大的計算能力支援。Platt提出SMO序列最小優化演算法,可以高效地計算出對偶問題中最佳的拉格朗日乘子

α .

1. SMO 序列最小化演算法的基本思想

SVM的對偶問題可以表示為:

iαjyiyjK(xi⋅xj)−∑i=1Nαi" role="presentation" style="position: relative;"> m i n α
        1 2 j = 1 N α i α j y i y j K ( x i x j ) i = 1 N α i

s . t .         i = 1 N α i y i = 0

                        0 α i C , i = 1 , 2 , . . . , N                   ( 1 )


對應的KKT條件為:

α i = 0 y i g ( x i ) 1                  

0 < α i < C y i g ( x i ) = 1                  

α i = C y i g ( x i ) 1                  


SMO演算法是一種快速學習的演算法,其思想是

不斷地選擇兩個兩個變數 α 1 , α 2 ,將上面(1)這個二次規劃問題分解成一個只有兩個變數的二次規劃子問題,然後對二變數子問題進行解析求解,直到所有變數都滿足KKT條件為止。由於每個子問題都有解析解,計算很快,所以很高效。

重要定理KKT條件是最優化問題的充分必要條件


2. 選擇兩個變數的方法

上面說到SMO演算法的思想,那麼第一步應該明確怎麼選擇兩個變數 α 1 , α 2

2.1 第一個變數的選擇

選擇第一個變數需要選擇在訓練集中違反KKT條件最嚴重的樣本點。 這很容易理解,因為我們最終的目標是讓所有的變數 α 滿足KKT條件,選擇違反KKT最大的作為優化物件。

  • 一般來說,我們首先選擇違反 0 < α i < C y i g ( x i ) = 1 這個條件的 α

  • 如果這些支援向量都滿足KKT條件,再選擇違反 α i = C y i g ( x i ) 1 α i = 0 y i g ( x i ) 1 的點。

2.2 第二個變數的選擇

為了選擇第二個變數,首先定義函式 g ( x i ) = j = 1 N α j y j K ( x j , x i ) + b

並把預測值