【機(jī)器學(xué)習(xí)基礎(chǔ)】四個(gè)小項(xiàng)目完全解讀支持向量機(jī)
支持向量機(jī)算法的基礎(chǔ)是最大間隔分類器,最大間隔分類器雖然很簡(jiǎn)單,但不能應(yīng)用于大部分?jǐn)?shù)據(jù),因?yàn)榇蟛糠謱偈欠蔷€性數(shù)據(jù),無(wú)法用線性分類器進(jìn)行分類,解決方案是對(duì)特征空間進(jìn)行核函數(shù)映射,然后再運(yùn)行最大間隔分類器。
本文跳過(guò)枯燥乏味的算法推導(dǎo)過(guò)程,循序漸進(jìn)的介紹支持向量機(jī)分類原理,并通過(guò)四個(gè)小項(xiàng)目快速的理解支持向量機(jī)的線性分類,非線性分類和參數(shù)調(diào)參過(guò)程。
最大間隔分類器使用超平面進(jìn)行分類。
什么是超平面?
假如特征空間是 p 維,超平面就是 p-1維,為了可視化超平面,假設(shè)特征空間是3個(gè)維度的,那么超平面是2維的。
超平面表達(dá)式如下:

如果數(shù)據(jù)的特征滿足上式,那么該點(diǎn)落在超平面上,若不滿足,則該點(diǎn)處于超平面的兩側(cè)。
超平面如下圖:

一般來(lái)說(shuō),如果數(shù)據(jù)可以用超平面完美地進(jìn)行分離,那么超平面的數(shù)量是無(wú)限的,因?yàn)樗梢韵蛏弦苿?dòng)、向下移動(dòng),或者對(duì)該超平面進(jìn)行小角度的選擇而不與觀測(cè)數(shù)據(jù)接觸。
超平面是無(wú)限的,如何選擇最優(yōu)超平面?
最優(yōu)超平面是離觀測(cè)點(diǎn)最遠(yuǎn)的分離超平面,在給定超平面的情況下,我們計(jì)算每個(gè)訓(xùn)練數(shù)據(jù)到超平面的距離,這就是所謂的間隔,最優(yōu)超平面也就是間隔最大的分類器。如下圖:

正如你所看到的,有三個(gè)觀測(cè)點(diǎn)到超平面的距離相等,這三個(gè)觀測(cè)點(diǎn)就是支持向量,若這三個(gè)觀測(cè)點(diǎn)的位置改變了,超平面也會(huì)相應(yīng)的改變。最大間隔分類器的性能只與這三個(gè)點(diǎn)相關(guān),與其他數(shù)據(jù)不相關(guān),看到這里,是不是對(duì)支持向量機(jī)算法有了新的收獲了?
如果數(shù)據(jù)分布是非線性的,不能用超平面進(jìn)行分類,如下圖:

對(duì)于這樣的數(shù)據(jù)分布,我們將使用核函數(shù)映射為新的特征空間,再運(yùn)行最大間隔分類器進(jìn)行分類,這種方法稱為支持向量機(jī)。
支持向量機(jī)的核函數(shù)映射是一種擴(kuò)展特征空間的方法,核函數(shù)的核心思想是計(jì)算兩個(gè)數(shù)據(jù)點(diǎn)的相似度。核函數(shù)的度沒(méi)有限制,使用度大于1的內(nèi)核可以得到更靈活的決策邊界,如下圖所示:

為了更好的理解核函數(shù)的選擇是如何影響SVM算法,我們?cè)谒膫€(gè)不同的場(chǎng)景實(shí)現(xiàn)它。
項(xiàng)目1——線性核支持向量機(jī)
在開始之前,讓我們導(dǎo)入一些有用的庫(kù):

導(dǎo)入需要訓(xùn)練和測(cè)試的數(shù)據(jù)路徑:

定義可多次調(diào)用的畫圖函數(shù):

散點(diǎn)圖可視化數(shù)據(jù):

散點(diǎn)圖如下:

線性核支持向量機(jī)對(duì)該數(shù)據(jù)進(jìn)行分類,其中正則化參數(shù)C=1,并使用預(yù)測(cè)值繪制超平面(hyperplane),如下圖:

由上圖的分類結(jié)果可知,當(dāng)正則化參數(shù)等于1時(shí),模型對(duì)異常值不敏感。因此,低的正則化參數(shù)往往泛化能力更好,測(cè)試誤差率大于驗(yàn)證誤差率。
若增加正則化參數(shù)C等于100,那么模型對(duì)異常點(diǎn)異常敏感,分類結(jié)果如下圖:

由上圖結(jié)果可知:C=100時(shí),異常值能夠正確分類,但是分類超平面與樣本點(diǎn)的距離非常近,可以推斷該模型處于過(guò)擬合狀態(tài),泛化能力差。
項(xiàng)目2——高斯核支持向量機(jī)
若分類邊界是非線性的,我們常常使用高斯核進(jìn)行SVM分類。
首先,可視化需要分類的數(shù)據(jù):

散點(diǎn)圖:

高斯核用來(lái)衡量?jī)蓚€(gè)數(shù)據(jù)點(diǎn)的相似度,公式如下:

其中參數(shù)σ決定相似度指標(biāo)趨于零的速度。
高斯核支持向量機(jī)訓(xùn)練和預(yù)測(cè)代碼:

預(yù)測(cè)結(jié)果及分類邊界如下圖:

項(xiàng)目3——支持向量機(jī)調(diào)參
本節(jié)介紹用交叉驗(yàn)證方法選擇模型最優(yōu)參數(shù),首先下載數(shù)據(jù)集:

圖形如下:

使用交叉驗(yàn)證方法選擇最優(yōu)參數(shù),代碼如下:

選擇最優(yōu)參數(shù)的模型(C=1,sigma=0.1)來(lái)預(yù)測(cè)和畫出分類邊界:

結(jié)果圖:

項(xiàng)目4——用SVM進(jìn)行垃圾郵件分類
下載數(shù)據(jù),并用線性核進(jìn)行分類,得到訓(xùn)練準(zhǔn)確率和測(cè)試準(zhǔn)確率。
代碼如下:

得到訓(xùn)練準(zhǔn)確率和測(cè)試準(zhǔn)確率的結(jié)果分別為:99.8%和98.9%。
本文介紹了最大間隔分類器的原理,若遇到非線性邊界數(shù)據(jù)的分類任務(wù),則需要用支持向量機(jī)去構(gòu)建模型。文章通過(guò)四個(gè)小項(xiàng)目解釋線性核SVM,高斯核SVM,正則化參數(shù)C的作用以及如何用交叉驗(yàn)證方法選擇模型的最優(yōu)參數(shù)。
往期精彩回顧
本站qq群851320808,加入微信群請(qǐng)掃碼:
