在 SVM 白板推導| 由最大間隔化目標演化的損失函數推導過程 中白板手推了 SVM 的原理,並介紹了硬間隔核函數的實現原理及公式推導,這一節我來詳細介紹下 SVM 中的 Keynel Function。segmentfault
一直以來咱們只知道核函數能讓 SVM 在高維空間中實現非線性可分,那麼,核函數是在什麼狀況下被提出的呢?又有哪幾種核函數呢?數組
本篇文章從 2 個角度講解 SVM 核函數。函數
- 非線性帶來高維轉換 (模型角度),$X → Φ(X)$
- 對偶表示帶來內積 (優化角度),$x_i^Tx_j$
以下表中介紹了 感知機 PLA 和 SVM 從線性可分到非線性可分的模型演變結果。性能
而在線性不可分的狀況下,若是讓模型可以變得線性可分?上面已經講了,從 2 個角度來理解。優化
咱們知道高維空間中的特徵比低維空間中的特徵更易線性可分,這是一個定理,是能夠證實的,這裏只須要知道就行。spa
那麼,咱們就能夠想到一個辦法,就是把在輸入空間中的特徵經過一個函數映射到高維空間。rem
假設輸入空間有一個點 $X=(x_1, x_2)$,是二維的,咱們經過一個函數 $Φ(X)$ 將其映射到三維空間 $Z=(x_1,x_2,(x_1-x_2)^2)$,從二維到三維空間中的表示爲:get
從另外一個角度來看,以前咱們已經推導出 SVM 的損失函數,Hard-Margin SVM 的對偶問題中,最終的優化問題只與 X 的內積有關,也便是支持向量有關。it
由此,咱們能夠將 X 的內積表示爲 $Φ(X)$ 的內積 $Φ(x_i)^TΦ(x_j)$。io
而咱們現實生活中,可能 $Φ(X)$ 並非上面舉例的三維或者更高維,而是無限維,那麼 的 $Φ(X)$ 將會很是難求。
換個角度思考,其實咱們關心的只是 $Φ(x_i)^TΦ(x_j)$ 的內積,並不關心 $Φ(X)$。有沒有一種方法能直接求出內積?答案是有的。
咱們能夠引入核函數 keynel function。
如上中的一個核函數,咱們能夠直接求出 X 的內積,避免在高維空間中求 $Φ(x_i)^TΦ(x_j)$。
針對核函數,咱們能夠總結出 3 點。
定理: 令 $χ$ 爲輸入空間,$k(⋅,⋅)$ 是定義在 $χ×χ$上的對稱函數,則 $k$ 是核函數當且僅當對於任意數據$D=x_1,x_2,⋯,x_m$,「核矩陣」 $K$ 老是半正定的:
定理代表,只要一個對稱函數所對應的核矩陣半正定,那麼它就能夠做爲核函數使用。事實上,對於一個半正定核矩陣,總能找到一個與之對應的映射 $ϕ(X)$。換言之,任何一個核函數都隱式定義了一個稱爲 「再生核希爾伯特空間」 的特徵空間。
經過前面的介紹,核函數的選擇,對於非線性支持向量機的性能相當重要。可是因爲咱們很難知道特徵映射的形式,因此致使咱們沒法選擇合適的核函數進行目標優化。因而 「核函數的選擇」 稱爲支持向量機的最大變數,咱們常見的核函數有如下幾種:
此外,還能夠經過函數組合獲得,例如:
對於非線性的狀況,SVM 的處理方法是選擇一個核函數 $κ(⋅,⋅)$,經過將數據映射到高維空間,來解決在原始空間中線性不可分的問題。因爲核函數的優良品質,這樣的非線性擴展在計算量上並無比原來複雜多少,這一點是很是可貴的。
固然,這要歸功於核方法——除了 SVM 以外,任何將計算表示爲數據點的內積的方法,均可以使用核方法進行非線性擴展。