12.26 四個小項目完全解讀支持向量機

支持向量機算法的基礎是最大間隔分類器,最大間隔分類器雖然很簡單,但不能應用於大部分數據,因為大部分屬是非線性數據,無法用線性分類器進行分類,解決方案是對特徵空間進行核函數映射,然後再運行最大間隔分類器。

本文跳過枯燥乏味的算法推導過程,循序漸進的介紹支持向量機分類原理,並通過四個小項目快速的理解支持向量機的線性分類,非線性分類和參數調參過程。

文末附代碼和數據下載方法,可直接運行

1.最大間隔分類器

最大間隔分類器使用超平面進行分類。

什麼是超平面?

假如特徵空間是 p 維,超平面就是 p-1維,為了可視化超平面,假設特徵空間是3個維度的,那麼超平面是2維的。

超平面表達式如下:

四個小項目完全解讀支持向量機

如果數據的特徵滿足上式,那麼該點落在超平面上,若不滿足,則該點處於超平面的兩側。

超平面如下圖:

四個小項目完全解讀支持向量機

一般來說,如果數據可以用超平面完美地進行分離,那麼超平面的數量是無限的,因為它可以向上移動、向下移動,或者對該超平面進行小角度的選擇而不與觀測數據接觸。

超平面是無限的,如何選擇最優超平面?

最優超平面是離觀測點最遠的分離超平面,在給定超平面的情況下,我們計算每個訓練數據到超平面的距離,這就是所謂的間隔,最優超平面也就是間隔最大的分類器。如下圖:

四個小項目完全解讀支持向量機

正如你所看到的,有三個觀測點到超平面的距離相等,這三個觀測點就是支持向量,若這三個觀測點的位置改變了,超平面也會相應的改變。最大間隔分類器的性能只與這三個點相關,與其他數據不相關,看到這裡,是不是對支持向量機算法有了新的收穫了?

如果數據分佈是非線性的,不能用超平面進行分類,如下圖:

四個小項目完全解讀支持向量機

對於這樣的數據分佈,我們將使用核函數映射為新的特徵空間,再運行最大間隔分類器進行分類,這種方法稱為支持向量機。

2.支持向量機

支持向量機的核函數映射是一種擴展特徵空間的方法,核函數的核心思想是計算兩個數據點的相似度。核函數的度沒有限制, 使用度大於1的內核可以得到更靈活的決策邊界,如下圖所示:

四個小項目完全解讀支持向量機

為了更好的理解核函數的選擇是如何影響SVM算法,我們在四個不同的場景實現它。

項目1——線性核支持向量機

在開始之前,讓我們導入一些有用的庫:

四個小項目完全解讀支持向量機

導入需要訓練和測試的數據路徑:

四個小項目完全解讀支持向量機

定義可多次調用的畫圖函數:

四個小項目完全解讀支持向量機

散點圖可視化數據:

四個小項目完全解讀支持向量機

散點圖如下:

四個小項目完全解讀支持向量機

線性核支持向量機對該數據進行分類,其中正則化參數C=1,並使用預測值繪製超平面(hyperplane),如下圖:

四個小項目完全解讀支持向量機

由上圖的分類結果可知,當正則化參數等於1時,模型對異常值不敏感。因此,低的正則化參數往往泛化能力更好,測試誤差率大於驗證誤差率。

若增加正則化參數C等於100,那麼模型對異常點異常敏感,分類結果如下圖:

四個小項目完全解讀支持向量機

由上圖結果可知:C=100時,異常值能夠正確分類,但是分類超平面與樣本點的距離非常近,可以推斷該模型處於過擬合狀態,泛化能力差。

項目2——高斯核支持向量機

若分類邊界是非線性的,我們常常使用高斯核進行SVM分類。

首先,可視化需要分類的數據:

四個小項目完全解讀支持向量機

散點圖:

四個小項目完全解讀支持向量機

高斯核用來衡量兩個數據點的相似度,公式如下:

四個小項目完全解讀支持向量機

其中參數σ決定相似度指標趨於零的速度。

高斯核支持向量機訓練和預測代碼:

四個小項目完全解讀支持向量機

預測結果及分類邊界如下圖:

四個小項目完全解讀支持向量機

項目3——支持向量機調參

本節介紹用交叉驗證方法選擇模型最優參數,首先下載數據集:

四個小項目完全解讀支持向量機

圖形如下:

四個小項目完全解讀支持向量機

使用交叉驗證方法選擇最優參數,代碼如下:

四個小項目完全解讀支持向量機

選擇最優參數的模型(C=1,sigma=0.1)來預測和畫出分類邊界:

四個小項目完全解讀支持向量機

結果圖:

四個小項目完全解讀支持向量機

項目4——用SVM進行垃圾郵件分類

下載數據,並用線性核進行分類,得到訓練準確率和測試準確率。

代碼如下:

四個小項目完全解讀支持向量機

得到訓練準確率和測試準確率的結果分別為:99.8%和98.9%。

3.小結

本文介紹了最大間隔分類器的原理,若遇到非線性邊界數據的分類任務,則需要用支持向量機去構建模型。文章通過四個小項目解釋線性核SVM,高斯核SVM,正則化參數C的作用以及如何用交叉驗證方法選擇模型的最優參數。


分享到:


相關文章: