1. 程式人生 > >通俗易懂--SVM演算法講解(演算法+案例)

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

1.SVM講解

新聞分類案例

SVM是一個很複雜的演算法,不是一篇博文就能夠講完的,所以此篇的定位是初學者能夠接受的程度,並且講的都是SVM的一種思想,通過此篇能夠使讀著會使用SVM就行,具體SVM的推導過程有一篇博文是講得非常細的,具體連結我放到最後面,供大家參考。

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

首先我們先來看一個3維的平面方程:Ax+By+Cz+D=0
這就是我們中學所學的,從這個方程我們可以推匯出二維空間的一條直線:Ax+By+D=0

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

image

x代表的是一個向量,接下來我們看下二維空間的幾何表示:

image

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

這些點能夠很好地確定一個超平面,而且在幾何空間中表示的也是一個向量,那麼就把這些能夠用來確定超平面的向量稱為支援向量(直接支援超平面的生成),於是該演算法就叫做支援向量機(SVM)了。

1.2如何找到超平面

函式間隔

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

image

但是這個函式間隔有個問題,就是我成倍的增加w和b的值,則函式值也會跟著成倍增加,但這個超平面沒有改變。所以有函式間隔還不夠,需要一個幾何間隔。

幾何間隔

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

image

根據平面幾何知識,有

image
image.png

1.3最大間隔分類器

對一個數據點進行分類,當超平面離資料點的“間隔”越大,分類的確信度(confidence)也越大。所以,為了使得分類的確信度儘量高,需要讓所選擇的超平面能夠最大化這個“間隔”值。這個間隔就是下圖中的Gap的一半。

image
image.png

1.4後續問題

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

SVM要深入的話有很多內容需要講到,比如:線性不可分問題、核函式、SMO演算法等。

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

支援向量機通俗導論:https://blog.csdn.net/v_JULY_v/article/details/7624837#commentBox

1.5新聞分類例項

github地址

尋覓網際網路,少有機器學習通俗易懂之演算法講解、案例等,專案立於這一問題之上,整理一份基本演算法講解+案例於文件,供大家學習之。通俗易懂之文章亦不可以面概全,但凡有不正確或爭議之處,望告知,自當不吝賜教!

.

.

.

.

image

歡迎新增微信交流!請備註“機器學習”。