序列最小優化算法
前面介紹的支持向量機的學習問題可以形式化為求解凸二次規劃的問題。這樣具有全局最優解,并且有許多最優化算法可以用于這一問題的求解。
但是當樣本容量很大時,這些算法效率很低下。
因此需要使用序列最小最優化SMO等算法來解決
在這個問題中,變量是拉格朗日乘子,一個變量alphai對應于一個樣本點,變量綜述等于訓練樣本容量N
SMO是一種啟發式算法,基本思路是:如果所有變量的解都滿足此最優化問題的KKT條件。那么這個最優化問題的解就得到了。
否則,選擇兩個變量固定其他變量,根據兩個變量構建一個二次規劃問題。
這時子問題可以通過解析方法求解,這樣就大大提高了計算速度。
如此,SMO算法將原問題不斷分解為子問題,并對子問題求解,達到求原問題解的目。
整個SMO算法包括兩個部分:
1. 求解兩個變量二次規劃的解析方法
2. 選擇變量的啟發式方法
由于只有兩個變量,約束可以用二維空間中的圖形表示
變量的選擇方法:
SMO算法在每個子問題中選擇兩個變量優化,其中至少一個變量是違反KKT條件的。
1. 第一個變量的選擇SMO選擇第一個變量是外層循環,在樣本中選擇違反KKT條件最嚴重的點,將其作為第一個變量
2. 第二個變量的選擇。為內層循環,標準是希望alpha2有足夠大的變化