基本思想
使用隨機梯度下降直接解SVM的原始問題。
摘要
本文研究和分析了基於隨機梯度下降的SVM優化算法,簡單且高效。(Ο是漸進上界,Ω是漸進下界)本文證明爲獲得一定準確率精度
引言
SVM是一種高效流行的分類器、SVM是一種典型的受限二次規劃問題。然而,基於基本形式,SVM實際上是一個附帶懲罰因子的無限制經驗損失最小化問題。
定義目標函數爲
其中:
使用隨機梯度下降解目標函數的算法稱作pegasos。在每一次的迭代中,隨機挑選一個訓練樣本計算目標函數的梯度,然後在在相反的方向走一個預訂好的步長。根據上述算法,整體算法的運行時間滿足
- Interior Point (IP) methods:可以使用擬牛頓法對目標函數進行優化,但算法因爲使用瞭如海森矩陣等便需
m2 的空間複雜度, 其中m是樣本數。 - Decomposition methods: 使用類似SMO的算法解SVM的對偶優化問題,但是這會導致相對比較慢的收斂速率。
- Primal optimization:SVM大部分的求解方法都在解決對偶問題,尤其是在非線性核問題上。因爲,即使SVM使用了非線性核,我們也可以將
ω 替換爲∑αiyixi ,從而將解決原目標函數的受約束優化問題轉化爲沒有約束條件的優化問題。其實,直接解決原問題也有人研究過,比如使用smooth loss functions代替 hinge loss,這樣將問題變成一個平滑的不受限制的優化問題,然後使用梯度下降和牛頓法來求解。本文采取了類似方法,針對hinge loss的不可微性,直接使用sub-gradients(子梯度)代替梯度。 - 儘管隨機梯度下降算法是最差的優化算法,但是可以產生最好的泛化性能。
- 有一種基於隨機子梯度下降的算法和pegasos比較類似,但是其非常重要的一部分是學習步長的設置,收斂速率最壞的上界是
Ω(1(λϵ)2) 。歐幾里得距離的平方可以被優化到0,但是收斂速率決定於步長參數的設置。pegasos調參簡單。 - online methods:在線學習算法一般與隨機梯度下降算法結合,如每一次迭代只使用一個樣本。在線學習算法被提出爲SVM的快速替代方案。在線算法可以使用在線到批量轉換方案來獲得具有低泛化誤差的預測器,但是這種方法不一定能夠解決原問題的
ϵ 精度要求,並且它們的性能通常低於直接批量優化器。如上所述,Pegasos共享了在線學習算法的簡單性和速度,但它保證融合到最優的SVM解決方案。
pegasos 算法
基於上述提到的方法,pegasos在原始目標函數上通過精緻挑選的步長使用隨機梯度下降求解。將在本部分詳細描述pegasos的過程並提供僞代碼。同時也闡述基本算法的一系列變種,並討論幾個實際問題。
基本算法
隨機選取一個訓練樣本
得到近似的目標函數:
計算次梯度得:
其中,
僞代碼如下:
輸入數據集S,正則化因子
進一步推倒得:
如果指示函數爲真,則:
如果爲假,則
迭代T後,輸出
類似的mini-batch pegasos算法僞代碼如下:
稀疏特徵
當訓練集樣本是稀疏的時候,可以把
核函數解決非線性分類問題
SVM的主要優勢是可以使用核方法直接在特徵空間分類。可以如此做關鍵是表示定理( Representer Theorem ),根據表示定理可以通過訓練數據的線性組合求得原目標函數的最優解。即在訓練SVM的時候可以不直接使用訓練數據,通過指定核操作的訓練數據的內積結果訓練。也就是說,不考慮訓練樣本x本身的線性函數的預測變量,我們考慮訓練樣本的隱式映射φ(x)後的線性函數的預測變量。
推導過程如下:
如求解線性不可分的
其中:
爲使用核函數將內積
設:
則迭代式重寫爲:
根據迭代式的遞推可得:
設
則:
帶回到
根據輸出
映射φ(·)並不明確指定,而是訓練樣本通過映射φ(·)之後通過覈計算K(x,x’)=φ(x),φ(x’)得到內積結果。本文中,無需將目標函數轉換爲對偶函數,直接最小化原始問題,同時仍然使用核方法。Pegasos算法可以僅使用內核來實現求解,而不需要直接訪問特徵向量
因爲需要遍歷m個樣本,故時間複雜度爲
結合偏置項b
當正負樣本比例不均衡的時候,偏置項比較重要。
在算法的外部加一層找尋b的外循環,即對於不同的b值,均使用pegasos求解出各自的
因爲b是固定值,在內層循環求解時,仍然可以使用pegasos算法,且這種方法的時間複雜度仍然保持在
實驗比對
pegasos算法與SDCA,SVM_LIGHT,LASVM比較
線性核
第一行是原目標函數的收斂曲線,第二行是分類誤差率。橫座標是運行時間。
高斯核(非線性核)
第一行是原目標函數的收斂曲線,第二行是log歸約後的目標函數收斂曲線,第三行是分類誤差率。橫座標是運行時間。
python實現:
https://github.com/changtingwai/pegasos