前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【分类战车SVM】第五话:核函数(哦,这实在太神奇了!)

【分类战车SVM】第五话:核函数(哦,这实在太神奇了!)

作者头像
数说君
发布2018-03-28 16:13:10
1.1K0
发布2018-03-28 16:13:10
举报
文章被收录于专栏:数说工作室数说工作室

分类战车SVM

(第五话:核函数)

查看本《分类战车SVM》系列的内容:

第一话:开题话

第二话:线性分类

第三话:最大间隔分类器

第四话:拉格朗日对偶问题(原来这么简单!)

第五话:核函数(哦,这太神奇了!)

第六话:SMO算法(像Smoke一样简单!)

附录:用Python做SVM模型


前段时间热映的《星际穿越》想必大家都看过,在这部烧脑大片中,主角库珀进入到了高维度空间,在那里,时间这个维度变成实体存在,人们可以像散步一样沿着时间这个维度来回穿梭。

那么高维空间到底是什么样的?

有人说高位空间里其实只有数学意义,在实际中无意义,是这样的吗?

又有人说高维空间里其实有更高级的生物,他们看我们,就像我们看在一个平面进行爬行的虫子一样。

还有人说,若有生物能掌握高维时空领域,便能获取穿越宇宙的奥秘,取得无可估量的神秘力量!

我们不去讨论这个玄妙的问题,也没有能力去讨论,但不管怎样,关于高维空间,至少有两点我们可以明确:

(1)至少,我们可以用数学来表示高维空间。很简单呀,

(x,y)是二维平面的一个点,那么(x,y,z,q)就是四维空间的一个点;

(2)至少,低维空间一些看起来无解的数学问题,我们可以给映射到高维,从高维的视角来想解决的办法。

关于这点,很多人不相信吧,这一集,我们要说的就是从高维空间里去解决一个低维的问题。更神奇的是,我们不仅要把一个无解的低维问题映射到高维去寻找办法,还可以用“核函数”这个东西,把解决办法再转到低维去处理。

哦~~这实在太神奇了!

先看下本文的大纲:

1.回顾

2.回到最初的问题里——如何进行预测?

3.非线性问题如何预测?——向高维时空祷告

4.核函数——在低维时空里解决

本集的内容其实也很简单:

首先回顾前面的内容,前面说到问题转化为拉格朗日对偶问题,下一步就可以用SMO高效优化算法进行参数的拟合了。

这里我们不接着讲如何使用SMO,而是假设已经用SMO拟合好了参数,现在要来预测,以及如何进行预测(即2.回到最初的问题里——如何进行预测?)。

然后第三部分(3.非线性问题如何预测?——向高维时空祷告),我们要对非线性的预测问题进行讨论,这个非线性的问题在二维时空是无解的,我们就映射到高维时空里,让高维时空里的神仙们给我们想办法,哪买,想出了办法又怎么办?

我们又不能开挂,接地气一点还是要回到低维空间去解决,那么就进入了第四部分(4.核函数——在低维时空里解决),核函数就是把神的旨意转化成人类语言的利器。


1. 回顾

用下面一张图来回顾前面的内容,

我们前面的内容可以凝结成上面那幅图,但是最后一步SMO高效优化算法,这个我们等等再说,我们就假设已经通过SMO法拟合好了参数,现在要用这个拟合好的SVM模型去预测了。

2. 回到最初的问题里——如何进行预测?

假设,我们通过SMO高效优化算法,得到了最优的ai们,那么我们也就可以知道W(

),这条线性分类器也就出来了,它是:

式子中< , >表示两个向量的内积。

(注意啊,我们还没有进行SMO,只是假设做了,然后得到了所有的)

我们就可以用它来对新点进行分类了(我靠,“假设做了”这么投机取巧的事情也能忍?——别急撒,下一集会说的,这里就当已经做了好不好?)。从这个公式可以看出,对于一个新点X,只需要计算它与训练数据点的内积即可。这一点,也是后面使用核函数进行非线性推广的前提,很重要。这也是我们为什么要先回到最初的问题的原因之一:

(1)预测新点X的类别时,只需要计算它与训练数据点的内积即可;

还有一个原因:

(2)在(1)中用到的训练数据点,其实也只是那些“支持向量”的点,即,只有“支持向量”的点会被用来进行新样本的预测;

我将用下面的这幅图进行说明:

3. 非线性问题如何预测?——向高维时空祷告

还是看上面那张图,在SMO这里我们先停下来,再从另一个角度来看看前面的问题。

第一话中我们提到过一个“非线性”的问题,当时我们给的例子是下面这张图,用线性分类器是分不开这两类样本的。

如果还不够极端,我们再举一个例子:

你很难用一条直线把红黑两类样本给分开,对不对?那怎么办?换个思路——谁说只能用直线的?我用一条二次曲线行不?

处于这条曲线的下方,则为叉叉,即红类;处于这条曲线上方,则为圆圈,即黑类——分开了!

刚才我们做了什么?

这样,我们就把原来的一维x映射到了三维(x2,x,C)。在“1.回到最初的问题里——如何进行预测?”里,我们阐明了预测模型的形式为:

此时X也要换成H(x)了,那么就变成:

4. 核函数——在低维时空里解决

核函数是干嘛的呢?

在计算的时候,它可以让x和z不用通过H()映射到高维空间再计算内积,而是直接在低维空间里计算了。

我们用K()表示核函数,那么核函数作用就是:

K(x,z)=<H(x),H(z)>

避开了X映射到H(X),Y映射到H(Y)这么一个过程。

有这么神吗?有的,给你举个例子就知道了:

在这个例子中,核函数在低维计算的结果完全等价于原问题:两个变量高维映射后的内积。这么一来,就避开了直接在高维空间中进行计算。那么问题来了,这个核函数是固定的吗?

答:不是的,核函数有很多种,根据问题和数据的不同选择相应的核函数,上面的核函数正好适用于例子中的H(x),一些核函数有:

多项式核:

上面例子中的核函数是多项式核的一个特例,即R=1/2,d=2。

线性核:

高斯核:

通过调控参数σ,高斯核具有相当的灵活性,也是使用最广泛的核函数之一。

对于这么多核函数,只要满足了Mercer定理,都可以作为核函数,但是有些核函数效果很好,有些比较差,总体来看,高斯核是不会出太大偏差的一种。

那么什么是Mercer定理?简单来说,

K是有效的核函数 => 核函数矩阵K是对称半正定的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数说工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分类战车SVM
  • (第五话:核函数)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档