用實驗理解SVM的核函式和引數
原創宣告:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。
歡迎搜尋關注微信公眾號SIGAICN,獲取更多原創乾貨
導言
支援向量機(SVM)在很多分類問題上曾經取得了當時最好的效能,使用非線性核的支援向量機可以處理線性不可分的問題。僅僅通過一個簡單的核函式對映,就能達到如此好的效果,這讓我們覺得有些不可思議。核函式過於抽象,在本文中,SIGAI將通過一組實驗來演示核函式的有效性,並解釋支援向量機各個引數所起到的作用,讓大家對此有一個直觀的認識。如果要了解SVM的理論,請閱讀我們之前的公眾號文章。
核對映與核函式
通過核函式,支援向量機可以將特徵向量對映到更高維的空間中,使得原本線性不可分的資料在對映之後的空間中變得線性可分。假設原始向量為
在實現時不需要直接對特徵向量做這個對映,而是用核函式對兩個特徵向量的內積進行變換,這樣做等價於先對向量進行對映然後再做內積:
在這裡K為核函式。常用的非線性核函式有多項式核,高斯核(也叫徑向基函式核,RBF)。下表列出了各種核函式的計算公式:
各種核函式與它們的計算公式
核函式 | 計算公式 |
線性核 | |
多項式核 | |
徑向基函式核/高斯核 | |
sigmoid核 |
其中,b,d為人工設定的引數,d是一個正整數,為正實數,b為非負實數。
使用核函式後,支援向量機在訓練時求解的對偶問題為:
其中sgn為符號函式,定義為:
實驗
支援向量機真的能對非線性的資料進行分類嗎?不同的訓練引數會對分類結果產生什麼樣的影響?下面我們用一個小實驗來驗證。在這裡,我們對二維平面上
首先來看支援向量機能否處理異或問題,這是人工智慧裡一個很經典的分類問題,兩類訓練樣本分別落在兩個對角線上:
顯然,用一條直線無論怎樣劃分都無法將這兩類樣本正確的分開。下面來看SVM的表現,我們使用線性核,多項式核,高斯核三種核函式進行訓練。
首先選用線性核,結果是這樣的:
所有樣本都被判定成紅色。不出所料,使用線性核的SVM是無法解決異或問題的。
接下來選用多項式核。首先將引數設定為:
分類效果非常差:
藍色的樣本只有少數被分對了。下面調整訓練引數:
這裡只加大了懲罰因子
這比之前好了,藍色的樣本有一半被分對。接著調整引數:
分類效果如下:
現在是見證奇蹟的時刻!所有訓練樣本都被正確分類,看來加大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 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。