常见核函数

这篇博文开始的例子就很好地揭示了核函数的简单原理,写得很好!

原地址:https://blog.csdn.net/zkq_1986/article/details/52448238

1 核函数K(kernel function)定义

核函数K(kernel function)就是指K(x, y) = <f(x), f(y)>,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常,m>>n)。<x, y>是x和y的内积(inner product)(也称点积(dot product))。

举个小小栗子。
令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);
令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;
令核函数 K(x, y) = (<x, y>)^2.
接下来,让我们带几个简单的数字进去看看是个什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:
f(x) = ( 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16) ;
f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;
<f(x), f(y)> = 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024
= 4900. 
如果我们用核函数呢?
K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.
就是这样!

所以现在你看出来了吧,kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决无限维空间无法计算的问题!因为有时f(·)会把n维空间映射到无限维空间去。

那么kernel在SVM究竟扮演着什么角色?
初学SVM时常常可能对kernel有一个误读,那就是误以为是kernel使得低维空间的点投射到高位空间后实现了线性可分。其实不然。这是把kernel和feature space transformation混为了一谈。(这个错误其实很蠢,只要你把SVM从头到尾认真推导一遍就不会犯我这个错。)

这里写图片描述

这里写图片描述 
我们成功地找到了那个分界线,这就是最直观的kernel啦! 
可能不太严谨,但是kernel大概就是这个意思,详细的数学定义楼上说的很好,就不赘述了。 
引用一句这门课的教授的话: 
“你在你的一生中可能会经历很多变故,可能会变成完全不同的另一个人,但是这个世界上只有一个你,我要怎样才能把不同的“你”分开呢?最直观的方法就是增加“时间”这个维度,虽然这个地球上只有一个你,这个你是不可分割的,但是“昨天在中国的你”和“今天在美国的你”在时间+空间这个维度却是可以被分割的。”

We know that everything in the world can be decomposed into the combination of the basic elements. For example, water is the combination of hydrogen and oxygen. Similarly, in mathematics, basis is used to represent various things in a simple and unified way.

In  space, we can use n independent vectors to represent any vector by linear combination. The n independent vectors can be viewed as a set of basis. There are infinite basis sets in  space. Among them, basis vectors that are orthogonal to each other are of special interests. For example,  is a special basis set with mutually orthogonal basis vectors in the same length, where eiei is a vector that has all zero entries except the iith entry which equals 1. 
The inner product operator measures the similarity between vectors. For two vectors x and y , the inner product is the projection of one vector to the other.

这里写图片描述

3. Kernel Function

A function  can be viewed as an infinite vector, then for a function with two independent variables , we can view it as an infinite matrix. Among them, if  and

for any function  , then   is symmetric and positive definite, in which case   is a kernel function.

这里写图片描述 
这里写图片描述 
Here are some commonly used kernels:

  • Polynomial kernel 
  • Gaussian radial basis kernel 
  • Sigmoid kernel 

3.1 补充知识

The hyperbolic functions are: 

Hyperbolic sine: 

Hyperbolic cosine: 

Hyperbolic tangent: 

4. Reproducing Kernel Hilbert Space

Treat  as a set of orthogonal basis and construct a Hilbert space . Any function or vector in the space can be represented as the linear combination of the basis. Suppose  we can denote  as an infinite vector in :  For another function , we have 

< f,g >

这里写图片描述 
这里写图片描述

5. A Simple Example

这里写图片描述

6 .

线性核函数 
这里写图片描述

这里写图片描述

这里写图片描述

二、现有的核函数统计如下:

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

贝叶斯核函数还没有用到过。




参考文献: 
[1] 机器学习里的kernel是指什么? - 算法 - 知乎.  http://www.zhihu.com/question/30371867 [2016-9-6] 
[2]  http://songcy.net/posts/story-of-basis-and-kernel-part-1/ 
[3]  http://songcy.net/posts/story-of-basis-and-kernel-part-2/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值