1. 程式人生 > >支援向量機4—序列最小最優化演算法

支援向量機4—序列最小最優化演算法

支援向量機的學習問題可以形式化為求解凸二次規劃問題。這樣的凸二次規劃問題具有全域性最優解,並且有許多最優化演算法可以用於這一問題的求解。但是當訓練樣本容量很大時,這些演算法往往變得非常低效,以致無法使用。所以學習一種快速實現演算法——序列最小最優化(sequential minimal optimization, SMO)演算法,這個演算法1988年由Platt提出。


SMO演算法是一種啟發式演算法,其基本思路是:如果所有變數的解都滿足此最優化問題的KKT條件。那麼這個最優化問題的解就得到了。因為KKT條件是該最優化問題的充分必要條件。否則,選擇兩個變數,固定其他變數,針對這兩個變數構建一個二次規劃問題。

這個二次規劃問題關於這兩個變數的解應該更接近原始二次規劃問題的解,因為這會使得原始二次規劃問題的目標函式值變得更小。重要的是,這時子問題可以通過解析方法求解,這樣就可以大大提高整個演算法的計算速度。子問題有兩個變數,一個是違反KKT條件最嚴重的那一個,另一個由約束條件自動確定。如此,SMO演算法將原問題不斷分解為子問題並對子問題求解,進而達到求解原問題的目的。

注意,子問題的兩個變數中只有一個是自由變數,假設a1,a2為兩個變數,a3,a4,...,aN固定,那麼由等式約束(7.99)可知,如果a2確定,那麼a1也隨之確定,所以子問題中同時更新兩個變數。

整個SMO演算法包括兩個部分:求解兩個變數二次規劃的解析方法和選擇變數的啟發式方法。

1、兩個變數二次規劃的解析方法



2、變數的選擇方法

SMO稱選擇第1個變數的過程為外層迴圈。外層迴圈在訓練樣本中選取違反KKT條件最嚴重的樣本點,並將其對應的變數作為第1個變數。SMO稱選擇第2個變數的過程為內層迴圈。假設在外層迴圈中已經找到第1個變數α1,現在要在內層迴圈中找第2個變數α2。第2個變數選擇的標準是希望能使α2有足夠大的變化。此外,還要計算閾值b和差值Ei。

3、SMO演算法



參考:《統計學習方法》李航