核函數(Kernels)web
考慮咱們最初在「線性迴歸」中提出的問題,特徵是房子的面積x,這裏的x是實數,結果y是房子的價格。算法
假設咱們從樣本點的分佈中看到x和y符合3次曲線,那麼咱們但願使用x的三次多項式來逼近這些樣本點。api
那麼首先須要將特徵x擴展到三維,而後尋找特徵和結果之間的模型。咱們將這種特徵變換稱做特徵映射(feature mapping)。映射函數稱做,在這個例子中app
咱們但願將獲得的特徵映射後的特徵應用於SVM分類,而不是最初的特徵。這樣,咱們須要將前面公式中的內積從,映射到。ide
至於爲何須要映射後的特徵而不是最初的特徵來參與計算,上面提到的(爲了更好地擬合)是其中一個緣由,另外的一個重要緣由是樣例可能存在線性不可分的狀況,而將特徵映射到高維空間後,每每就可分了。(在《數據挖掘導論》Pang-Ning Tan等人著的《支持向量機》那一章有個很好的例子說明)函數
將核函數形式化定義,若是原始特徵內積是,映射後爲,那麼定義核函數(Kernel)爲到這裏,咱們能夠得出結論,若是要實現該節開頭的效果,只需先計算,而後計算便可,然而這種計算方式是很是低效的。學習
好比最初的特徵是n維的,咱們將其映射到維,而後再計算,這樣須要的時間。那麼咱們能不能想辦法減小計算時間呢?ui
先看一個例子,假設x和z都是n維的,展開後,得3d
這個時候發現咱們能夠只計算原始特徵x和z內積的平方(時間複雜度是O(n)),就等價與計算映射後特徵的內積。也就是說咱們不須要花時間了。cdn
如今看一下映射函數(n=3時),根據上面的公式,獲得
也就是說核函數只能在選擇這樣的做爲映射函數時纔可以等價於映射後特徵的內積。
再看一個核函數
對應的映射函數(n=3時)是
更通常地,核函數對應的映射後特徵維度爲。
因爲計算的是內積,咱們能夠想到IR中的餘弦類似度,若是x和z向量夾角越小,那麼核函數值越大,反之,越小。所以,核函數值是和的類似度。
再看另一個核函數
這時,若是x和z很相近(),那麼核函數值爲1,若是x和z相差很大(),那麼核函數值約等於0。
因爲這個函數相似於高斯分佈,所以稱爲高斯核函數,也叫作徑向基函數(Radial Basis Function 簡稱RBF)。它可以把原始特徵映射到無窮維。
既然高斯核函數可以比較x和z的類似度,並映射到0到1,回想logistic迴歸,sigmoid函數能夠,所以還有sigmoid核函數等等。
下面有張圖說明在低維線性不可分時,映射到高維後就可分了,使用高斯核函數。
來自Eric Xing的slides
注意,使用核函數後,怎麼分類新來的樣本呢?線性的時候咱們使用SVM學習出w和b,新來樣本x的話,咱們使用來判斷,若是值大於等於1,那麼是正類,小於等因而負類。
在二者之間,認爲沒法肯定。若是使用了核函數後,就變成了,是否先要找到,而後再預測?答案確定不是了,找很麻煩,回想咱們以前說過的
只需將替換成,而後值的判斷同上。
核函數有效性斷定
問題:給定一個函數K,咱們可否使用K來替代計算,也就說,是否可以找出一個,使得對於全部的x和z,都有?
好比給出了,是否可以認爲K是一個有效的核函數。
下面來解決這個問題,給定m個訓練樣本,每個對應一個特徵向量。
那麼,咱們能夠將任意兩個和帶入K中,計算獲得。I能夠從1到m,j能夠從1到m,這樣能夠計算出m*m的核函數矩陣(Kernel Matrix)。
爲了方便,咱們將核函數矩陣和都使用K來表示。
若是假設K是有效地核函數,那麼根據核函數定義
可見,矩陣K應該是個對稱陣。讓咱們得出一個更強的結論,首先使用符號來表示映射函數的第k維屬性值。那麼對於任意向量z,得
最後一步和前面計算時相似。從這個公式咱們能夠看出,若是K是個有效的核函數(即和等價),那麼,在訓練集上獲得的核函數矩陣K應該是半正定的()
這樣咱們獲得一個核函數的必要條件:
K是有效的核函數 ==> 核函數矩陣K是對稱半正定的。
可幸的是,這個條件也是充分的,由Mercer定理來表達。
Mercer定理:
若是函數K是上的映射(也就是從兩個n維向量映射到實數域)。那麼若是K是一個有效核函數(也稱爲Mercer核函數),那麼當且僅當對於訓練樣例,其相應的核函數矩陣是對稱半正定的。
Mercer定理代表爲了證實K是有效的核函數,那麼咱們不用去尋找,而只須要在訓練集上求出各個,而後判斷矩陣K是不是半正定(使用左上角主子式大於等於零等方法)便可。
許多其餘的教科書在Mercer定理證實過程當中使用了範數和再生希爾伯特空間等概念,但在特徵是n維的狀況下,這裏給出的證實是等價的。
核函數不只僅用在SVM上,但凡在一個模型後算法中出現了,咱們均可以常使用去替換,這可能可以很好地改善咱們的算法。