核函数(Kernels)web
考虑咱们最初在“线性回归”中提出的问题,特征是房子的面积x,这里的x是实数,结果y是房子的价格。算法
假设咱们从样本点的分布中看到x和y符合3次曲线,那么咱们但愿使用x的三次多项式来逼近这些样本点。api
那么首先须要将特征x扩展到三维,而后寻找特征和结果之间的模型。咱们将这种特征变换称做特征映射(feature mapping)。映射函数称做
,在这个例子中app
咱们但愿将获得的特征映射后的特征应用于SVM分类,而不是最初的特征。这样,咱们须要将前面公式中的内积从
,映射到
。ide
至于为何须要映射后的特征而不是最初的特征来参与计算,上面提到的(为了更好地拟合)是其中一个缘由,另外的一个重要缘由是样例可能存在线性不可分的状况,而将特征映射到高维空间后,每每就可分了。(在《数据挖掘导论》Pang-Ning Tan等人著的《支持向量机》那一章有个很好的例子说明)函数
将核函数形式化定义,若是原始特征内积是,映射后为
,那么定义核函数(Kernel)为
到这里,咱们能够得出结论,若是要实现该节开头的效果,只需先计算
,而后计算
便可,然而这种计算方式是很是低效的。学习
好比最初的特征是n维的,咱们将其映射到维,而后再计算,这样须要
的时间。那么咱们能不能想办法减小计算时间呢?ui
先看一个例子,假设x和z都是n维的,展开后,得3d
这个时候发现咱们能够只计算原始特征x和z内积的平方(时间复杂度是O(n)),就等价与计算映射后特征的内积。也就是说咱们不须要花时间了。cdn
如今看一下映射函数(n=3时),根据上面的公式,获得
也就是说核函数只能在选择这样的
做为映射函数时才可以等价于映射后特征的内积。
再看一个核函数
对应的映射函数(n=3时)是
更通常地,核函数对应的映射后特征维度为
。
因为计算的是内积,咱们能够想到IR中的余弦类似度,若是x和z向量夹角越小,那么核函数值越大,反之,越小。所以,核函数值是和
的类似度。
再看另一个核函数
这时,若是x和z很相近(),那么核函数值为1,若是x和z相差很大(
),那么核函数值约等于0。
因为这个函数相似于高斯分布,所以称为高斯核函数,也叫作径向基函数(Radial Basis Function 简称RBF)。它可以把原始特征映射到无穷维。
既然高斯核函数可以比较x和z的类似度,并映射到0到1,回想logistic回归,sigmoid函数能够,所以还有sigmoid核函数等等。
下面有张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数。
来自Eric Xing的slides
注意,使用核函数后,怎么分类新来的样本呢?线性的时候咱们使用SVM学习出w和b,新来样本x的话,咱们使用来判断,若是值大于等于1,那么是正类,小于等因而负类。
在二者之间,认为没法肯定。若是使用了核函数后,就变成了
,是否先要找到
,而后再预测?答案确定不是了,找
很麻烦,回想咱们以前说过的
只需将替换成
,而后值的判断同上。
核函数有效性断定
问题:给定一个函数K,咱们可否使用K来替代计算,也就说,是否可以找出一个
,使得对于全部的x和z,都有
?
好比给出了,是否可以认为K是一个有效的核函数。
下面来解决这个问题,给定m个训练样本,每个
对应一个特征向量。
那么,咱们能够将任意两个和
带入K中,计算获得
。I能够从1到m,j能够从1到m,这样能够计算出m*m的核函数矩阵(Kernel Matrix)。
为了方便,咱们将核函数矩阵和都使用K来表示。
若是假设K是有效地核函数,那么根据核函数定义
可见,矩阵K应该是个对称阵。让咱们得出一个更强的结论,首先使用符号来表示映射函数
的第k维属性值。那么对于任意向量z,得
最后一步和前面计算时相似。从这个公式咱们能够看出,若是K是个有效的核函数(即
和
等价),那么,在训练集上获得的核函数矩阵K应该是半正定的(
)
这样咱们获得一个核函数的必要条件:
K是有效的核函数 ==> 核函数矩阵K是对称半正定的。
可幸的是,这个条件也是充分的,由Mercer定理来表达。
Mercer定理:
若是函数K是上的映射(也就是从两个n维向量映射到实数域)。那么若是K是一个有效核函数(也称为Mercer核函数),那么当且仅当对于训练样例
,其相应的核函数矩阵是对称半正定的。
Mercer定理代表为了证实K是有效的核函数,那么咱们不用去寻找,而只须要在训练集上求出各个
,而后判断矩阵K是不是半正定(使用左上角主子式大于等于零等方法)便可。
许多其余的教科书在Mercer定理证实过程当中使用了范数和再生希尔伯特空间等概念,但在特征是n维的状况下,这里给出的证实是等价的。
核函数不只仅用在SVM上,但凡在一个模型后算法中出现了,咱们均可以常使用
去替换,这可能可以很好地改善咱们的算法。