机器学习笔记之核函数

基本概念

核函数定义:
这里写图片描述
核函数:是映射关系的内积,映射函数本身仅仅是一种映射关系,并没有增加维度的特性,不过可以利用核函数的特性,构造可以增加维度的核函数,这通常是我们希望的。
例如这样一个图,数据集不是线性可分的:
这里写图片描述
该数据集在二维空间中,每个数据点都可用一个二维向量(x1,x2)’来表示(单引号’表示转置)。我们可以用一个椭圆形状的超平面在该2维空间中对数据集进行分类,我们写出椭圆的一般方程:
这里写图片描述
如果我们令:
这里写图片描述
你会发现,2维向量x被映射成另一个5维向量z后,分类超平面是一个线性超平面,数据点变得线性可分!也即是下面的变换:
这里写图片描述
也就是说,数据集在二维空间中线性不可分,若想实现线性可分,须把该数据集映射到一个5维空间中。
下图为效果图
这里写图片描述
结论:

在SVM的应用中,如果数据点在原空间中不是线性可分的,理想的做法是找到一个映射函数把数据映射到高维空间中,然后再进行分类。但是,映射后的目标空间往往是很高维甚至是无限维的,我们需要找到一个函数来代替求高维空间中向量内积的运算,我们命名它为核函数。一般的做法都是选择常用的核函数来使用,当然,你也可以自己构造核函数,前提是要满足Mercer条件

举例理解核函数

用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,想象一下,我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数:
这里写图片描述
注意向量的右上角有个 ’ 哦。它能够将原问题变得可分。式中的 w’和x’都是2000维的向量,只不过w’是定值,而x’是变量(好吧,严格说来这个函数是2001维的,哈哈),现在我们的输入呢,是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x’,然后求这个变换后的向量x’与向量w’的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。

你发现了什么?我们其实只关心那个高维空间里内积的值,那个值算出来了,分类结果就算出来了。而从理论上说, x’是经由x变换来的,因此广义上可以把它叫做x的函数(有一个x,就确定了一个x’,对吧,确定不出第二个),而w’是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w 和x的值,就有一个确定的f(x’)值与其对应。这让我们幻想,是否能有这样一种函数K(w,x),他接受低维空间的输入值,却能算出高维空间的内积值<w’,x’>

如果有这样的函数,那么当给了一个低维空间的输入x以后,
这里写图片描述
这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了(再次提醒,这回的g(x)就不是线性函数啦,因为你不能保证K(w,x)这个表达式里的x次数不高于1哦)。

万幸的是,这样的K(w,x)确实存在(发现凡是我们人类能解决的问题,大都是巧得不能再巧,特殊得不能再特殊的问题,总是恰好有些能投机取巧的地方才能解决,由此感到人类的渺小),它被称作核函数(核,kernel),而且还不止一个,事实上,只要是满足了Mercer条件的函数,都可以作为核函数。

常用的核函数

核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。
什么样的函数才可以叫核函数?
这里写图片描述

线性核函数

这里写图片描述
线性核,主要用于线性可分的情况,但线性内核的适用场景很多,很多线性可分,甚至线性不可分的数据集,使用线性的效果往往比非线性的要好。尤其是在数据集很大,且特征很多,或是特征远大于数据集时,线性内核便往往能够取得很不错的效果。且其相对于其他非线性内核,训练时要快的多。

多项式核函数

这里写图片描述
多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。通常d=2的多项式内核在用来特征选择的时候非常有用。

高斯核函数(RBF)

这里写图片描述
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。

sigmoid核函数

这里写图片描述
α可以视为一个scaling 参数,常数C则是shifting参数。sigmoid内核起源于神经网络,activation函数使用的也是sigmoid function,而每个节点的数据向量也是线性权重组合。使用sigmoid内核的SVM模型等价于一个两层感知机。

核函数的选取原则

在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:

  • 如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
  • 如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
  • 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

参考:
https://www.cnblogs.com/xingshansi/p/6767980.html
https://www.jianshu.com/p/70426f1a468e
https://blog.csdn.net/qll125596718/article/details/6908480
https://blog.csdn.net/wuyanxue/article/details/79642758

  • 14
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值