一文讀懂支持向量積核函數(附公式)

核函數(Kernels)web

考慮咱們最初在「線性迴歸」中提出的問題,特徵是房子的面積x,這裏的x是實數,結果y是房子的價格。算法

假設咱們從樣本點的分佈中看到x和y符合3次曲線,那麼咱們但願使用x的三次多項式來逼近這些樣本點。api

那麼首先須要將特徵x擴展到三維640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而後尋找特徵和結果之間的模型。咱們將這種特徵變換稱做特徵映射(feature mapping)。映射函數稱做640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,在這個例子中app

e55feaffa674c0cbcdee72c1e2ac5b4f3fc9f5a2

咱們但願將獲得的特徵映射後的特徵應用於SVM分類,而不是最初的特徵。這樣,咱們須要將前面640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=公式中的內積從640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,映射到640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=ide

至於爲何須要映射後的特徵而不是最初的特徵來參與計算,上面提到的(爲了更好地擬合)是其中一個緣由,另外的一個重要緣由是樣例可能存在線性不可分的狀況,而將特徵映射到高維空間後,每每就可分了。(在《數據挖掘導論》Pang-Ning Tan等人著的《支持向量機》那一章有個很好的例子說明)函數

將核函數形式化定義,若是原始特徵內積是640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,映射後爲640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,那麼定義核函數(Kernel)爲a31a3e012e87b5d0060b897ed99b34a0439d38b9到這裏,咱們能夠得出結論,若是要實現該節開頭的效果,只需先計算640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而後計算640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=便可,然而這種計算方式是很是低效的。學習

好比最初的特徵是n維的,咱們將其映射到640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=維,而後再計算,這樣須要640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=的時間。那麼咱們能不能想辦法減小計算時間呢?ui

先看一個例子,假設x和z都是n維的,0159d6db56fd7e4c11a1f42da9f5d7ecba40b910展開後,得3d

3a3f7cdc7eb523f491b8365bd96909e51b85c1ec

這個時候發現咱們能夠只計算原始特徵x和z內積的平方(時間複雜度是O(n)),就等價與計算映射後特徵的內積。也就是說咱們不須要花640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=時間了。cdn

如今看一下映射函數(n=3時),根據上面的公式,獲得

 

也就是說核函數640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=只能在選擇這樣的640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=做爲映射函數時纔可以等價於映射後特徵的內積。

 

再看一個核函數

 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

 

對應的映射函數(n=3時)是

373a9cd5ec542f9d705bec692cde494dd4df3e82

更通常地,核函數640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=對應的映射後特徵維度爲640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

因爲計算的是內積,咱們能夠想到IR中的餘弦類似度,若是x和z向量夾角越小,那麼核函數值越大,反之,越小。所以,核函數值是640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=的類似度。

再看另一個核函數

012fec49b6031534bc2c680c50dd7555d5d09953

這時,若是x和z很相近(640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=),那麼核函數值爲1,若是x和z相差很大(640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=),那麼核函數值約等於0。

因爲這個函數相似於高斯分佈,所以稱爲高斯核函數,也叫作徑向基函數(Radial Basis Function 簡稱RBF)。它可以把原始特徵映射到無窮維。

既然高斯核函數可以比較x和z的類似度,並映射到0到1,回想logistic迴歸,sigmoid函數能夠,所以還有sigmoid核函數等等。

下面有張圖說明在低維線性不可分時,映射到高維後就可分了,使用高斯核函數。

9da50795e36aaca7bd5c4ae5c3d759c931df6b88

來自Eric Xing的slides

注意,使用核函數後,怎麼分類新來的樣本呢?線性的時候咱們使用SVM學習出w和b,新來樣本x的話,咱們使用640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=來判斷,若是值大於等於1,那麼是正類,小於等因而負類。

在二者之間,認爲沒法肯定。若是使用了核函數後,640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=就變成了640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,是否先要找到640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而後再預測?答案確定不是了,找640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=很麻煩,回想咱們以前說過的

9096869e9bab9d3faa496df0ddde921f703c7bb5

只需將640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=替換成640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而後值的判斷同上。

核函數有效性斷定

問題:給定一個函數K,咱們可否使用K來替代計算640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,也就說,是否可以找出一個640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,使得對於全部的x和z,都有640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

好比給出了640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,是否可以認爲K是一個有效的核函數。

下面來解決這個問題,給定m個訓練樣本640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,每個640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=對應一個特徵向量。

那麼,咱們能夠將任意兩個640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=帶入K中,計算獲得640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=。I能夠從1到m,j能夠從1到m,這樣能夠計算出m*m的核函數矩陣(Kernel Matrix)。

爲了方便,咱們將核函數矩陣和640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=都使用K來表示。

若是假設K是有效地核函數,那麼根據核函數定義

7b02d7b1af420de33379c0dbfcae52e2df0f637f

可見,矩陣K應該是個對稱陣。讓咱們得出一個更強的結論,首先使用符號640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=來表示映射函數640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=的第k維屬性值。那麼對於任意向量z,得

f1fd78b973c6593edcfbb5574c6ddae2a4fa7705

最後一步和前面計算640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=時相似。從這個公式咱們能夠看出,若是K是個有效的核函數(即640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=等價),那麼,在訓練集上獲得的核函數矩陣K應該是半正定的(640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

這樣咱們獲得一個核函數的必要條件:

K是有效的核函數 ==> 核函數矩陣K是對稱半正定的。

可幸的是,這個條件也是充分的,由Mercer定理來表達。

Mercer定理:

若是函數K是640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=上的映射(也就是從兩個n維向量映射到實數域)。那麼若是K是一個有效核函數(也稱爲Mercer核函數),那麼當且僅當對於訓練樣例640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,其相應的核函數矩陣是對稱半正定的。

Mercer定理代表爲了證實K是有效的核函數,那麼咱們不用去尋找640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而只須要在訓練集上求出各個640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,而後判斷矩陣K是不是半正定(使用左上角主子式大於等於零等方法)便可。

許多其餘的教科書在Mercer定理證實過程當中使用了640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=範數和再生希爾伯特空間等概念,但在特徵是n維的狀況下,這裏給出的證實是等價的。

核函數不只僅用在SVM上,但凡在一個模型後算法中出現了640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=,咱們均可以常使用640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=去替換,這可能可以很好地改善咱們的算法。

閱讀原文http://click.aliyun.com/m/41341/

相關文章
相關標籤/搜索