從上一篇文章可知支持向量(supervector)就是指的離分隔超平面最近的那些點。整個SVM最需要的步驟是訓練分類器,得到alpha,從而得到整個用於數據分類的分隔超平面。支持向量機(super vector machine,SVM)的一般應用流程如下:
(1) 收集數據:可以使用任意方法
(2) 準備數據:需要數值型數據
(3) 分析數據:有助於可視化分隔超平面
(4) 訓練算法:SVM的大部分時間源自訓練,該過程主要實現兩個參數的調優
(5) 測試算法:十分簡單的計算過程就可以實現
(6) 使用算法:幾乎所有分類問題都可以使用SVM。SVM本身就是一個二類分類器,對多類問題應用SVM需要對代碼做一些修改
爲了減少SVM的訓練時間,提高效率,引入了序列最小化(Sequential Minimal Optimizaton,SMO)算法。SMO算法是將大優化問題分解爲多個小優化問題來求解的。這些小優化問題往往很容易求解,並且對它們進行順序求解的結果與將它們作爲整體求解的結果一致。
SMO的工作原理是基於Coordinate ascent算法的。
1、 Coordinate ascent
假設優化問題爲:
我們依次選擇其中一個參數,對這個參數進行優化,會使得W函數增長最快。
用圖1可以表示整個過程。
圖1
2、 SMO
SMO算法就是在每次循環中選擇兩個參數進行處理,比Coordinate Ascent裏多一個參數。
從上一篇文章可知優化問題表示爲:
從(19)式中可知
這樣子可以看出,選擇出一個參數,不改變其他的參數,這個參數也不會隨之改變,因此也就達不到優化的目的。所以SMO算法就是選擇兩個參數來進行優化。
將結果用參數代替得
因此可以用圖2來表達(20)式
圖2
從圖2中可以看出,,從(20)式中,可以推導出
因此可知
將作爲常數,其餘兩個參數的優化可表示爲
再根據(20)式可以得到,從而依據上一篇文章可以得到分隔超平面用於分類。