SVM原理介绍与Python实现(三):核函数的引出

三、核函数引出

1、为什么要用核函数?

我们上面其实通过解w和b已经得到了一个线性可分的分类器了,而且已经提到之所以用对偶形式求解就是因为
对偶形式可以引入核函数解决线性不可分的情况。
核函数解决线性不可分问题的原理就是将数据映射到高维的空间去,解决原始空间的线性不可分问题。
举个例子:
比如我们有一个一维的数据分布是如下图的样子,你想把它用一个直线来分开,你发现是不可能的,因为他们是间
隔的。所以不论你画在哪,比如绿色竖线,都不可能把两个类分开。

但是如果我们把这个使用一个最简单的方式映射到二维中,x->(x, x^2)。比如:
0->(0,0)
1->(1,1)
2->(2,4)
这时候就线性可分了。

这就是一个简单的升维的方法,而核函数就是给我们提供了这样的一个机会。简单来说,在SVM中核函数kernel的
基本目的就是映射

2、核函数和映射的关系

我们将原始的分类函数
通过一种映射变为下面的形式
和b都是已知的了就只要求找到这映射就可以解决问题了。但事实并不是这样的,虽然我们可以求解
以得到正确答案了,但是这样计算的代价实在是太大了。 对一个二维空间做映射,选择的新空间是原始空间的所有
阶和二阶的组合,得到了五个维度;如果原始空间是三维,那么我们会得到 19 维的新空间,这个数目是呈爆炸性
增长的。所以不是单单靠映射这么简单。
现在我们其实还没说到核函数,那么核函数怎么和映射联系到一起呢?
其实有很多核函数,它们经过转换就能够得到内积的形式,可以简化计算。例如对于这样一种核函数
,假设x和z都是n维的数据, 我们把它展开可以得到:
可以看出,只要变换一下就得到了内积的形式,而我们发现用核函数很简单,只要相乘再平方就好了。你们可以用最
简单的n = 3,看看就会发现如果用直接映射,得到的映射函数如下
再加上两个映射函数相乘,你会发现计算量还是很大的,但是用核函数就很简单了。

应该注意的是:在SVM之前核函数就已经存在了,只不过在SVM的求解过程中正好碰到了向量内积和非线性的问题,
正好用到了核函数的方法。其实很多地方都能够用到核函数,比如逻辑回归、降维等等。
这里超知乎上的一段:核函数不仅可以建立点和点映射(如SVM) ,还可以建立一个分布和点的映射,通过比较两
组数据映射点的距离,可以判断两组数据是不是同一个分布。参见谷歌 kernel enbedding of distributions。

3、核函数的种类

我们通常使用的核函数有几种(其实核函数是可以构造的):
(1)多项式核,上面的例子就是个简单的多项式核,这个核的映射按道理是能写
出来的,但是没什么必要。映射后的维度为,m为原始维度,这是个排列组合问题就不说了有兴趣自己找找。
(2)高斯核,也叫做径向基函数(Radial Basis Function 简称RBF)
,这个核是大部分比较常用的核,可以将原始空间映射到无限维的空间中。通过调节
就能够调节高斯核,有很大的灵活性。

4、利用核函数分类样本

(1)线性可分时候就是求得w和b ,对于新样本 带入 ,值大于1就是正类,小于等于-1是负类
(2)线性不可分就利用核函数,将内积变为核函数形式就可以了,判断方法还是和上面一样。

5、总结

核函数的作用就是,在遇到线性不可分的时候要向高维度映射达到线性可分,但是维度很高的时候求解内积就变得非常困难,但是利用核函数就可以在低维度上运算达到高纬度的效果。注意核函数是个很复杂的理论。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值