您的位置:首页 > 其它

机器学习第五篇(stanford大学公开课学习笔记) —支持向量机(Support Vector Machine)

2014-08-10 08:57 274 查看
一、综述

支持向量机(SVM)是一种可训练的机器学习算法,Vapnik 等人在多年研究统计学理论的基础上对线性分类器提出了另一种设计原则,SVM的主包括以下两个基本思想:

1)该方法首先针对线性可分的情况进行分析,对于线性不可分的情况,通过非线性映射的方法将低维线性不可分的样本转化为高维线性可分的样本,从而在高维特征空间对样本进行线性区分。

2)基于结构风险最小化理论,在特征空间上建构最优分割平面,使得学习器得到全局最优解。并且在整个样本空间的期望风险以某种概率满足一定的上界限值。

对比复杂的推导过程,SVM的思想其实很简单,它不像logistic回归等算法一样去尽力拟合样本点,它只是去搜寻一个能够很好分割样本的超平面,为了衡量分割超平面对于样本分割的效果,引入了几何间隔和函数间隔的概念。SVM大部分推导过程都是为了解决目标函数的最优化。在解决最优化的过程中,发现W可以由特征向量内积来表示,进而引入了核函数的概念,核函数将低维样本空间映射到高维,解决了样本在低维空间线性不可分的问题。然而,并不是所有的样本都是可以线性可分的,及时映射到高维样本空间上,为了解决这个问题,保证SVM的通用性,进行了软间隔处理,这导致了优化问题更加复杂,但是由于郎格朗日对偶和SMO算法的提出,SVM的优化求解问题得以完美解决

二、SVM 方法的详细介绍

1、Functional and geometric margins(函数间隔和集合间隔)

考虑一个二值线性分类器,输出标签为y,输入特征向量x,其中y{-1,1},分类器的预测输出为:



其中,g(z)=1,if z>=0; g(z)=-1, if z<0 。

函数间隔(functional margin)定义为:



从函数间隔的定义可以看出,如果y>1,则(wx+b)要取较大的正数;反之,如果y<0,则(wx+b)要取绝对值较大的负数。如果(w,b)变为(2w,2b),则函数间隔也会相应扩大两倍。对于m个训练样本(i=1,2……m),整个样本空间的函数间隔为:



几何间隔(geometric margin)定义为:



具体的推导过程涉及到一些简单的几何知识,这里不做赘述。从这个定义可以看出,几何间隔和函数间隔只是相差一个||W||,这决定了两种定义的某种内在联系。另外,如果(w,b)变为(2w,2b),几何间隔不变,这是几何间隔的一个较好的特征,这也符合我们的直观认知。因为从(w,b)到(2w,2b),分割超平面并没有变化,所以间隔也应该不变。同样,对于整个样本空间,几何间隔为:



2、最优间隔分类器( The optimal margin classifier)

假设我们的训练样本是线性可分割的,即存在一个分割超平面,将正负样本区分出来。直观上来说,当正负样本都离分割超平面较远时(即几何间隔较大),我们对于样本数据的预测的准确性更有信心。因此,我们的训练目标是找到使几何间隔最大的分割超平面,因此,我们得到以下的优化问题:



在上式中,限制条件“||W||=1”是为了保证函数间隔等于几何间隔,然而,该条件是非凸的,导致无法用标准的优化软件进行求解。因此,需要对以上模型进行转换:



上式中将目标函数变为了几何间隔与||W||的商,从而去除了我们不喜欢看到的非凸的限制条件,然而,这种转化又带来了一个新问题,那就是我们的目标函数非凸函数,这也不是我们想要的。因此,还需要对上式进行改变,我们限定函数间隔为1,则问题可转化为:



这就是我们想要的最优间隔分类器,以下需要做的就是对该优化问题进行求解。

3、拉格朗日对偶问题(lagrange duality)

暂时放下对最优间隔分类器的讨论,我们现在解决如下式的优化问题:



为了解决这类优化问题,我们采用拉格朗日乘数法(大学数学上有过学习,不详述),记拉格朗日乘数分别为alpha,beita>0;得到:



我们做如下定义:



对于给定的W,如果w不满足以上限制条件,则我们容易证明,Sita(W)趋向于无穷大,因为我们只需要将拉格朗日乘数取为某些较大的正数。相反,当W满足以上限制条件时,Sita(w)能取得最小值,且此时Sita_P(w)=f(w)。因此,我们可以得到下式:



我们考虑最小化问题:



易知,该最小化问题及时我们要求的最优化问题。现在定义对偶问题Sita_D:



对偶优化问题为:



易知,通常情况下Sita_P和Sita_D存在以下关系:



然而,在某种特定的情况下可以满足d*=p*,这样就可以通过求解对偶问题以代替求解原优化问题。通过理论分析,我们可以得知,当W,alpha,beita满足下面几个条件时,d*=p*成立,我们称以下条件为KKT(Karush-Kuhn-Tucker)条件:



重新考虑最初的优化问题,我们引入拉格朗日乘数,将优化问题转化为:



考虑对偶问题Sita_D,我们需要在固定alpha(i)的基础上求min(L),分别对W和b求偏导,并另其为0,则得到:





将以上两个计算结果带入L,得:



则我们的对偶优化问题可以转化为:



4、核函数(Kernels)

对于一种特征映射phi,我们定义其相应的核函数为:



在实际应用中,计算K(x,z)往往比计算phi(x)更简单,因此我们通常不需要显示的计算出phi(x)。从直观上来看(但不一定对所有情况都适应,但不影响我们的理解),核函数是对phi(x)和Phi(z)相似性的一个度量,或者是说对x和z的相似性的一个度量。如果phi(x)和phi(z)越相似,则K(x,z)越大,相反,如果phi(x)和phi(z)差异性越大(甚至垂直),则K(x,z)越小。

5、对于线性不可分的情况的求解

虽然通过核函数将输入样本从低维空间映射到更高维的空间,可以增大样本线性可分的可能性,但是仍有一些样本数据在高维情况下线性不可分,另外,对于某些特殊样本点,它的存在会严重影响分割超平面的位置,这种噪声往往会使分割结果更不理想。因此,为了解决这些问题,我们将算法进行适当软化,提出以下改进的优化模型:



该模型允许存在函数间隔小于1的样本点的存在,同时,在目标函数上增加了惩罚项,惩罚因子为C。与以前的求解过程相同,我们得到:



5、SMO算法

为了对上式进行求解,这里提出一种SMO(Sequential minimal optimization)算法,首先从坐标上升算法说起。考虑无限制的最优问题W:



坐标上升算法的伪代码如下:



其思想就是每次改变一个变量,固定其他变量,每次求取目标函数关于该变量的增加值,从而修正该变量知道模型收敛为止。

然而,对于我们需要优化的问题,W带有一定的限制条件,如果每次只改变一个变量(如a1),那么我们的模型无法进行,因为有:


根据上市,如果只改变a1,固定a2…………am,那么a1也确定了,无法改变,因此,需要对坐标上升进行适当改进,这里提出我们的SMO算法:每次改变两个参数(如a1,a2),保持其他参数不变,每次通过导数来修正这两个变动的参数,知道目标函数收敛为止,其算法的伪代码如下:



具体的SMO算法模型的细节这里不再讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐