通俗易懂--SVM算法講解(算法+案例)

1.SVM講解

新聞分類案例git

SVM是一個很複雜的算法,不是一篇博文就可以講完的,因此此篇的定位是初學者可以接受的程度,而且講的都是SVM的一種思想,經過此篇可以使讀着會使用SVM就行,具體SVM的推導過程有一篇博文是講得很是細的,具體連接我放到最後面,供你們參考。github

1.1支持向量機(SVM)的由來

首先咱們先來看一個3維的平面方程:Ax+By+Cz+D=0
這就是咱們中學所學的,從這個方程咱們能夠推導出二維空間的一條直線:Ax+By+D=0算法

那麼,依次類推,更高維的空間叫作一個超平面:微信

image

x表明的是一個向量,接下來咱們看下二維空間的幾何表示:機器學習

image

SVM的目標是找到一個超平面,這個超平面可以很好的解決二分類問題,因此先找到各個分類的樣本點離這個超平面最近的點,使得這個點到超平面的距離最大化,最近的點就是虛線所畫的。由以上超平面公式計算得出大於1的就屬於打叉分類,若是小於0的屬於圓圈分類。ide

這些點可以很好地肯定一個超平面,並且在幾何空間中表示的也是一個向量,那麼就把這些可以用來肯定超平面的向量稱爲支持向量(直接支持超平面的生成),因而該算法就叫作支持向量機(SVM)了。函數

1.2如何找到超平面

函數間隔

在超平面wx+b=0肯定的狀況下,|wx+b|可以表示點x到距離超平面的遠近,而經過觀察wx+b的符號與類標記y的符號是否一致可判斷分類是否正確,因此,能夠用(y(w*x+b))的正負性來斷定或表示分類的正確性。於此,咱們便引出了函數間隔(functional margin)的概念。定義函數間隔(用image 表示)爲:學習

image

可是這個函數間隔有個問題,就是我成倍的增長w和b的值,則函數值也會跟着成倍增長,但這個超平面沒有改變。因此有函數間隔還不夠,須要一個幾何間隔。.net

幾何間隔

咱們把w作一個約束條件,假定對於一個點 x ,令其垂直投影到超平面上的對應點爲 x0 ,w 是垂直於超平面的一個向量,爲樣本x到超平面的距離,以下圖所示:blog

image

根據平面幾何知識,有

image
image.png

1.3最大間隔分類器

對一個數據點進行分類,當超平面離數據點的「間隔」越大,分類的確信度(confidence)也越大。因此,爲了使得分類的確信度儘可能高,須要讓所選擇的超平面可以最大化這個「間隔」值。這個間隔就是下圖中的Gap的一半。

image
image.png

1.4後續問題

至此,SVM的第一層已經瞭解了,就是求最大的幾何間隔,對於那些只關心怎麼用SVM的朋友便已足夠,沒必要再更進一層深究其更深的原理。

SVM要深刻的話有不少內容須要講到,好比:線性不可分問題、核函數、SMO算法等。

在此推薦一篇博文,這篇博文把深刻的SVM內容也講了,包括推導過程等。若是想進一步瞭解SVM,推薦看一下:

支持向量機通俗導論:http://www.javashuo.com/article/p-fctewcoy-bo.html

1.5新聞分類實例

github地址

尋覓互聯網,少有機器學習通俗易懂之算法講解、案例等,項目立於這一問題之上,整理一份基本算法講解+案例於文檔,供你們學習之。通俗易懂之文章亦不能夠面概全,但凡是有不正確或爭議之處,望告知,自當不吝賜教!

.

.

.

.

image

歡迎添加微信交流!請備註「機器學習」。

相關文章
相關標籤/搜索