支持向量机(SVM):基本原理

转载自:http://www.wangxianfeng.name/2012/10/svm-basic-theory/

线性可分支持向量机与间隔最大化

给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为

以及相应的分类决策函数

称为线性可分支持向量机。

间隔最大化涉及到函数间隔和几个间隔的概念,下面首先对它们进行介绍。

函数间隔和几何间隔(Function Margin & Geometric Margin)

我们可以用一个点距离超平面的远近表示分类预测的置信程度,如下图所示,A、B、C表示三个样本,均在分离超平面正类一侧,点C距离超平面较远,就比较确信预测是正确的。

在分离超平面确定的情况下,可以用

表示点xi距离超平面的远近,而

的符号与类标记yi的符号是否一致可以表示分类是否正确,所以可以用

表示分类的正确性和确信度,这就是超平面(w,b)关于样本点(x,y)的函数间隔。

而超平面关于整个训练数据集T的函数间隔为超平面(w,b)关于训练集T中所有样本点(xi,yi)函数间隔的最小值,即

虽然函数间隔可以表示分类预测的正确性和确信度,但是选择分类超平面时,只有函数间隔还是不够的,因为只要成比例的改变w和b,超平面并没有改变,而函数间隔却会成比例的改变。因此,我们可以对分离超平面的法向量w加上某些约束,如||w||=1,使函数间隔确定化,这就是所谓的几何间隔。

对于给定的训练集T和超平面(w,b),定义超平面(w,b)关于样本点(xi,yi)的几何间隔为

而超平面关于整个训练数据集T的函数间隔为超平面(w,b)关于训练集T中所有样本点(xi,yi)几何间隔的最小值,即

从函数间隔和几何间隔的定义可知,函数间隔和几何间隔有以下关系:

如果||w||等于1,则函数间隔和几何间隔相等,如果超平面参数w和b成比例的改变,则函数间隔也成比例改变,而几何间隔不变。

间隔最大化

支持向量机学习的基本思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分得训练数据集而言,线性可分分离超平面有无穷多个,但是几个间隔最大的分离超平面是唯一的。(这里的间隔最大化也称为硬间隔最大,与训练数据集近似可分时软间隔最大化相对应)。间隔最大化意味着以充分大的确信度对训练数据进行分类,也就是说不仅将正负实例点进行分开,而且对离超平面较近的实例点也有足够大的确信度将它们分开,这样的超平面对未知的新实例也有较好的分类预测能力。

求解几何间隔最大化的分离超平面,等价于以下约束条件下的最优化问题:

即我们希望最大化超平面(w,b)关于训练数据集的几何间隔γ,并且超平面(w,b)关于每个训练样本点的几何间隔至少为γ。

考虑到函数间隔和几何间隔的关系,上述约束条件下的最优化问题也可以改写成

此外,上式中函数间隔取值并不影响最优化问题的解,因此我们可以令函数间隔等于1,带入上式得到下面的线性可分支持向量机学习的最优化问题:

如果求出了上述约束最优化问题的解w,b,那么就可以得到最大间隔分离超平面wx+b=0及分类决策函数f(x)=sign(wx+b),即线性可分支持向量机模型。

支持向量和间隔边界

在线性可分得情况下,训练数据集中的样本点与分离超平面距离最近的样本点的实例称为支持向量(Support Vector),它是使约束条件等号成立的点,也就是

对于yi=+1的正例,支持向量在超平面H1上

对于yi=-1的负例,支持向量在超平面H2上

下图中,在H1和H2上的点就是支持向量,H1和H2相互平行,并且没有实例点落在它们中间,分离超平面位于H1和H2形成一条长带的中间。长带的宽带(H1和H2之间的距离)称为间隔,H1和H2称为间隔边界,间隔的大小依赖于超平面的法向量w,等于2/||w||。

在决定分离超平面时只有支持向量起作用,而不依赖于其他实例点。如果移动支持向量将改变所求的解,但是如果在间隔边界以外移动其它实例点,则不影响所求的解。由于支持向量在确定分离超平面中起着决定性的作用,所以将这种分离模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要”训练样本确定。

简单的例子

已知一个训练集如下图所示,其正例点是x1=(3,3)T,x2=(4,3)T,负例点是x3=(1,1)T,试求最大间隔分离超平面。

按照前述,求解能够正确划分训练数据集并且几何间隔最大的分离超平面等价于根据训练集构造约束最优化问题:

该最优化问题的解w1=w2=0.5,b=-2。因此最大间隔分离超平面为

支持向量为

线性支持向量机与软间隔最大化

线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为这时约束最优化问题的不等式约束并不能都成立。如何将其扩展到线性不可分问题?

对于不是线性可分的训练数据集,通常情况下是由于存在一些异常点(Outlier),将这些异常点剔除以后,剩下大部分的样本点组成的集合是线性可分的。

线性不可分意味着某些样本点不能满足函数间隔大于等于1的约束条件。为了解决这个问题,可以对每个样本点(xi,yi)引入一个松弛变量ξi>=0,使函数间隔大于等于1。同时,对每个松弛变量支付一个代价ξi。这样目标函数和约束条件变为

其中C>0,为惩罚参数,一般由应用问题决定,C值大时对误分类的惩罚增大,C值小时对误分类的惩罚减小。最小化目标函数意味着间隔尽可能大,而同时误分类点的个数尽可能少,C是调和二者的系数。相对于线性可分支持向量机的硬间隔最大化,它也成为软间隔最大化。

非线性支持向量机与核函数

非线性可分问题是指通过利用非线性模型才能很好地进行分类的问题,如下图所示,无法找到一条直线(线性模型)将正负样本点正确分开,但可以用一条椭圆曲线(非线性模型)将它们正确分开。

当分类问题是非线性时,线性可分支持向量机和支持向量机就不能很有效的应对了,这时可以使用非线性支持向量机,它的主要特点是应用了核技巧(Kernel Trick)。

非线性问题往往不容易求解,所以希望能用线性分类问题的方法解决这个问题。采用的方法就是进行一个非线性变换,将非线性问题转换为线性问题,通过求解变换后的线性问题求解非线性问题。

对于上面的例子,通过变换将上图中的椭圆转换为下图的直线,将非线性分类问题转化为线性分类问题。

定义从原空间到新空间上的变换:

原空间中的点转化为新空间中的点:

原空间中的椭圆变换成新空间中的直线:

上面的例子说明,用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间,然后在新空间中用线性分类学习方法从训练数据集中学习分类模型。

你可能感兴趣的:(机器学习,SVM)