6. 支持向量機(SVM)核函數


1. 感知機原理(Perceptron)

2. 感知機(Perceptron)基本形式和對偶形式實現

3. 支持向量機(SVM)拉格朗日對偶性(KKT)

4. 支持向量機(SVM)原理

5. 支持向量機(SVM)軟間隔

6. 支持向量機(SVM)核函數

1. 前言

之前介紹了SVM的原理和SVM的軟間隔,它們已經可以很好的解決有異常點的線性問題,但是如果本身是非線性的問題,目前來看SVM還是無法很好的解決的。所以本文介紹SVM的核函數技術,能夠順利的解決非線性的問題。

2. 多項式回歸

線性回歸一節中我們有介紹線性回歸解決非線性的一個方法就是多項式回歸。它的原理是對於二維的不是線性的數據,我們將其映射到了五維以后,就變成了線性的數據,然后套用線性回歸,達到了最終對非線性分類的目的。

image

3. 核函數原理

核函數的原理喝多項式的原理如出一轍,也就是說對於在低維線性不可分的數據,在映射到了高維以后,就變成線性可分的了。也就是說,對於SVM線性不可分的低維特征數據,我們可以將其映射到高維,就能線性可分,此時就可以運用前兩篇的線性可分SVM的算法思想了。

我們首先回顧下SVM軟間隔的模型公式:

\[\underbrace{ min }_{\alpha}\frac{1}{2}\sum\limits_{i=1,j=1}^{m}\alpha_i\alpha_jy_iy_j(x_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\),將所有特征映射到一個更高的維度,讓數據線性可分,我們就可以繼續按前兩篇的方法來優化目標函數,求出分離超平面和分類決策函數了。也就是說現在的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的問題了,但是事實是不是這樣呢?我們看看,假如是一個2維特征的數據,我們可以將其映射到5維來做特征的內積,如果原始空間是三維,可以映射到到19維空間,似乎還可以處理。但是如果我們的低維特征是100個維度,1000個維度呢?那么我們要將其映射到超級高的維度來計算特征的內積。這時候映射成的高維維度是爆炸性增長的,這個計算量實在是太大了,而且如果遇到無窮維的情況,就根本無從計算了。

怎么辦?似乎我們剛提出了一種好的解決線性不可分的辦法,接着就把自己否決了。

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

假設\(\phi\)是一個從低維的輸入空間\(\chi\)(歐式空間的子集或者離散集合)到高維的希爾伯特空間的映射。那么如果存在函數\(K(x,z)\),對於任意\(x,z\in\chi\),都有:

\[K(x, z) = \phi(x)\bullet\phi(z) \]

\[K(x, z) = (x \bullet z)^2=(\sum_{i=1}^mx_iz_i)(\sum_{j=1}^mx_jz_j)=\sum_{i=1}^m\sum_{j=1}^mx_ix_jz_iz_j \]

\[\phi(x)=\sum_{i=1}^m\sum_{j=1}^mx_ix_j \]

\[\phi(z)=\sum_{i=1}^m\sum_{j=1}^mz_iz_j \]

\[\phi(x)\bullet\phi(z)=\sum_{i=1}^m\sum_{j=1}^mx_ix_j\sum_{i=1}^m\sum_{j=1}^mz_iz_j=\sum_{i=1}^m\sum_{j=1}^mx_ix_jz_iz_j=K(x, z) \]

仔細觀察上面公式可以發現,\(K(x,z)\)的計算是在低維特征空間來計算的,它避免了在剛才我們提到了在高維維度空間計算內積的恐怖計算量。也就是說,我們可以好好享受在高維特征空間線性可分的紅利,卻避免了高維特征空間恐怖的內積計算量。

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

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

4. 核函數的介紹

4.1 線性核函數

線性核函數(Linear Kernel)其實就是我們前兩篇的線性可分SVM,也就是說,線性可分SVM我們可以和線性不可分SVM歸為一類,區別僅僅在於線性可分SVM用的是線性核函數。

\[K(x, z) = x \bullet z \]

4.2 多項式核函數

多項式核函數(Polynomial Kernel)是線性不可分SVM常用的核函數之一,公式如下:

\[K(x,z) = (\gamma x \bullet z+r)^d \]

4.3 高斯核函數

高斯核函數(Gaussian Kernel),在SVM中也稱為徑向基核函數(Radial Basis Function,RBF),它是非線性分類SVM最主流的核函數。libsvm默認的核函數就是它。公式如下:

\[K(x, z) = exp(-\gamma||x-z||^2) \]

4.4 Sigmoid核函數

Sigmoid核函數(Sigmoid Kernel)也是線性不可分SVM常用的核函數之一,公式如下:

\[K(x,z) = tanh(\gamma x \bullet z+r) \]

5. 總結

在真實的環境中,非線性問題比線性問題要多的多,如果SVM只能處理線性問題,那大大局限了它的使用范圍。核函數就是這么一把利器,能夠把SVM在線性回歸里面的整套邏輯無縫的運用到非線性問題上,並且更好的是計算量並沒有太多的提升。值得一提的是核函數並不是SVM模型發明出來的,它是一套數學的簡化計算的方法原理,只要符合它的使用條件,都可以運用核函數的方式簡化運算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM