SVM-4-核函数

参考http://www.cnblogs.com/jerrylead

在SVM我们经常不是直接使用样本的原始属性(attribute),假如x是某样本的一个属性,我们经常用到类似 x2,x3 等。就像在线性回归问题中,当我们需要拟合出一个曲线时就可能用到 x,x2,x3 等。此时就相当于是把 x 映射到x,x2,x3(我们称它们为特征(features)),用 x,x2,x3 代替了 x 。我们用下式表示这种映射:

ϕ(x)=xx2x3

注:之所以映射,主要是因为:有时样本在当前维度不易分类,此时可以将其映射到更高的维度。比如上式由一维变成了三维

在SVM中,我们将使用映射后的特征,而不是最初的属性,因此,我们需要将前面 wTx+b 公式中 xϕ(x) 代替,内积从 <xi,x> <script type="math/tex" id="MathJax-Element-202"> </script> 映射到 <ϕ(xi),ϕ(x)> <script type="math/tex" id="MathJax-Element-203"><\phi (x^i), \phi (x)></script>。

这样对于任意的内积 <x,z> <script type="math/tex" id="MathJax-Element-204"> </script>,我们都将用 <ϕ(x),ϕ(z)> <script type="math/tex" id="MathJax-Element-205"><\phi(x),\phi(z)></script>代替。
下面定义核函数(Kernel):

K(x,z)=ϕ(x)Tϕ(z)

这样对于任意的内积 <x,z> <script type="math/tex" id="MathJax-Element-207"> </script>,我们可以用 K(x,y) 代替。有趣的是 Kx,z 的计算代价并不大,因为我们并不需要计算出 ϕ(x)
我们看下面的例子:
假设 x,z,Rn,:K(x,z)=(xTz)2
我们也可以写成下面的形式:
K(x,z)=(i=1nxizi)j=1nxjzj=i=1nj=1nxizixjzj=i,j=1n(xixj)(zizj)

这就是说,我们可以将 ni,j=1(xixj) 看作 ϕ(x) ,将 ni,j=1(zizj) 看作 ϕ(z)
因此,上式就等于: ϕ(x)Tϕ(z)
现在看一下映射函数( n=3 时),根据上面的公式,得到:
ϕ(x)=x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x3

显然,这里将 xϕ(x) 的时间复杂度是 n2 。而事实证明,我们并不需要求计算x的内积( ϕ(x) )或z的内积( ϕ(z) )去做映射,而只需要计算x与z的内积的平放( (xTz)2 )即可。
注:
1、这里是假设我们所做的映射 ϕ 是取x的内积,而此时刚好可以用 (xTz)2 来代替 ϕ(x)Tϕ(z) ,即此时可以使用核函数 K(x,z)=(xTz)2

再看一个核函数:

K(x,z)=(xTz+c)2=i,j=1n(xixj)(zizj)+i=1n(2cxi)(2czi)+c2

它对应的映射函数( n=3 时)是:
ϕ(x)=x1x1x1x2x1x3x2x1x2x2x2x3x3x1x3x2x3x32cx12cx22cx3c

更一般地,核函数 K(x,z)=(xTz+c)d 对应的映射后特征维度为 (n+dd)

下面让我们看一个与之前不同的核函数:
首先,考虑这样一个问题:我们一直在计算 ϕ(x)Tϕ(z) ,也就是两个向量的内积,回想一下余弦相似度
如果两个向量x,z的夹角越小,即它们越相似,则它们的内积越大,此时我们就会希望核函数越大;反之,我们就希望核函数越小。即核函数的大小反应了x,z的相似度。因此我们就可以选择下面的核函数:

K(x,z)=exp(||xz||22δ2)

我们可以用它的结果来表示x,z的相似度。若x和z大小越相近,该函数值越接近1,若x和z相差越大,该函数值越接近0。由于这个函数类似于高斯分布,因此称为高斯核函数,也叫做径向基函数(Radial Basis Function 简称 RBF)。它能够把原始特征映射到无穷维。
既然高斯核函数能够比较 x 和 z 的相似度,并映射到 0 到 1,回想 logistic 回归, sigmoid函数可以,因此还有 sigmoid 核函数等等。

注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用 SVM 学习出 w 和b,新来样本 x 的话,我们使用 x 来判断,如果值大于等于 1,那么是正类,小于等于是负类。在两者之间,认为无法确定。如果使用了核函数后, wTx+b 就变成了 wTϕ(x)+b ,是否先要找到 ϕ(x) ,然后再预测?答案肯定不是了,找 ϕ(x) 很麻烦,回想我们之前说过的:

wTx+b=(i=1mαiyixi)Tx+b=i=1mαiyi<xi,x>+b

我们只需要将 <xi,x> <script type="math/tex" id="MathJax-Element-239"> </script>替换成 K(xi,x) 即可,然后结果的判断同上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值