1. 程式人生 > >[完]機器學習實戰 第六章 支援向量機(Support Vector Machine)

[完]機器學習實戰 第六章 支援向量機(Support Vector Machine)

[參考] 機器學習實戰(Machine Learning in Action)

本章內容

支援向量機(Support Vector Machine)是最好的現成的分類器,“現成”指的是分類器不加修改即可直接使用。基本形式的SVM分類器就可得到低錯誤率的結果。SVM有很多實現,文中採用最流行的一種實現,即序列最小優化Sequential Minimal Optimization,一種求解支援向量機二次規劃的演算法)演算法。還會介紹如何使用一種稱為核函式kernel)的方式將SVM擴充套件到更多的資料集上。

優點:泛化錯誤率低,計算開銷不大,結果易理解。
這些優點是其十分流行,有人認為他是監督學習中最好的定式演算法

。與下章中AdaBoost最好的監督學習的方法相對應。
缺點:對引數調節和核函式的選擇敏感,原始分類器不加修改僅適用於二類問題。
使用資料型別:數值型和標稱型資料。

希望找到離分隔超平面最近的點,確保它們離分隔面的距離儘可能遠。這裡點到分隔面的距離被稱為間隔margin)。支援向量(support vector)就是離分隔超平面最近的那些點

分隔超平面的形式可以寫成wT+b,要計算點A到分隔超平面的距離,就必須給出點到分隔面的法線或者垂線的長度,該值為|wTA+b|/w。常數b類似於Logistic迴歸中的截距w0。向量w和常數b一起描述所給資料的分割線或超平面。

其他概念:線性可分(linearly separable),分隔超平面(separating hyperplane),間隔(margin)

SVM使用類似海維賽德階躍函式(即單位階躍函式)的函式對wT+b作用得到f(wT+b),其中當u<0f(u)=1,反之則輸出+1。不像Logistic迴歸,採用0和1,是因為-1和+1僅僅相差一個符號,方便數學上的處理。可以通過一個統一公式來表示間隔或者資料點到分隔超平面的距離,同時不必擔心資料到底是屬於-1還是+1類。

間隔通過label(wTx+b)來表示計算目標就是找出分類器定義中的wb,需要找到具有最小間隔的點,這些點就是支援向量。然後,對間隔進行最大化。可以寫作:

argmaxw,b{minn(label(wTx+b))1w}

上面是對乘積進行優化的事情,需要固定其中一個因子而最大化其他因子。若令所有支援向量的l

abel(wTx+b)都為1,那麼可以求w1的最大值來得到最終解。但是並非所有資料點的label(wTx+b)都等1,只有那些離分隔超平面最近的點得到的值才為1。而離超平面越遠的資料點,其label(wTx+b)的值也就越大。

上述優化問題給定了一些約束條件然後求最優值,該問題是一個帶約束條件的優化問題。這裡的優化條件label(wTx+b)1.0。此類問題的一個著名的求解方法是拉格朗日乘子法。通過引入拉格朗日乘子,可基於約束條件表達原來的問題。由於這裡的約束條件是基於資料點的,因此就可以將超平面寫成資料點的形式。優化目標函式最後可以寫成:

maxai=1mα12i,j=1mlabel(i)label(i)αiαjxi,xj(1)

其中尖括號表示xi,xj兩個向量的內積,整個目標函式的約束條件為:

α0,i=1mαjlabel(i)=0

因為並非所有資料都100%線性可分,所以需要引入鬆弛變數(slack variable),來允許有些資料點可處於分隔面的錯誤一側。這樣優化目標可保持不變,但此時約束條件則變為:

Cα0,i=1mαilabel(i)=0(2)

常數C用於控制“最大化間隔”和“保證大部分點的間隔小於1.0”這兩個目標的權重。在優化演算法的實現程式碼中,C是一個引數,可通過調節該引數得到不同的結果。一旦求出所有的alpha,那麼分隔超平面可通過這些alpha來表達。SVM的主要工作就是求解這些alpha。

其中(1)是最小化目標函式,(2)是優化過程中必須遵循的約束條件。以前,採用二次規劃求解工具(quadratic solver)求解上述最優化問題。

SMO(Sequential Minimal Optimization)是一個強大的演算法,表示序列最小優化。SMO將大優化問題分解成多個小優化問題來求解。此演算法目標是求出一系列alpha和b,一旦求出這些alpha,就容易計算出權重向量w

SMO演算法的工作原理:每次迴圈中選擇兩個alpha進行優化處理。一旦找到一對“合適”的alpha,那麼就增大其中一個同時減小另一個。“合適”指兩個alpha必須要符合一定條件,條件之一就是這兩個alpha必須要在間隔邊界之外,而其第二個條件則是這兩個alpha還沒有進行過區間化處理或者不在邊界上。

利用核函式將資料對映到高維空間

特徵空間轉換,稱為從一個特徵空間到另一個特徵空間的對映。一般,這種空間對映會將低維特徵空間對映到高維空間。這種對映可通過核函式(kernel)來實現。可以將核函式想象成一個包裝器(wrapper)或者介面(interface)。經過空間轉換後,可在高維空間中解決線性問題,這等價於在低維空間中解決非線性問題。

SVM優化中,所有運算都可以寫成內積(inner product,也成為點積)的形式。向量的內積指的是兩個向量相乘,之後得到單個標量或者數值。可將內積運算替換成核函式,而不必做簡化處理。將內積替換成核函式的方式成為核技巧(kernel trick)或者核“變電”(kernel substation)

徑向基核函式(radial basis function),是一個採用向量作為自變數的函式,能夠基於向量距離運算輸出一個標量。這個距離可以是從<0,0>向量或者其他向量開始計算的距離。可使用徑向基核函式的高斯版本,具體公式:

k(x,y)=exp(xy22σ2)