1. 程式人生 > >機器學習-支援向量機SVM

機器學習-支援向量機SVM

簡介:

支援向量機(SVM)是一種二分類的監督學習模型,他的基本模型是定義在特徵空間上的間隔最大的線性模型。他與感知機的區別是,感知機只要找到可以將資料正確劃分的超平面即可,而SVM需要找到間隔最大的超平面將資料劃分開。所以感知機的超平面可以有無數個,但是SVM的超平面只有一個。此外,SVM在引入核函式之後可以處理非線性問題。

SVM根據資料的不同可以分為以下三種形式:

1.線性可分支援向量機,也叫做硬間隔支援向量機,處理的資料是線性可分的,通過硬間隔最大化來學習一個線性可分的模型。

2.線性支援向量機,也叫做軟間隔支援向量機,當資料近似線性可分時,通過引入鬆弛因子,軟間隔最大化學習一個線性可分的模型。

3.非線性支援向量機,當資料線性不可分時,通過引入核函式將資料對映到高維空間後,學習得到一個非線性支援向量機。

線性可分支援向量機

考慮一個二分類問題,當資料可以在分佈空間中通過一個超平面將正負樣例分割開,一面為正類,一面為負類,我們就稱資料是線性可分,這個分離超平面的方程為:w*x+b=0。而線上性可分資料中存在著無數個超平面可以將資料分割開(參考感知機),我們要找到其中最好的超平面,這個超平面不僅可以將訓練集資料很好的劃分開,還有更好的泛化能力。下圖中很顯然直線B是最好的一條分割線,所以選擇間隔最大的一個超平面作為我們需要的最優的超平面。


圖1

求解超平面w*x+b=0就是求w和b,以及對應的分類決策函式f(x)=sign(w*x+b),稱之為線性可分支援向量機。

根據點到直線距離公式:


圖2

其中A為w向量,C為b,因為超平面的y值為0,所以對於支援向量機的點到超平面距離可以寫作:


圖3

又因為w*x+b的邊界為正負1,兩個邊界到超平面的距離和γ等於2倍的r,所以圖3又可以寫作:


圖4

這就是幾何間隔。下圖是支援向量機的各個概念圖:


圖5

當資料點為正類時,其y=+1,w*x+b>=+1,當資料點為負類時y=-1,w*x+b<=-1,所以y*(w*x+b)始終大於等於1,其中y*(w*x+b)成為函式間隔。

要找到間隔最大的超平面,也就是要找到滿足y*(w*x+b)>=1約束條件的引數w和b,使得γ最大。即:


圖6

顯然為了最大化間隔,僅需最大化||w||,這等價於最小化||w||的2次方,所以可以重寫為:


圖7

其中目標函式和約束函式都是連續可微的凸函式,並且目標函式是二次函式,約束函式是仿射函式,所以該約束問題是一個凸二次規劃問題。

求解凸二次規劃約束問題常用的辦法是引入拉格朗日乘子,通過求解對偶問題得到原始問題的解。這就是線性可分支援向量機的對偶演算法。

首先定義拉格朗日函式,對每個不等式約束引入拉格朗日乘子αi>=0,i=1,2,3....n.拉格朗日函式為:


圖8

這樣就把帶有約束問題的求極值問題轉為無約束求極值問題,接下來根據拉格朗日對偶性求解原始問題的對偶問題:


圖9

以上就是求解線性可分支援向量機的全部過程,求解得到w和b之後就可以得到分類超平面:


圖10

以及分類決策函式:


圖11

根據圖9中w*和b*的結果可以看出,w*和b*只依賴於αi>0對應的(xi,yi)樣本點,這些樣本點稱為支援向量。

線性支援向量機

當資料近似線性可分時,也就是說資料中存在噪聲點,我們通過引入鬆弛因子,使函式間隔加上鬆弛因子ξ後大於等於1,這樣約束條件就變成:


圖12

對於每個鬆弛因子ξi需要支付一個代價,所以目標函式也就是代價函式變為:


圖13

其中C>0稱為懲罰引數,是超引數需要我們手動調參,C值越大時對誤分類的懲罰增大,支援向量機的間隔寬度越窄,C值越小時對誤分類的懲罰越小,支援向量機的間隔寬度越寬。而ξ的幾何意義代表著,誤分類資料點離正確分類一側的距離,是幾何距離。

那麼這個鬆弛因子ξ是怎麼來的呢?因為資料是近似可分的存在著許多噪音點,所以當計算代價函式時,這些誤分類點要算入代價函式中去。這些誤分類點的函式間隔y*(w*x+b)<=-1,所以代價函式可以寫成帶有0/1損失函式的集合函式,就是當資料點的函式間隔減去1小於0的話(誤分類點),需要計算入代價函式,資料點的函式間隔減去1大於0的話(正確分類點),不需要計算入代價函式:


圖14

但是0/1損失函式的數學性質不好,非凸非連續性。所以一般使用他的代替損失函式“hinge損失max(0,1-z)”代替它,則代價函式也就是目標函式變為:


圖15

用ξ替代max部分,就是ξ<=1-y*(w*x+b),所以帶有約束條件的目標(代價)函式就變為下面的形式:


圖16

所以SVM的損失函式也可以看作是帶有L2正則項(||w||^2)的hinge損失函式。以上就是線性支援向量機的帶有約束條件的優化目標函式,求解w和b的過程與線性可分的方法一致,都是通過引入拉格朗日乘子,這裡不再重複。其中一些列需要滿足的約束條件稱為KKT條件。

非線性支援向量機

當資料樣本非線性可分時,也就是在當前的資料空間內(或者說當前維度內)無法找到一個超平面將資料分割開,那麼需要我們將資料從當前的維度對映到更高維度後,使資料變成線性可分的,而將資料對映到高維的函式稱之為核函式。

為什麼在SVM求解帶有約束條件的最優化問題時我們使用引入拉格朗日乘子方法,一是因為求解簡單,二是可以很方便的引入核函式K(x,z)。

通過引入核函式之後,對偶問題的目標函式就變成:


圖17

最後求解出w*和b*之後的決策分類函式:


圖18

這樣通過核函式的引入,可以用求解線性支援向量機的方法求解非線性支援向量機。學習是隱式的,不是瞭解核函式是如何計算以及資料到底被對映到哪一維空間的,但是需要我們手動的選擇核函式。常用的核函式有:

多項式核:


圖19

高斯核(徑向基核):


圖20

線性核,sigmoid核以及其他核函式等。通常使用先驗知識或者交叉驗證的方式選擇核函式,但是如果無先驗知識的情況下,一般選擇高斯核。為什麼選擇高斯核呢?因為可以將資料對映到無窮維空間。

SMO序列最小最優化

該學習方法是為了簡單求解SVM中的引數的一個演算法,並不是很重要(調包俠^-^),所以沒有很詳細的看,以後有時間看完再更新到本文中。

待更新。。

參考書籍:

《統計學習方法》李航 著

《機器學習》 周志華  著

《小象學院機器學習課程》 鄒博