关闭

SVM学习笔记-核函数与非线性SVM

标签: SVM机器学习核函数和非线性的SV
265人阅读 评论(0) 收藏 举报
分类:

SVM学习笔记第三篇

核技术

回顾

上次讲到了SVM的对偶形式,这个对偶问题也是二次规划问题。所以可以使用二次规划的方法来解决。之所以要使用SVM的对偶形式,是因为它告诉了我们SVM背后的一些几何意义,例如,对偶的SVM问题的解中αn0所对应的那些点(zn,yn)就是我们想要找的支撑向量。另一方面,这个对偶问题在求解的时候好像几乎和我们所在的空间的维度没有关系,(经过复杂的特征转化之后的Z空间的维度d~一般来说是很大的)。但是实际上我们上一篇中讲到其实是有关系的, 隐藏在了我们使用二次规划时求解矩阵Q的过程中。我们今天的目标是要得到一个确实和Z空间的维度没有关系的SVM

我们的目标是要找一个不依赖于d~的SVM算法。

对偶的SVM

minαsubject to12αTQDα1TαyTα=0;αn0, for n=1,2,,N

该问题从变量的数量N和约束的数量N+1来看是和d~没有关系的,但是qn,m=ynymzTnzm是要在d~空间中做內积,即需要做长度为d~的两个向量z的內积运算。所以在这里如果d~很大的话,那么这将是我们求解SVM的一个瓶颈。

问题出现在:我们要在Z空间中做內积
这可以分为两个步骤:

  1. 将x做转换到z空间,z=Φ(x)
  2. 再在z空间中做內积

如果我们可以将这两个步骤合为一个的话,可能会算的快些。

例子:二次转换下快速计算內积的方法

二次多项式转换:

Φ2(x1,x2,,xd)=(1,x1,x2,,xd,x21,x1x2,.x1xd, x2x1,x22,,x2xd,,x2d)

这样原来在X空间中的一个样本的特征(x1,x2,x3)经过以上的二次转换就变为了如下在Z空间的向量(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)
考虑两个向量x,x,首先我们计算这两个向量经过特征转换之后的內积:
Φ2(x)TΦ2(x)=1+i=1dxixi+i=1Nj=1Nxixjxixj=1+i=1dxixi+i=1Nxixij=1Nxjxj=1+xTx+(xTx)(xTx)

既然这样,那么对于上述问题我们就可以先在X空间算內积,然后加1再加內积的平方就可以得到先做特征转化在做內积的结果。前者的复杂度为O(d),后者的复杂度为O(d2)

核函数

通过以上的操作我们完成了原来需要两步(先转换到Z空间,再在Z空间中做內积)才能得到的结果。即通过一个函数KΦ,作用与X空间中向量的內积就可以得到将X通过转换ΦZ空间中得到的向量然后做內积的结果。

KΦ(x,x)=Φ(x)TΦ(x)

我们把这样的函数称为是核函数, 直观上理解, 核函数就是将我们原来要做的两步:特征转化+高维空间中內积,合并为了一步:直接在低维空间中计算我们想要的结果。

有了核函数的定义之后,我们看看对于原来的对偶形式的SVM来说有什么用。

  • 计算二次项的系数Q:qn,m=ynymzTnzm=ynymK(xn,xm)
  • 计算b:
    b=yswTzs=ys(SV αnynzn)zs=ysSV αnyn(znzs)=ysSV αnynK(xn,xs)
  • 对于一个测试样本x,计算SVM的分类结果:
    gSVM(x)=sign(wTΦ(x)+b)=sign(SV αnynznΦ(x)+b)=sign(SV αnynK(xn,x)+b)

    这样我们所有需要在Z空间中的运算都被核函数取代了。

带有核函数的硬间隔支撑向量机算法

  1. 计算二次规划的中的二次项系数:qn,m=ynymK(xn,xm)
  2. 使用二次规划程序进行求解:αQP(QD,p,A,c)
  3. 找到一个支撑向量(xs,ys) 计算偏置值:b=ysSV αnynK(xn,xs)
  4. 得到支撑向量机,对新的样本x进行分类:gSVM(x)=sign(SV αnynK(xn,x)+b)

多项式核

二次转换的核函数

上一小节使用了一个特殊的二次多项式转化导出了一个核函数。

二次项转化 对应的核函数
Φ2(x)=(1,x1,x2,,xd,x21,,x2d) K(x,x)=1+xTx+(xTx)2
Φ2(x)=(1,2x1,2x2,,2xd,x21,,x2d) K(x,x)=(1+xTx)2
Φ2(x)=(1,2γx1,2γx2,,2γxd,γx21,,γx2d) K(x,x)=(1+γxTx)2

K(x,x)=(1+γxTx)2是更为常用的形式。那么K(x,x)=1+xTx+(xTx)2  K(x,x)=(1+γxTx)2有什么区别呢?相同的是它们都对应到了一个相同维度的空间;不同的是它们定义了不一样的內积运算,不同的內积代表不同的距离计算方法。不同的距离会影响到margin,所以使用不同的转换可能会得到不同的边界。

使用不同的核函数

这里写图片描述

可以看到分隔超平面不同,虽然都是二次曲线,并且支撑向量也不同。所以换核函数,就是换几何定义,这样margin的定义就会换掉。所以可能会得到不一样的结果。 所以我们要仔细的对很函数做选择。就像我们以前仔细的对特征转换做选择,但是现在特征转换的部分包含在核函数中,所以我们要仔细的对核函数做选择。

多项式核

K2(x,x)=(ζ+γxTx)2 withγ>0,ζ0
K3(x,x)=(ζ+γxTx)3 withγ>0,ζ0

KQ(x,x)=(ζ+γxTx)Q withγ>0,ζ0

SVM加上多项式核就得到了多项式SVM。现在我们就可以使用高次的转换,例如只是需要将Q设置为10,并且设置γ,ζ的取值。就可以得到一个10次的特征转化下SVM的结果。如下图:

这里写图片描述

如果线性的支撑向量机已经可以做的很好了,那么我们就没有必要再使用非线性的SVM,如果线性的效果不是很好,再使用对偶形式的支撑向量机,然后挑选合适的核函数。


高斯核

做无限维的特征转换

利用核函数我们是不是可以做无限多维的特征转化。
考虑一个特别的例子,原始的样本只有一个维度,另外考虑一个特别的函数如下:K(x,x)=exp((xx)2),我们想要得到的结果是K(x,x)其实是x,x的两个转换的內积, 即K(x,x)=Φ(x)Φ(x), 并且这个转换是无限维的。

K(x,x)=exp((xx)2)=exp(x2+2xx2x2)=exp(x2)exp(x2)exp(2xx)=exp(x2)exp(x2)exp(2xx)i=0(2xx)ii!=i=0exp(x2)exp((x)2)2ii!2ii!xi(x)i=i=0(exp(x2)2ii!xi) (exp((x)2)2ii!(x)i)=Φ(x)Φ(x)

我们可以得到:
Φ(x)=exp(x2)(1, 21!x, 222!x2.)

第三行到第四行的推到使用了泰勒公式。

到这里我们证明了,高斯函数中隐藏了一个无限维度的转换。也就说两个向量(这里我们推到的是一维的)xxK(x,x)运算(K(x,x)=exp((xx)2))的结果就是这两个向量分别做一个无限维度的转换Φ之后再做內积的结果。这样我们就可以把我们的特征映射到无限维。映射的方法是Φ(x)=exp(x2)(1, 21!x, 222!x2.),而在无限维中內积计算的方法就是K(x,x)=exp((xx)2)

更一般的情形,高斯核函数如下:

K(x,x)=exp(γ||xx||2) with γ>0

使用高斯核得到的SVM的分隔超平面如下:

gSVM(x)=sign(SVαnynexp(γ||xxn||2)+b

得到的分隔超平面是中心在Support Vector上的高斯函数的线性组合。所以上面的式子也被称为Radial Basis Function(RBF)

高斯核的表现

使用不同的高斯核(γ)的结果:

这里写图片描述

可以看到如果参数选择的不好的花,也有可能会overfit,虽然有large margin的保证。所以我们也需要认真的选择参数γ


核函数的选择

现在简要记录下各个Kernal的优劣势

线性的核

K1(x,x)=(0+1 xTx) 我们称之为线性核。实际上就是不做任何的转换。即K(x,x)=xTx2, 可是使用对偶的SVM,或者是原始的SVM来求解。
优势:

  • 简单,安全,应该是做SVM首先要尝试的方法。
  • 不适用对偶问题,所以不用计算Q矩阵。
  • 可解释性,w会告诉你每一个特征的权重。

劣势:

  • 如果数据不是线性可分的, 那么不可以使用。

多项式核

K(x,x)=(γ+ζxTx)Q

优势

  • 比起线性的SVM来说限制更少,线性的SVM做不了的事情,说不定通过一个二次转换,三次转换,十次转换就可以做的很好。
  • 通过参数Q可以带入主观的对于数据的先验的认识。

劣势

  • 当参数Q很大, 即你想要做很复杂的特征转换,这个时候会出现计算上的问题:

    • |γ+ζxTx|<1:K0
    • |γ+ζxTx|>1:Kbig
  • 有太多的参数需要指定(γ,ζ,Q)

通常用于比较小的Q。 如果需要的转换特别的低次的时候,例如说需要二次的转换或者是三次的转换,其实可以直接对Z空间进行展开,然后在使用线性的SVM来解原始问题通常是更好的, 尤其是在d~不是很大的情况下。

高斯核

K(x,x)=exp(γ||xx||2)

优势:

  • 能够应付非常复杂的数据,做出非常复杂的边界。
  • 只需要确定一个参数。

劣势

  • 可解释性差。
  • QD矩阵要花费大量的气力。
  • 参数选择失败的话会overfit

其他的核

可以说kernel代表的是xx转换之后在Z空间的相似性。

一个函数可以称之为核的必要条件是:

  • 对称性。
  • 矩阵K要是半正定的,其中的每一个元素是kij=K(xi,xj)

这两个条件其实不仅仅是必要条件,也是充分条件。 所以一个函数如果是核函数的话,就需要满足以上的两个条件,这两个条件也被称为是Mercerscondition

小结

首先提出了核技巧,将我们原来需要两步(先特征转换,再计算內积)才能做完的事情利用核函数可以简单的完成。然后介绍了多项式核和高斯核,其中高斯函数中包含了一个无限维的特征转换。最后对不同的Kernel做出了比较。 线性的SVM有比较高的效率,高斯的SVM可以找到比较复杂的边界线应对比较复杂的数据。
之前我们考虑的是要将数据绝对正确的分类(在转换之后的Z空间也要是线性可分的)。这样可能会造成一定的问题,比如说可能会去过拟合那些噪声。之后我们将讨论怎么解决这些问题。

参考

  • 林轩田机器学习技法
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:70990次
    • 积分:1441
    • 等级:
    • 排名:千里之外
    • 原创:75篇
    • 转载:0篇
    • 译文:0篇
    • 评论:48条
    最新评论