支持向量机(SVM)——对偶问题

转自西瓜书《机器学习》

上节我们介绍了支持向量机的基本型及其推导过程,这节我们对基本型求解。上节我们推导的模型为
我们希望求解上式来得到大间隔划分超平面所对应的模型

其中w,b是模型参数,注意到式(1)本身是一个凸二次规划问题。能直接用现成的优化计算包求解,但我们可以有更高效的方法。

----------------------------------------------------------------------------------------------------------------------------------

简单介绍一下凸二次规划,转自博客二次规划(quadratic programming)

二次规划是指,带有二次型目标函数和约束条件的最优化问题。
二次规划的一般形式可以表示为,如下图式子。
这里写图片描述 
其中G是Hessian矩阵,τ是有限指标集,c,x和{ai},都是R中的向量。
如果Hessian矩阵是半正定的,则我们说式 1是一个凸二次规划,存在全局最优解;
如果Hessian矩阵是正定的,则存在全局唯一最优解;
如果Hessian矩阵是非正定的,则为非凸二次规划,存在多个平稳点和局部极小值点。

----------------------------------------------------------------------------------------------------------------------------------
对式(1)使用拉格朗日乘子法可以得到其“对偶问题”(对拉格朗日乘子法不懂的童鞋可以参考该链接深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件)。具体来说,对式(1)的每条约束添加拉格朗日乘子,将约束条件转化为
则该问题的拉格朗日函数可写为
其中。令对w和b的偏导为零可得
将式(4)代入式(3),即可将式(3)中的w和b消去,再考虑式(5)的约束,就得到式(1)的对偶问题(线性规划有一个有趣的特性,就是任何一个求极大的问题都有一个与其匹配的求极小的线性规划问题)。
    
                                          
解出a后,求出w与b即可得到模型
从对偶问题(6)中解出的是式(3)中的拉格朗日乘子,它恰对应着训练样本,注意到式(1)中有不等式约束,因此上述过程需满足KKT(Karush-Kuhn-Tucker)条件,即要求

于是,对任意训练样本,总有,若,则该样本将不会再式(7)中的求和中出现,也就不会对f(x)有任何影响;若ai>0,则必有,所对应的样本点位于最大间隔边界上,是一个支持向量。这显示出支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量(距离超平面最近的几个训练样本点)有关。
这段话我自己的理解是,两个条件至少有一个条件成立。当第一个条件成立时,有,即其对应的训练样本点比支持向量距离超平面远,这部分样本点由于而对模型不起作用;只有当时的样本点才对模型起作用,即需要第2个条件成立,此时对应的训练样本点为支持向量。因此只有支持向量是对模型起作用的。还不理解的请查我的上一篇介绍支持向量机(SVM)——间隔与支持向量中的图6.2 支持向量与间隔的部分。

那么如何求解式(6)呢?不难发现,这是一个二次规划问题,可使用通用的二次规划算法来求解;然而,该问题的规模正比于一训练样本,这会咋实际任务中造成很大的开销,为了避开这个障碍,人们通过利用问题自身的特性,提出了很多高效算法,SMO(Sequential Minimal Optimization)是其中一个著名的代表。

SMO的基本思路是固定之外的所有参数,然后求上的极值,由于存在约束,若固定之外的其他变量,则可由其他变量导出。于是,SMO每次选择两个变量,并固定其他参数,这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:

(1)选取一对需要更新的变量

(2)固定之外的参数,求解式(6)获得更新后的

注意到只需选取的有一个不满足KKT条件,目标函数就会在迭代后增大。直观来看,KKT条件违背程度越大,则变量更新后可能导致的目标函数数组增幅越大。于是,SMO先选取违背KKT条件程度最大的变量。第二个变量应选择一个使目标函数增长最快的变量,但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:使选取两变量所对应样本之间的间隔最大。一种直观的解释是,这样的两个变量有很大的差别,与对两个相似的变量进行更新比较,对他们进行更新带给目标函数数值更大的变化。

SMO算法之所以高效,恰由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。具体来说,仅考虑时,式(6)中的约束可重写为


其中


是使(6)中约束条件成立的常数。用


消去式(6)中的变量,则得到一个关于的单变量二次规划问题,仅有的约束是。不难发现,这样的二次规划问题具有闭式解,于是不必调用数值优化算法即可高效地计算出更新后的

如何确定偏移项b呢?注意到对任意支持向量都有,即


其中为所有支持向量的下标集。理论上,可选取任意支持向量并通过求解上式获得b,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值:





  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值