在機器學習中,我們提供的數據不一定都是完全線性可分的,很多情況下會存在線性不可分,可是我們需要處理成線性可分,所以我們可以採用特徵變換或者核函數的形式,把數據投影到別的空間。數據在A空間不可分,投影到B空間就可能會線性可分,B空間的維度一般會高於A空間的維度。
1.一般情況下,我們考慮將數據投影到別的空間,比如採用多項式。假設x的維度d,如果投影到別的空間,維度會急劇增大,造成維度災難。維度比較高,在求解過程中就會存在問題,比如你在求解SVM的時候,存在不同元素之間的內積,如果投影過去變成10000維,那麼計算內積就要10000次,在繼續增大的話可能導致無法計算。使得計算效率十分低下。很多情況下無法計算。
2.爲了解決上面的這個問題,我們採用的思路不是先投影,而是把投影和內積和在一起計算,稱爲kernel function(核函數)。計算核函數來替代其他的計算。
以下是幾種常用的核函數表示:
線性核(Linear Kernel)
多項式核(Polynomial Kernel)
徑向基核函數(Radial Basis Function)
也叫高斯核(Gaussian Kernel),因爲可以看成如下核函數的領一個種形式:
徑向基函數是指取值僅僅依賴於特定點距離的實值函數,也就是。任意一個滿足特性的函數 Φ都叫做徑向量函數,標準的一般使用歐氏距離,儘管其他距離函數也是可以的。所以另外兩個比較常用的核函數,冪指數核,拉普拉斯核也屬於徑向基核函數。此外不太常用的徑向基核還有ANOVA核,二次有理核,多元二次核,逆多元二次核。
注意:高斯核函數的變換是無限維的,因爲你用泰勒展開就可以知道。
冪指數核(Exponential Kernel)
拉普拉斯核(Laplacian Kernel)
ANOVA核(ANOVA Kernel)
二次有理核(Rational Quadratic Kernel)
多元二次核(Multiquadric Kernel)
逆多元二次核(Inverse Multiquadric Kernel)
另外一個簡單實用的是Sigmoid核(Sigmoid Kernel)
以上幾種是比較常用的,大部分在SVM,SVM-light以及RankSVM中可用參數直接設置。還有其他一些不常用的,如小波核,貝葉斯核,可以需要通過代碼自己指定。(引用:http://blog.csdn.net/qq_27231343/article/details/51817866)
冪指數核(Exponential Kernel)
不同kernel function的對比:
線性:簡單,安全,首先嚐試.求解速度快速.線性的好處很容易看出機器如何分類的,並且也知道權重,也可以輕易的計算出支持向量.不過是有限的.
多項式:比線性寬鬆,比線性的限制少,可以解決的問題更多一點,線性沒法解決的這個可以解決.不過計算核函數的值比較難計算,一個數字的n次方會比較難計算,求解二次規劃會有難度.還有就是超參數有點多,比較難選擇.所以這個一般用的時候就是次方比較小的時候.
高斯核函數:就是限制更少,維度是無限維度,可以做出複雜的邊界,數值計算的困難度低一點,超參數只有一個,也稍微簡單點,無法計算出w,需要利用核函數計算結果.求解對偶問題時候比線性慢.參數沒選好會有過擬合的可能性.小心使用,參數選擇小心.