1. 程式人生 > >核函式的深入淺出講解

核函式的深入淺出講解

前段時間熱映的《星際穿越》想必大家都看過,在這部燒腦大片中,主角庫珀進入到了高維度空間,在那裡,時間這個維度變成實體存在,人們可以像散步一樣沿著時間這個維度來回穿梭。

那麼高維空間到底是什麼樣的?

有人說高位空間裡其實只有數學意義,在實際中無意義,是這樣的嗎?

又有人說高維空間裡其實有更高階的生物,他們看我們,就像我們看在一個平面進行爬行的蟲子一樣。

還有人說,若有生物能掌握高維時空領域,便能獲取穿越宇宙的奧祕,取得無可估量的神祕力量!

我們不去討論這個玄妙的問題,也沒有能力去討論,但不管怎樣,關於高維空間,至少有兩點我們可以明確:

(1)至少,我們可以用數學來表示高維空間。很簡單呀,

(x,y)是二維平面的一個點,那麼(x,y,z,q)就是四維空間的一個點;

(2)至少,低維空間一些看起來無解的數學問題,我們可以給對映到高維,從高維的視角來想解決的辦法。

關於這點,很多人不相信吧,這一集,我們要說的就是從高維空間裡去解決一個低維的問題。更神奇的是,我們不僅要把一個無解的低維問題對映到高維去尋找辦法,還可以用“核函式”這個東西,把解決辦法再轉到低維去處理。

哦~~這實在太神奇了!

先看下本文的大綱:

1.回顧 

2.回到最初的問題裡——如何進行預測? 

3.非線性問題如何預測?——向高維時空禱告 

4.核函式——在低維時空裡解決

本集的內容其實也很簡單:

首先回顧前面的內容,前面說到問題轉化為拉格朗日對偶問題,下一步就可以用SMO高效優化演算法進行引數的擬合了。

這裡我們不接著講如何使用SMO,而是假設已經用SMO擬合好了引數,現在要來預測,以及如何進行預測(即2.回到最初的問題裡——如何進行預測?)。

然後第三部分(3.非線性問題如何預測?——向高維時空禱告),我們要對非線性的預測問題進行討論,這個非線性的問題在二維時空是無解的,我們就對映到高維時空裡,讓高維時空裡的神仙們給我們想辦法,哪買,想出了辦法又怎麼辦?

我們又不能開掛,接地氣一點還是要回到低維空間去解決,那麼就進入了第四部分(4.核函式——在低維時空裡解決),核函式就是把神的旨意轉化成人類語言的利器。

1. 回顧

用下面一張圖來回顧前面的內容,

我們前面的內容可以凝結成上面那幅圖,但是最後一步SMO高效優化演算法,這個我們等等再說,我們就假設已經通過SMO法擬合好了引數,現在要用這個擬合好的SVM模型去預測了。

2. 回到最初的問題裡——如何進行預測?

假設,我們通過SMO高效優化演算法,得到了最優的ai們,那麼我們也就可以知道W(

),這條線性分類器也就出來了,它是:

式子中< , >表示兩個向量的內積。

(注意啊,我們還沒有進行SMO,只是假設做了,然後得到了所有的)

我們就可以用它來對新點進行分類了(我靠,“假設做了”這麼投機取巧的事情也能忍?——別急撒,下一集會說的,這裡就當已經做了好不好?)。從這個公式可以看出,對於一個新點X,只需要計算它與訓練資料點的內積即可。這一點,也是後面使用核函式進行非線性推廣的前提,很重要。這也是我們為什麼要先回到最初的問題的原因之一:

(1 )預測新點X 的類別時,只需要計算它與訓練資料點的內積即可;

還有一個原因:

(2 )在(1 )中用到的訓練資料點,其實也只是那些“支援向量”的點,即,只有“支援向量”的點會被用來進行新樣本的預測;

我將用下面的這幅圖進行說明:

3. 非線性問題如何預測? ——向高維時空禱告

還是看上面那張圖,在SMO這裡我們先停下來,再從另一個角度來看看前面的問題。

第一話中我們提到過一個“非線性”的問題,當時我們給的例子是下面這張圖,用線性分類器是分不開這兩類樣本的。

如果還不夠極端,我們再舉一個例子:

你很難用一條直線把紅黑兩類樣本給分開,對不對?那怎麼辦?換個思路——誰說只能用直線的?我用一條二次曲線行不?

處於這條曲線的下方,則為叉叉,即紅類;處於這條曲線上方,則為圓圈,即黑類——分開了!

剛才我們做了什麼?

這樣,我們就把原來的一維x對映到了三維(x2,x,C)。在“1.回到最初的問題裡——如何進行預測?”裡,我們闡明瞭預測模型的形式為:

此時X也要換成H(x)了,那麼就變成:

4. 核函式 ——在低維時空裡解決

核函式是幹嘛的呢?

在計算的時候,它可以讓x和z不用通過H()對映到高維空間再計算內積,而是直接在低維空間裡計算了。

我們用K()表示核函式,那麼核函式作用就是:

K(x,z)=

避開了X對映到H(X),Y對映到H(Y)這麼一個過程。

有這麼神嗎?有的,給你舉個例子就知道了:

在這個例子中,核函式在低維計算的結果完全等價於原問題:兩個變數高維對映後的內積。這麼一來,就避開了直接在高維空間中進行計算。那麼問題來了,這個核函式是固定的嗎?

答:不是的,核函式有很多種,根據問題和資料的不同選擇相應的核函式,上面的核函式正好適用於例子中的H(x),一些核函式有:

多項式核:

上面例子中的核函式是多項式核的一個特例,即R=1/2,d=2。

線性核:

高斯核:

通過調控引數σ,高斯核具有相當的靈活性,也是使用最廣泛的核函式之一。

對於這麼多核函式,只要滿足了Mercer定理,都可以作為核函式,但是有些核函式效果很好,有些比較差,總體來看,高斯核是不會出太大偏差的一種。

那麼什麼是Mercer定理?簡單來說,

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