機器學習-支援向量機SVM

來源:互聯網
上載者:User

標籤:img   等於   分類   ima   tps   fc7   package   svm   idt   

簡介:

支援向量機(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中的參數的一個演算法,並不是很重要(調包俠^-^),所以沒有很詳細的看,以後有時間看完再更新到本文中。

待更新。。

參考書籍:

《統計學習方法》李航 著

《機器學習》 周志華  著

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

 

機器學習-支援向量機SVM

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.