筆記(總結)-SVM(支持向量機)的理解-4

前三篇主要是介紹SVM的原理。最初SVM的原問題是凸二次優化問題,有現成的算法可以求解,費盡周折轉換到對偶問題,一是在對偶問題形勢下可以使用核函數,二是對偶問題我們可以高效求解。本篇主要介紹如何求解SVM。

SMO:Sequential Minimal Optimization


Coordinate Ascent(座標上升法)

回到我們的對偶問題:

maxW(α)=iαi12ijαiαjyiyjxiTxj

s.t. iαiyi=0, 0αiC

上述問題僅僅是關於一系列α 的優化問題,即:

maxαW(α1,...,αm)

考慮使用座標上升法解決該問題:
這裏寫圖片描述
算法內層循環將αi 看做變量,其他的α 看做常量進行優化。在二維情況下,函數等高線圖的優化路線如下:
這裏寫圖片描述
可以看到,每一步優化中,都固定了一個變量,讓另一個變量取值使目標函數“最優”,交替更新兩個變量直到收斂或達到某種停止條件。然而由於如下限制,無法在對偶問題中使用座標上升法求解:

α1=y1i=2nαiyi

假如我們想固定其他變量,更新α1 ,由於對偶問題的約束,固定其他變量後α1 爲常量。

SMO Algorithm

只選取一個αi 更新是不行的,那麼考慮一次至少更新兩個變量。這便是SMO算法的動機由來,算法如下:
這裏寫圖片描述

算法思想很簡潔,先按某種方式選定要更新的兩個變量αi,αj ,然後固定其它變量對αi,αj 進行更新來優化W(α)

優化步驟

例如我們現在想優化α1,α2 ,由約束可以得到:

α1y1+α2y2=i=3nαiyi=,ζ

又由對偶問題約束0αiC 可以得到可行解如下圖,α1,α2 必須位於直線α1y1+α2y2=ζ 被矩形區域[0,C]×[0,C] 截斷的線段上:
這裏寫圖片描述

由直線約束可以將α1 表示爲α2 的函數,即:

α1=(ζα2y2)y1

由此得到目標函數的表達式爲:

W=W((ζα2y2)y1,α2,...,αm)

將目標函數展開,得到一個關於α2 的開口向下的二次函數,當不考慮矩形區域約束時可以直接求導,得到最優解α2opt 。然而實際情況中由於矩形約束,α2 通常有取值區間[L,H] ,考慮最優解和取值區間的關係,更新得到實際最優值:

α2={H,    α2opt>Hα2opt, Lα2optHL,    α2opt<H

當得到α2 後,可以依據直線約束更新α1

選擇步驟

選擇違反KKT條件最多的樣本對應的α 作爲第一個變量,即對於每個訓練樣本,檢查是否滿足KKT條件(可參考SVM第2篇),選擇不滿足中程度最大者:

          αi=0xiyi(wTx+b)1

0<αi<Cxiyi(wTx+b)=1

                 αi=Cxiyi(wTx+b)1

對於第二個變量,應該選擇一個使目標函數數值增長最快的變量,但由於比較各變量所對應的目標函數值增幅的複雜度過高,SMO採用啓發式規則,使選取的兩變量對應樣本之間間隔最大,直觀上看,這樣選取的兩個變量差異較大,相比於對兩個相似變量進行更新,差異更大的變量能對目標函數帶來更大的變化。

至此我們得到了SMO的完整算法。


四篇過後,SVM基本講述清楚。參考來源之前的總結博客有記述傳送門,同時還參考了國科大《模式識別與機器學習》091M4042H課程蘭豔豔老師slides。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章