對核函式(kernel)最通俗易懂的理解
機器學習演算法中,不論是感知機還是支援向量機,在面對非線性問題時,往往都會用到一個名為“核函式”的技巧。那麼到底什麼是核函式呢?是否真的如聽起來這樣難以理解呢?
核函式:是對映關係 的內積,對映函式本身僅僅是一種對映關係,並沒有增加維度的特性,不過可以利用核函式的特性,構造可以增加維度的核函式,這通常是我們希望的。
二維對映到三維,區分就更容易了,這是聚類、分類常用核函式的原因。為什麼PCA這樣一個降維演算法也用核函式呢?
左圖為原資料,右圖為對映到三維的資料,可以看出:同樣是降到1維,先通過Kernel對映到(Kernel是對映的內積,不要弄亂了)三維,再投影到1維,就容易分離開,這就是Kernel在PCA降維中的應用,本質還是對原有資料增加維度。
下面是李航的《統計學習方法》中對於核函式的定義:
要注意,核函式和對映沒有關係。核函式只是用來計算對映到高維空間之後的內積的一種簡便方法。
一般英文文獻對Kernel有兩種提法,一是Kernel Function,二是Kernel Trick。從Trick一詞中就可以看出,這只是一種運算技巧而已,不涉及什麼高深莫測的東西。
具體巧在哪裡呢?我們如果想進行原本就線性不可分的資料集進行分割,那麼選項一是容忍錯誤分類,即引入Soft Margin;選項二是我們可以對Input Space做Feature Expansion,把資料集對映到高維中去,形成了Feature Space。我們幾乎可以認為(引用Caltech的課堂用語“We are safe but not certain
舉一個知乎上霍華德的例子。假設我們的任務是要預測那些微博可以上微博熱搜榜。有兩個離散特徵,一個代表某個微博裡有“鹿晗”,一個代表某個微博裡有“關曉彤”。
兩個特徵單獨看熱度都一般,此時我們用二階多項式核方法:
這個核函式可以把二維空間投射到三維空間,展開之後是:
這樣就把二維特徵變成了三維,多了一維 ,代表著某條微博裡鹿晗和關曉彤同時出現。
結果大家都知道了,鹿晗關曉彤同時出現的那條微博超級火,把新浪伺服器都擠爆了。
現實生活中有很多非線性非常強的特徵 而核方法能夠捕捉它們。核技巧(kernel trick)的作用,一句話概括的話,就是
在機器學習中常用的核函式,一般有這麼幾類,也就是LibSVM中自帶的這幾類:
1) 線性:
2) 多項式:
3) Radial basis function:
4) Sigmoid:
我舉的例子是多項式核函式中的情況。
在實用中,很多使用者都是盲目地試驗各種核函式,並掃描其中的引數,選擇效果最好的。至於什麼樣的核函式適用於什麼樣的問題,大多數人都不懂。很不幸,我也屬於這大多數人,所以如果有人對這個問題有理論性的理解,還請指教。
參考文章: