1. 程式人生 > >用實驗理解SVM的核函式和引數

用實驗理解SVM的核函式和引數

原創宣告:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。

歡迎搜尋關注微信公眾號SIGAICN,獲取更多原創乾貨



導言

支援向量機(SVM)在很多分類問題上曾經取得了當時最好的效能,使用非線性核的支援向量機可以處理線性不可分的問題。僅僅通過一個簡單的核函式對映,就能達到如此好的效果,這讓我們覺得有些不可思議。核函式過於抽象,在本文中,SIGAI將通過一組實驗來演示核函式的有效性,並解釋支援向量機各個引數所起到的作用,讓大家對此有一個直觀的認識。如果要了解SVM的理論,請閱讀我們之前的公眾號文章

核對映與核函式

通過核函式,支援向量機可以將特徵向量對映到更高維的空間中,使得原本線性不可分的資料在對映之後的空間中變得線性可分。假設原始向量為

x,對映之後的向量為z,這個對映為:


在實現時不需要直接對特徵向量做這個對映,而是用核函式對兩個特徵向量的內積進行變換,這樣做等價於先對向量進行對映然後再做內積:


在這裡K為核函式。常用的非線性核函式有多項式核,高斯核(也叫徑向基函式核,RBF)。下表列出了各種核函式的計算公式:

各種核函式與它們的計算公式

核函式

計算公式

線性核

多項式核

徑向基函式核/高斯核

sigmoid

其中bd為人工設定的引數,d是一個正整數,為正實數,b為非負實數。

使用核函式後,支援向量機在訓練時求解的對偶問題為:


其中sgn為符號函式,定義為:


實驗

支援向量機真的能對非線性的資料進行分類嗎?不同的訓練引數會對分類結果產生什麼樣的影響?下面我們用一個小實驗來驗證。在這裡,我們對二維平面上

512x512畫素的影象中的所有點進行分類,有藍色和紅色兩類。先用一批樣本訓練一個模型,然後對平面內所有的點進行分類,分類結果的顏色和訓練樣本的顏色相同。

首先來看支援向量機能否處理異或問題,這是人工智慧裡一個很經典的分類問題,兩類訓練樣本分別落在兩個對角線上:


顯然,用一條直線無論怎樣劃分都無法將這兩類樣本正確的分開。下面來看SVM的表現,我們使用線性核,多項式核,高斯核三種核函式進行訓練。

首先選用線性核,結果是這樣的:


所有樣本都被判定成紅色。不出所料,使用線性核的SVM是無法解決異或問題的。

接下來選用多項式核。首先將引數設定為:

分類效果非常差:


藍色的樣本只有少數被分對了。下面調整訓練引數:


這裡只加大了懲罰因子

C的子,分類效果如下:


這比之前好了,藍色的樣本有一半被分對。接著調整引數:


分類效果如下:


現在是見證奇蹟的時刻!所有訓練樣本都被正確分類,看來加大C的值非常有效。

下面來看高斯核的表現,如果引數設定為:


分類效果也是非常差:


所有的點都被分成了紅色。下面加大懲罰因子的值:


大部分訓練樣本都可以正確分類:


進一步加大C的值:



效果比剛才更好,所有樣本基本上都被正確分類了。

繼續調整,加大C的值:



所有樣本都被正確分類。

如果我們只加大的值,也能達到很好的效果:


所有樣本同樣被正確分類。

結論

通過上面的實驗我們發現使用多項式核、高斯核的SVM確實是可以解決線性不可分問題的。不同的引數對精度的影響非常大,一般來說,C越大,訓練得到的模型越準確。如果採用高斯核,引數的值對精度影響也非常大。因此,在實際應用時調一組好的引數對使用效果非常重要!

推薦文章

[1]  機器學習-波瀾壯闊40 SIGAI 2018.4.13.

[3]  人臉識別演算法演化史 SIGAI 2018.4.20.

[6] 用一張圖理解SVM的脈絡SIGAI 2018.4.28.

[7] 人臉檢測演算法綜述 SIGAI 2018.5.3.

[8] 理解神經網路的啟用函式 SIGAI 2018.5.5.

[10] 理解梯度下降法 SIGAI 2018.5.11.

[12] 理解凸優化SIGAI 2018.5.18.

原創宣告

本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。