SVM中核函数的理解

这篇文章是阅读JULY大神支持向量机通俗导论(理解SVM的三层境界)的一点学习笔记。 
在JULY大神原文中,对核函数解释的时候,点和点的坐标表示混用了”X”这个字母,从而为理解带来了不便。于是自己经过一些验算和重写之后,有了这一学习笔记。


我们知道,核函数的提出是在解决SVM在将低维线性不可分数据映射成高位线性可分时提出来的,于是我们直接从此开始。 
对于下图(来源于导论原文)的两类数据 
这里写图片描述 
我们可以用一个圆将它们区分开,这个二维上的点坐标为(p,q)(p,q)于是,圆我们可以用一个二次方程表示: 

a1p+a2p2+a3q+a4q2+a5pq+a6=0a1p+a2p2+a3q+a4q2+a5pq+a6=0

根据这一方程的形式,我们构造一个五维空间,其上点与二维平面的映射关系为 
(Z1,Z2,Z3,Z4,Z5)=(p,p2,q,q2,pq)(1.1)(1.1)(Z1,Z2,Z3,Z4,Z5)=(p,p2,q,q2,pq)

于是原二次方程即变为: 
i=15aiZi+a6=0∑i=15aiZi+a6=0

αZ+a6=0即αZ+a6=0

即一个超平面方程,通过SVM知识我们知道,这个超平面正是在五维空间上线性划分两类数据的超平面。 
那么是否对于式子,
f(x)=i=1naiyi<x1,x2>+bf(x)=∑i=1naiyi<x1,x2>+b

将其映射为
f(x)=i=1naiyi<ϕ(x1),ϕ(x2)>+b(1.2)(1.2)f(x)=∑i=1naiyi<ϕ(x1),ϕ(x2)>+b

是否可以对已知的非线性数据,找一个映射 ϕ()ϕ()  一股脑将数据映射到高维空间,于是就能根据限制条件求出 aiai
其实不行, ϕ()ϕ() 这个映射,随着原像的维数增长,像的维数会爆炸性增长,自然 ϕ()ϕ() 也会变得很庞大,所以不好求。 
但是,我们不能退缩,要想出来办法。 
我么思考式子1.2,我们是先 映射 点积 ,我们能否找到一个函数 K(x1,x2)K(x1,x2) 其操作获得的结果和 <ϕ(x1),ϕ(x2)><ϕ(x1),ϕ(x2)> 结果一致,这样就不用映射,可以直接用 x1x2x1和x2 来求得,这样就不用寻找复杂的 ϕ()ϕ() 了。 
下面我们就找这样一个 K(x1,x2)K(x1,x2) 。 
还是考虑二维平面上的点 x1(p1,q2),x2(p1,q2)x1(p1,q2),x2(p1,q2) ,及上文中式子1.1的映射我们有: 
ϕ(x1)=(p1,p21,q1,q21,p1q1)ϕ(x1)=(p1,p12,q1,q12,p1q1)

ϕ(x2)=(p2,p22,q2,q22,p2q2)ϕ(x2)=(p2,p22,q2,q22,p2q2)

所以有:
<ϕ(x1),ϕ(x2)>=p1p2+p21p22+q1q2+q21q22+p1p2q1q2(1.3)(1.3)<ϕ(x1),ϕ(x2)>=p1p2+p12p22+q1q2+q12q22+p1p2q1q2

同时我们计算: 
(<x1,x2>+1)2=2p1p2+p21p22+2q1q2+q21q22+2p1p2q1q2+1(1.4)(1.4)(<x1,x2>+1)2=2p1p2+p12p22+2q1q2+q12q22+2p1p2q1q2+1

对比发现式子1.3和1.4在形式上是很相似的。 
所以我们猜想, (<x1,x2>+1)2(<x1,x2>+1)2 是否等于某一映射 ϕ2()ϕ2() 所对应的 <ϕ2(x1),ϕ2(x2)><ϕ2(x1),ϕ2(x2)> 。 
答案是,这个 ϕ2()ϕ2() 是有的,而且 
ϕ2()=>(2p,p2,2q,q2,2pq,1)ϕ2()=>(2p,p2,2q,q2,2pq,1)

一般化的说,其实只要满足形式上的一致性,总能找到这样一个 ϕ()ϕ() 存在。即, x1,x2x1,x2 经过 K(x1,x2)K(x1,x2) 之后得到的值正是 x1,x2x1,x2 经过某映射后内积的值,这样就不用费力去求 ϕ()ϕ() 就可获得数据点在高维的内积了。 
K(x1,x2)我们称K(x1,x2)为核函数。

引用JULY大神的一句话

核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就是避免了直接在高维空间的复杂计算。

支持向量机(SVM)号称可以在保证经验风险固定较小的前提下,尽量最小化置信范围.其方法是在一个特征空间(好像要是Hilbert空间)上,找出划分两个点集的最优超平面,即使得两个点集沿该平面间隙最大.刚好落在这个间隙边上的向量叫做支持向量.这样的最大化据说就可以和置信范围最小化等价.VC维在这样的过程中是如何发生微妙变化的我还不太清楚.在两个点集不能用超平面完全划分的时候也有与此相适应的算法.推导显示求这样一个超平面,等价于求一个约束二次规划问题.
 
还有一个令人庆幸的事实是:如果只要求训练这样的超平面并对以后的数据做划分.SVM并不需要知道样例在特征空间中的向量表达或者甚至不需要知道特征空间的维数.它只需要知道任意两个样例映射到此空间后向量的内积.而这样的内积可以在样例(训练集或测试集中的)被映射成某个不可琢磨的特征空间中的向量之前被计算出来,完成这样计算的函数叫核函数.即使样例到特征空间的映射关系都不知道,只要该核函数满足伟大的Mercer定理,这样的特征空间就总能存在,SVM就能工作.

猜你喜欢

转载自blog.csdn.net/qq_33485434/article/details/79966266