机器学习 Support Vector Machines 3

Optimal margin classifiers

前面我们讲过,对如下的原始的优化问题我们希望找到一个优化的边界分类器。


我们可以将约束条件改写成如下:

对于每一个训练样本,我们都有这样一个约束条件,而且从KKT条件我们知道,只有当训练样本的函数边界为1时,该训练样本的,我们看如下的一张图,其中的实线表示最大的边界分界线。

机器学习 Support Vector Machines 3

从图上可以看出,离分界线最近的点他们的边界最小,图上有三个点,分布在分界线两边的虚线上,因此,只有这三个—是非零的,这三个点称为 extbf{支持向量},这也说明为什么支持向量的数量只占总样本数的一小部分。这也是支持向量机的由来,这种分类器只会用到训练样本中的支持向量,其它的训练样本并不起作用。

我们继续往下看,因为之前我们讨论了这个优化问题的对偶形式,需要注意的关键一点是,我们将利用样本之间的内积来解决这个优化问题。
我们利用向量内积这一点,也正是稍后介绍kernel函数的关键。

我们对该优化问题建立拉格朗日表达式,我们可以得到:


我们先求出这个问题的对偶形式,我们要先求出

这意味着:

而对b的偏导数,我们有:

将w的偏导数式-(2)代入拉格朗日表达式式-(1),简化后可以得到:


由式-(3)可知,上式的最后一项为0,因此我们有,

上式是

原来的优化问题转化为对偶优化问题之后,我们要求的是参数

得到

从上式可以看出,当我们求出参数有作用,因此测试样本的预测值取决于支持向量与测试样本的内积。

Kernels

接下来,我们要介绍支持向量机中的kernel的概念,利用kernel,可以方便地处理高维甚至无穷多维的特征向量。我们先定义几个概念,我们称训练样本的原始数值为attributes (属性),而经过映射之后得到的新的数值称为features (特征),我们定义函数feature mapping (特征映射),特征映射就是将训练样本的原始数值映射到新的数值。

我们使用SVM的时候,可能不想使用训练样本的原始数值x,我们想利用一些新的特征就行了。

既然SVM的算法,可以表示所有的训练样本的内积


那么,之前我们算法中用到来学习。

现在,给定特征映射

现在,我们从另外一个稍微不同的角度来看这个kernel,直观上,如果的相似程度,或者说x,z的相似程度。

考虑到这一点,一个比较合理的kernel函数可以是高斯函数,


这个函数可以合理地估计x,z的相似度,当x,z比较靠近,则函数值为1,当x,z离得比较远,则值为0,在SVM中,这个称为gaussian kernel。一般来说,我们需要通过一些观察来确定给定的kernel是不是合理的kernel。

一个有效的kernel应该具备某些性质,现在假设k对于特征映射,这个矩阵称为kernel matrix

如果k是一个合理的kernel,那么,


从上式可以看出,矩阵K是半正定的,因此说,如果k是一个合理的kernel,则矩阵K是对称的半正定矩阵,Mercer定理给出了一个kernel是否合理的判断:

Marcer定理:假设kernel k满足映射关系 ,其对应的kernel 矩阵必须是对称半正定的。

将kernel应用到SVM,其好处是显而易见的,不过我们需要意识到,kernel的概念不仅仅可以用在SVM上,换句话说,如果一个学习算法需要用到输入向量的内积,即,那么这个算法就可以利用kernel,今后我们会介绍到的一些算法都可以利用kernel,这个可以称为kernel trick

参考文献

Andrew Ng, “Machine Learning”, Stanford University.

相关推荐