前面我們知道,SVM本質是一個線性分類器,如果數據本身線性不可分,那SVM就不能直接應用了;雖然不能直接應用,但還是可以先把數據變得基本線性可分再應用SVM;那如何把數據從線性不可分變成基本線性可分的狀態呢?答案便是進行空間轉換,把數據從一個空間轉換到另一個空間;一個最自然的想法便是低維空間到高維空間的轉換,既然在低維空間線性不可分,那便轉換到高維空間,也許就能基本線性可分了;如下圖所示,一維空間中的紅點[-0.6, -0.5, 0.5, 0.6]與藍點[-1.6, -1.5, 1.5, 1.6]線性不可分,通過空間轉換函數將其轉換到二維空間,便線性可分了。
一般實際應用中,數據基本是線性不可分的,所以可先將數據進行空間轉換再應用SVM,故此,SVM優化目標
便變成了
求解過程會出現內積計算,如果空間轉換後的維度很高,那計算量便會很大;
以二階多項式做空間轉換函數爲例,,的計算複雜度便是;
由可以看到,這個計算是包含兩步的,先進行空間轉換再進行內積,所以如果能把空間轉換和計算內積這兩個步驟合併起來,即找到一個在原空間計算的函數使得,計算便會簡化,稱這樣的函數爲核函數,也即kernel;
還是以上面的二階多項式爲例,
,可以發現計算複雜度變成了,也就是說,以二階多項式做空間轉換函數時有對應的kernel,。
所以雖然理論上,我們可以使用任意空間轉換函數來使得數據基本線性可分,但考慮到實際效率,空間轉換函數的選取往往比較慎重,即選用的空間轉換函數要有對應的kernel。
下面講列舉幾個常用的空間轉換函數與其對應的kernel
多項式空間轉換函數
Polynomial Kernel的優點是階數Q可以靈活設置,相比linear kernel限制更少,更貼近實際樣本分佈;缺點是當Q很大時,K的數值範圍波動很大,而且參數個數較多,難以選擇合適的值。
高斯空間轉換函數
Gaussian Kernel的優點是邊界更加複雜多樣,能最準確地區分數據樣本,數值計算K值波動較小,而且只有一個參數,容易選擇;缺點是由於特徵轉換到無限維度中,w沒有求解出來,計算速度要低於linear kernel,而且可能會發生過擬合。