大纲
上节课我们主要介绍了SVM的对偶形式,即dual SVM。Dual SVM也是一个二次规划问题,可以用QP来进行求解。之所以要推导SVM的对偶形式是因为:首先,它展示了SVM的几何意义;然后,从计算上,求解过程“好像”与所在维度
d̂
无关,规避了
d̂
很大时难以求解的情况。但是,上节课的最后,我们也提到dual SVM的计算过程其实跟
d̂
还是有关系的。那么,能不能完全摆脱对
d̂
的依赖,从而减少SVM计算量呢?这就是我们本节课所要讲的主要内容。
Kernel Trick
1 Dual SVM Revisited
我们在计算 zTnzm 的时候,分为两步
1.进行特征转换计算 ϕ(xn) , ϕ(xm)
2然后计算 ϕ(xn) 与 ϕ(xm) 的内积
这种先转换再计算内积的方式,必然会引入 d̂ 参数,从而在 d̂ 很大的时候影响计算速度。那么,若把这两个步骤联合起来,是否可以有效地减小计算量,提高计算速度呢?
2 Fast Inner Product for Φ2
让我们来看一个二阶多项式转换的例子
我们可以发现,我们可以通过一定形式的转换,把计算复杂度从 O(d̂ ) ,降低到 O(d) ,虽然这只是个别例子,但它让我们看到了减少计算复杂度的希望
3 Kernel: Transform + Inner Product
我们把合并特征转换和计算内积这两个步骤的操作叫做Kernel Function,用大写字母K表示。比如上面这个二阶多项式的例子
有了Kernel Function之后,我们看它是如何在SVM中发挥作用的
qn,m=ynymzTnzm=ynymK(xn,xm) ,我们可以通过计算 K(xn,xm) ,降低复杂度。
b=ys−wTzs=ys−(∑Nn=1αnynzn)Tzs=ys−∑Nn=1αnyn(K(xn,xs)) ,这样b的计算复杂度就与 d̂ 无关了
gsvm=sign(wTϕ(x)+b)=sign(∑Nn=1αnyn(K(xn,x))+b) ,这样我们的所求的函数就与 d̂ 无关了
核技巧就是利用kernel function来避免计算过程中受d̂ 的影响,从而提高运算速度。
4 Kernel SVM with QP
通过引入Kernel function,我们可以把SVM算法改造成以下形式,并进行时间复杂度分析
Kernel SVM通过SV来得到最佳分类面,并且通过Kernel function来避免计算过程中受到 d̂ 的影响,从而提高了运算速度
Polynomial Kernel
1 General Poly-2 Kernel
比较一下,第一种 ϕ2(x) (蓝色标记)和第三种 ϕ2(x) (绿色标记)从某种角度来说是一样的,因为都是二次转换,对应到同一个z空间。但是,它们系数不同,内积就会有差异,那么就代表有不同的距离,最终可能会得到不同的SVM margin。所以,系数不同,可能会得到不同的SVM分界线。通常情况下,第三种 ϕ2(x) (绿色标记)简单一些,更加常用。
2 Poly-2 Kernels in Action
不同的核对应不同的SVs和maigin.从而最佳分离超平面也不同
3 General Polynomial Kernel
更为一般的,我们可以导出Q次多项式的核函数
使用高阶的多项式
可以尽可能的将数据点分开,因为有最大margin的保证,减少过拟合的风险
因为使用了核技巧,所以可以大大减少计算量
4 Special Case: Linear Kernel
实践中,我们可以先尝试liner kernel.然后慢慢的增加复杂度
Gaussian Kernel
1 Kernel of Infinite Dimensional Transform
接下来我们可以考虑一种将特征映射到无限维,而不会带来多余的计算量的核函数
根据上面的公式推导,我们可以看到,通过高斯核函数,我们确实把特征映射到了无限维
2 Hypothesis of Gaussian SVM
通过上式可以看出, gSVM 有n个高斯函数线性组合而成,其中n是SV的个数。而且,每个高斯函数的中心都是对应的SV。
3 Gaussian SVM in Action
从图中可以看出,当 γ 比较小的时候,分类线比较光滑,当 γ 越来越大的时候,分类线变得越来越复杂和扭曲,直到最后,分类线变成一个个独立的小区域,像小岛一样将每个样本单独包起来了。为什么会出现这种区别呢?这是因为γ越大,其对应的高斯核函数越尖瘦,那么有限个高斯核函数的线性组合就比较离散,分类效果并不好。所以,SVM也会出现过拟合现象, γ 的正确选择尤为重要,不能太大。
Comparison of Kernels
1 Linear Kernel
Linear Kernel的优点是计算简单、快速,可以直接使用QP快速得到参数值,而且从视觉上分类效果非常直观,便于理解;缺点是如果数据不是线性可分的情况,Linear Kernel就不能使用了。
2 Polynomial Kernel
olynomial Kernel的优点是阶数Q可以灵活设置,相比linear kernel限制更少,更贴近实际样本分布;缺点是当Q很大时,K的数值范围波动很大,而且参数个数较多,难以选择合适的值。
3 Gaussian Kernel
Gaussian Kernel的优点是边界更加复杂多样,能最准确地区分数据样本,数值计算K值波动较小,而且只有一个参数,容易选择;缺点是由于特征转换到无限维度中,w没有求解出来,计算速度要低于linear kernel,而且可能会发生过拟合。