原帖:https://blog.csdn.net/wsj998689aa/article/details/47027365
首先,再對核方法的思想進行描述,核函數的思想是一個偉大的想法,它工作簡練巧妙的映射,解決了高維空間中數據量龐大的問題,在機器學習中是對算法進行非線性改進的利器。如下,如果在原空間中,給定的樣本數據X是線性不可分的,那么如果我們能夠將數據映射到高維空間中,即
那么在高維空間中,樣本數據很有可能線性可分,這個特點可以用下圖做一個很好的說明:
如左圖,紅色部分的點為一類數據,黑色部分的點為另一類,在一維空間中,你不可能通過一刀切將兩類數據分開,至少需要兩刀。OK,這就說明數據分布是非線性的,我們采用高維映射,當然了,例子中只是映射到了二維空間,但已經足夠說明問題了,在右圖中,完全可以通過沿着X軸方向的一刀切將兩類數據分開,說明在二維空間中,數據已經變成線性可分的了。
這個時候,我們就可以采用很多已有的線性算法對數據進行處理,但是問題來了,映射函數具體形式是什么?這個問題的答案是,根本不需要知道映射函數的具體形式,直接對高維數據進行操作吧!
比如說最經典的PCA算法,這部分內容其實是對前一篇帖子的回顧(http://blog.csdn.net/wsj998689aa/article/details/40398777)
PCA在原始空間中的數學模型如下所示:
在高維空間中的形式就是:
我們對其進行簡單的變換,我們知道,一個空間中的基向量完全可以用所有的訓練樣本線性表示出來,即
見證神奇的時刻到了,上式帶入上上式,就可以得到如下形式:
如果你再在等號兩側同時左乘一個東西,就會變成如下形式:
核方法的價值在於如下等式成立,
請注意,這個公式表達的意思只是高維空間中向量的內積等於原空間中向量之間的核函數值,根核函數的具體形式沒有一毛錢的關系。我們繼續,一個樣本是這樣的,那么矩陣化的形式如下:
那么PCA就變成了如下形式:
看到沒,核方法借用核函數的性質,將高維映射成功的抹掉了。那么什么樣的函數才可以被稱作為核函數呢?這里大牛們給出了一個著名的定理,稱作mercer定理。
Mercer 定理:任何半正定的函數都可以作為核函數。所謂半正定的函數f(xi,xj),是指擁有訓練數據集合(x1,x2,...xn),我們定義一個矩陣的元素aij = f(xi,xj),這個矩陣式n*n的,如果這個矩陣是半正定的,那么f(xi,xj)就稱為半正定的函數。
請注意,這個mercer定理不是核函數必要條件,只是一個充分條件,即還有不滿足mercer定理的函數也可以是核函數。所謂半正定指的就是核矩陣K的特征值均為非負。
本文將遇到的核函數進行收集整理,分享給大家。
1. Linear Kernel
線性核是最簡單的核函數,核函數的數學公式如下:
如果我們將線性核函數應用在KPCA中,我們會發現,推導之后和原始PCA算法一模一樣,很多童鞋借此說“kernel is shit!!!”,這是不對的,這只是線性核函數偶爾會出現等價的形式罷了。
2. Polynomial Kernel
多項式核實一種非標准核函數,它非常適合於正交歸一化后的數據,其具體形式如下:
這個核函數是比較好用的,就是參數比較多,但是還算穩定。
3. Gaussian Kernel
這里說一種經典的魯棒徑向基核,即高斯核函數,魯棒徑向基核對於數據中的噪音有着較好的抗干擾能力,其參數決定了函數作用范圍,超過了這個范圍,數據的作用就“基本消失”。高斯核函數是這一族核函數的優秀代表,也是必須嘗試的核函數,其數學形式如下:
雖然被廣泛使用,但是這個核函數的性能對參數十分敏感,以至於有一大把的文獻專門對這種核函數展開研究,同樣,高斯核函數也有了很多的變種,如指數核,拉普拉斯核等。
4. Exponential Kernel
指數核函數就是高斯核函數的變種,它僅僅是將向量之間的L2距離調整為L1距離,這樣改動會對參數的依賴性降低,但是適用范圍相對狹窄。其數學形式如下:
5. Laplacian Kernel
拉普拉斯核完全等價於指數核,唯一的區別在於前者對參數的敏感性降低,也是一種徑向基核函數。
6. ANOVA Kernel
ANOVA 核也屬於徑向基核函數一族,其適用於多維回歸問題,數學形式如下:
7. Sigmoid Kernel
Sigmoid 核來源於神經網絡,現在已經大量應用於深度學習,是當今機器學習的寵兒,它是S型的,所以被用作於“激活函數”。關於這個函數的性質可以說好幾篇文獻,大家可以隨便找一篇深度學習的文章看看。
8. Rational Quadratic Kernel
二次有理核完完全全是作為高斯核的替代品出現,如果你覺得高斯核函數很耗時,那么不妨嘗試一下這個核函數,順便說一下,這個核函數作用域雖廣,但是對參數十分敏感,慎用!!!!
9. Multiquadric Kernel
多元二次核可以替代二次有理核,它是一種非正定核函數。
10. Inverse Multiquadric Kernel
顧名思義,逆多元二次核來源於多元二次核,這個核函數我沒有用過,但是據說這個基於這個核函數的算法,不會遇到核相關矩陣奇異的情況。
11. Circular Kernel
這個核函數沒有用過,其數學形式如下所示:
12. Spherical Kernel
這個核函數是上一個的簡化版,形式如下所示
13. Wave Kernel
這個核函數沒有用過,其適用於語音處理場景。
14. Triangular Kernel
三角核函數感覺就是多元二次核的特例,數學公式如下:
15. Log Kernel
對數核一般在圖像分割上經常被使用,數學形式如下:
16. Spline Kernel
17. Bessel Kernel
18. Cauchy Kernel
柯西核來源於神奇的柯西分布,與柯西分布相似,函數曲線上有一個長長的尾巴,說明這個核函數的定義域很廣泛,言外之意,其可應用於原始維度很高的數據上。
19. Chi-Square Kernel
卡方核,這是我最近在使用的核函數,讓我欲哭無淚,在多個數據集上都沒有用,竟然比原始算法還要差勁,不知道為什么文獻作者首推這個核函數,其來源於卡方分布,數學形式如下:
它存在着如下變種:
其實就是上式減去一項得到的產物,這個核函數基於的特征不能夠帶有賦值,否則性能會急劇下降,如果特征有負數,那么就用下面這個形式:
20. Histogram Intersection Kernel
直方圖交叉核在圖像分類里面經常用到,比如說人臉識別,適用於圖像的直方圖特征,例如extended LBP特征其數學形式如下,形式非常的簡單
21. Generalized Histogram Intersection
顧名思義,廣義直方圖交叉核就是上述核函數的拓展,形式如下:
22. Generalized T-Student Kernel
TS核屬於mercer核,其數學形式如下,這個核也是經常被使用的
23. Bayesian Kernel
貝葉斯核函數還沒有用到過。