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

劉建平Pinard發表於2016-11-26

           支援向量機原理(一) 線性支援向量機

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

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

    支援向量機原理(四)SMO演算法原理

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

    

    在前面兩篇我們講到了線性可分SVM的硬間隔最大化和軟間隔最大化的演算法,它們對線性可分的資料有很好的處理,但是對完全線性不可分的資料沒有辦法。本文我們就來探討SVM如何處理線性不可分的資料,重點講述核函式在SVM中處理線性不可分資料的作用。

1. 回顧多項式迴歸

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

    比如一個只有兩個特徵的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$$

    我們令\(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$$

    可以發現,我們又重新回到了線性迴歸,這是一個五元線性迴歸,可以用線性迴歸的方法來完成演算法。對於每個二元樣本特徵\((x_1,x_2)\),我們得到一個五元樣本特徵\((1, x_1, x_2, x_{1}^2, x_{2}^2, x_{1}x_2)\),通過這個改進的五元樣本特徵,我們重新把不是線性迴歸的函式變回線性迴歸。

    也就是說,對於二維的不是線性的資料,我們將其對映到了五維以後,就變成了線性的資料。

    這給了我們啟發,也就是說對於在低維線性不可分的資料,在對映到了高維以後,就變成線性可分的了。這個思想我們同樣可以運用到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$,我們將在下一篇討論這個問題。

 

(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com) 

    

相關文章