支持向量機原理(三)線性不可分支持向量機與核函數

支持向量機原理(一) 線性支持向量機html

    支持向量機原理(二) 線性支持向量機的軟間隔最大化模型算法

    支持向量機原理(三)線性不可分支持向量機與核函數微信

    支持向量機原理(四)SMO算法原理函數

    支持向量機原理(五)線性支持迴歸post

    

    在前面兩篇咱們講到了線性可分SVM的硬間隔最大化和軟間隔最大化的算法,它們對線性可分的數據有很好的處理,可是對徹底線性不可分的數據沒有辦法。本文咱們就來探討SVM如何處理線性不可分的數據,重點講述核函數在SVM中處理線性不可分數據的做用。優化

1、回顧多項式迴歸

    在線性迴歸原理小結中,咱們講到了如何將多項式迴歸轉化爲線性迴歸。url

    好比一個只有兩個特徵的p次方多項式迴歸的模型:
\[ h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_1^{2} + \theta_{4}x_2^{2} + \theta_{5}x_{1}x_2 \]spa

    咱們令\(x_0 = 1, x_1 = x_1, x_2 = x_2, x_3 =x_1^{2}, x_4 = x_2^{2}, x_5 =  x_{1}x_2\) ,這樣咱們就獲得了下式:
\[ h_\theta(x_1, x_2) = \theta_0 + \theta_{1}x_1 + \theta_{2}x_{2} + \theta_{3}x_3 + \theta_{4}x_4 + \theta_{5}x_5 \]htm

    能夠發現,咱們又從新回到了線性迴歸,這是一個五元線性迴歸,能夠用線性迴歸的方法來完成算法。對於每一個二元樣本特徵\((x_1,x_2)\),咱們獲得一個五元樣本特徵\((1, x_1, x_2, x_{1}^2, x_{2}^2, x_{1}x_2)\),經過這個改進的五元樣本特徵,咱們從新把不是線性迴歸的函數變回線性迴歸。blog

    也就是說,對於二維的不是線性的數據,咱們將其映射到了五維之後,就變成了線性的數據。

    這給了咱們啓發,也就是說對於在低維線性不可分的數據,在映射到了高維之後,就變成線性可分的了。這個思想咱們一樣能夠運用到SVM的線性不可分數據上。也就是說,對於SVM線性不可分的低維特徵數據,咱們能夠將其映射到高維,就能線性可分,此時就能夠運用前兩篇的線性可分SVM的算法思想了。

2、核函數的引入

    上一節咱們講到線性不可分的低維特徵數據,咱們能夠將其映射到高維,就能線性可分。如今咱們將它運用到咱們的SVM的算法上。回顧線性可分SVM的優化目標函數:
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jx_i \bullet x_j - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    注意到上式低維特徵僅僅之內積$x_i \bullet x_j \(的形式出現,若是咱們定義一個低維特徵空間到高維特徵空間的映射\)\phi$(好比上一節2維到5維的映射),將全部特徵映射到一個更高的維度,讓數據線性可分,咱們就能夠繼續按前兩篇的方法來優化目標函數,求出分離超平面和分類決策函數了。也就是說如今的SVM的優化目標函數變成:
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi(x_i) \bullet \phi(x_j) - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    能夠看到,和線性可分SVM的優化目標函數的區別僅僅是將內積$x_i \bullet x_j \(替換爲\)\phi(x_i) \bullet \phi(x_j)$。

    看起來彷佛這樣咱們就已經完美解決了線性不可分SVM的問題了,可是事實是否是這樣呢?咱們看看,假如是一個2維特徵的數據,咱們能夠將其映射到5維來作特徵的內積,若是原始空間是三維,能夠映射到到19維空間,彷佛還能夠處理。可是若是咱們的低維特徵是100個維度,1000個維度呢?那麼咱們要將其映射到超級高的維度來計算特徵的內積。這時候映射成的高維維度是爆炸性增加的,這個計算量實在是太大了,並且若是遇到無窮維的狀況,就根本無從計算了。

    怎麼辦?彷佛咱們剛提出了一種好的解決線性不可分的辦法,接着就把本身否決了。

    好吧,核函數該隆重出場了!

    假設\(\phi\)是一個從低維的輸入空間\(\chi\)(歐式空間的子集或者離散集合)到高維的希爾伯特空間的\(\mathcal{H}\)映射。那麼若是存在函數\(K(x,z)\),對於任意\(x, z \in \chi\),都有:
\[ K(x, z) = \phi(x_i) \bullet \phi(x_j) \]

    那麼咱們就稱\(K(x, z)\)爲核函數。

     從上面的式子乍一看仍是不明白核函數怎麼幫咱們解決線性不可分的問題的。仔細觀察上式能夠發現,\(K(x, z)\)的計算是在低維特徵空間來計算的,它避免了在剛纔咱們提到了在高維維度空間計算內積的恐怖計算量。也就是說,咱們能夠好好享受在高維特徵空間線性可分的紅利,卻避免了高維特徵空間恐怖的內積計算量。

    至此,咱們總結下線性不可分時核函數的引入過程:

    咱們遇到線性不可分的樣例時,經常使用作法是把樣例特徵映射到高維空間中去(如上一節的多項式迴歸)可是遇到線性不可分的樣例,一概映射到高維空間,那麼這個維度大小是會高到使人恐怖的。此時,核函數就體現出它的價值了,核函數的價值在於它雖然也是將特徵進行從低維到高維的轉換,但核函數好在它在低維上進行計算,而將實質上的分類效果(利用了內積)表如今了高維上,這樣避免了直接在高維空間中的複雜計算,真正解決了SVM線性不可分的問題。

3、核函數的介紹

    事實上,核函數的研究很是的早,要比SVM出現早得多,固然,將它引入SVM中是最近二十多年的事情。對於從低維到高維的映射,核函數不止一個。那麼什麼樣的函數才能夠當作核函數呢?這是一個有些複雜的數學問題。這裏很少介紹。因爲通常咱們說的核函數都是正定核函數,這裏咱們直說明正定核函數的充分必要條件。一個函數要想成爲正定核函數,必須知足他裏面任何點的集合造成的Gram矩陣是半正定的。也就是說,對於任意的$x_i \in \chi , i=1,2,3...m $, \(K(x_i,x_j)\)對應的Gram矩陣$K = \bigg[ K(x_i, x_j )\bigg] $ 是半正定矩陣,則\(K(x,z)\)是正定核函數。 

    從上面的定理看,它要求任意的集合都知足Gram矩陣半正定,因此本身去找一個核函數仍是很難的,怎麼辦呢?還好牛人們已經幫咱們找到了不少的核函數,而經常使用的核函數也僅僅只有那麼幾個。下面咱們來看看常見的核函數, 選擇這幾個核函數介紹是由於scikit-learn中默承認選的就是下面幾個核函數。

3.1 線性核函數

    線性核函數(Linear Kernel)其實就是咱們前兩篇的線性可分SVM,表達式爲:
\[ K(x, z) = x \bullet z \]

    也就是說,線性可分SVM咱們能夠和線性不可分SVM歸爲一類,區別僅僅在於線性可分SVM用的是線性核函數。

3.2 多項式核函數

    多項式核函數(Polynomial Kernel)是線性不可分SVM經常使用的核函數之一,表達式爲:
\[ K(x, z) = (\gamma x \bullet z  + r)^d \]

    其中,\(\gamma, r, d\)都須要本身調參定義。

3.3 高斯核函數

    高斯核函數(Gaussian Kernel),在SVM中也稱爲徑向基核函數(Radial Basis Function,RBF),它是非線性分類SVM最主流的核函數。libsvm默認的核函數就是它。表達式爲:
\[ K(x, z) = exp(-\gamma||x-z||^2) \]

    其中,\(\gamma\)大於0,須要本身調參定義。

3.4 Sigmoid核函數

    Sigmoid核函數(Sigmoid Kernel)也是線性不可分SVM經常使用的核函數之一,表達式爲:
\[ K(x, z) = tanh(\gamma x \bullet z  + r) \]

    其中,\(\gamma, r\)都須要本身調參定義。

4、分類SVM的算法小結

    引入了核函數後,咱們的SVM算法纔算是比較完整了。如今咱們對分類SVM的算法過程作一個總結。再也不區別是否線性可分。

    輸入是m個樣本\({(x_1,y_1), (x_2,y_2), ..., (x_m,y_m),}\),其中x爲n維特徵向量。y爲二元輸出,值爲1,或者-1.

    輸出是分離超平面的參數\(w^{*}和b^{*}\)和分類決策函數。

    算法過程以下:

    1)選擇適當的核函數\(K(x,z)\)和一個懲罰係數\(C>;0\), 構造約束優化問題
\[ \underbrace{ min }_{\alpha}  \frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_jK(x_i,x_j) - \sum\limits_{i=1}^{m}\alpha_i \]

\[ s.t. \; \sum\limits_{i=1}^{m}\alpha_iy_i = 0 \]

\[ 0 \leq \alpha_i \leq C \]

    2)用SMO算法求出上式最小時對應的\(\alpha\)向量的值\(\alpha^{*}\)向量.

    3) 獲得\(w^{*} = \sum\limits_{i=1}^{m}\alpha_i^{*}y_i\phi(x_i)\),此處能夠不直接顯式的計算\(w^{*}\)

    4) 找出全部的S個支持向量,即知足\(0 <; \alpha_s <; C\)對應的樣本\((x_s,y_s)\),經過 \(y_s(\sum\limits_{i=1}^{m}\alpha_iy_iK(x_i,x_s)+b) = 1\),計算出每一個支持向量\((x_s, y_s)\)對應的\(b_s^{*}\),計算出這些\(b_s^{*} = y_s - \sum\limits_{i=1}^{m}\alpha_iy_iK(x_i,x_s)\). 全部的\(b_s^{*}\)對應的平均值即爲最終的\(b^{*} = \frac{1}{S}\sum\limits_{i=1}^{S}b_s^{*}\)

     這樣最終的分類超平面爲:$\sum\limits_{i=1}^{m}\alpha_i^{}y_iK(x, x_i)+ b^{} = 0 \(,最終的分類決策函數爲:\)f(x) = sign(\sum\limits_{i=1}^{m}\alpha_i^{}y_iK(x, x_i)+ b^{})$

     

    至此,咱們的分類SVM算是總結完畢,惟一的漏網之魚是SMO算法,這個算法關係到,咱們如何求出優化函數極小化時候的\(\alpha^{*}\),進而求出\(w,b\),咱們將在下一篇討論這個問題。

 

(歡迎轉載,轉載請註明出處。歡迎溝通交流: 微信:nickchen121)

相關文章
相關標籤/搜索