支持向量机:SMO算法剖析
Posted 机器学习算法那些事
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机:SMO算法剖析相关的知识,希望对你有一定的参考价值。
来源:CSDN
链接:
https://blog.csdn.net/luoshixian099/article/details/51227754
SMO算法概括:SMO算法是序列最小最优化算法,如下图,首先选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,求解目标函数最小值对应的拉格朗日乘子α1和α2;然后,选择两个变量的方法:第一个变量遍历所有样本的拉格朗日乘子α,选择违反KKT条件最严重的变量α1;第二个变量遍历所有样本,选择与第一个变量变化值最大(|E2-E1)的拉格朗日乘子α2。
本文力求简化SMO的算法思想,毕竟自己理解有限,无奈还是要拿一堆公式推来推去,但是静下心看完本篇并随手推导,你会迎刃而解的。推荐参看SMO原文中的伪代码。
1. SMO概念
上一篇文章已经详细介绍了SVM原理,为了方便求解,把原始最优化问题转化成了其对偶问题,因为对偶问题是一个凸二次规划问题,这样的凸二次规划问题具有全局最优解,如下:
其中(xi,yi)表示训练样本数据,xi为样本特征,yi∈{−1,1}为样本标签,C为惩罚系数由自己设定。上述问题是要求解N个参数(α1,α2,α3,...,αN),其他参数均为已知,有多种算法可以对上述问题求解,但是算法复杂度均很大。但1998年,由Platt提出的序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
2. SMO原理分析
2.1 视为一个二元函数
为了求解N个参数,首先想到的是坐标上升的思路,例如求解α1,可以固定其他N-1个参数,可以看成关于α1的一元函数求解,但是注意到上述问题的等式约束条件
当固定其他参数时,参数α1也被固定,因此此种方法不可用。
SMO算法选择同时优化两个参数,固定其他N-2个参数,假设选择的变量为α1,α2,固定其他参数,由于参数固定,可以简化目标函数为只关于α1,α2的二元函数,Constant表示常数项(不包含变量α1,α2的项),如下:
2.2 视为一元函数
由等式约束得:
其中,为定值 。
等式两边同时乘以y1,且,得
(2)式代入(1)中得到只关于参数α2的一元函数,由于常数项不影响目标函数的解,以下省略掉常数项Constant
2.3 对一元函数求极值点
上式中是关于变量α2的函数,对上式求导并令其为0得:
由上式中假设求得α2的解,代入(2)式中可求得α1的解,分别记为,优化前的解记为,由于参数固定,由等式约束,得
即:
2. 假设SVM超平面的模型为,已推导出 w的表达式,将其代入模型得:
f(xi)表示样本xi的预测值,yi表示样本xi的真实值,定义Ei表示预测值与真实值之差为:
3. 由于,因此,由(5)式得:
把(4)(6)(7)代入(2.3)式得:
化简求解,未考虑约束问题,先记为,得:
代入(5)式,并记 ,得:
2.4 对原始解修剪
上述求出的解未考虑到约束条件:
在二维平面上直观表达上述两个约束条件
最优解必须要在方框内且在直线上取得,因此:
过上述约束的修剪,最优解就可以记为了。
2.5 求解
由于其他N-2个变量固定,因此
所以可求得
2.6 取临界情况
大部分情况下,有
但是在如下几种情况下,需要取临界值L或者H
1. η<0,当核函数K不满足Mercer定理时,矩阵K非正定;
2. η=0,样本
其中,
3. 启发式选择变量
3.2 第二个变量的选择
SMO称第二个变量的选择过程为内循环,假设在外循环中找个第一个变量记为α1,第二个变量的选择希望能使α2有较大的变换,由于α2是依赖于|E1-E2|,当E1为正时,那么选择最小的Ei作为E2,如果E1为负,选择最大Ei作为E2,通常为每个样本的Ei保存在一个列表中,选择最大的|E1-E2|来近似最大化步长。
有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:
首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
如果非边界集上没有,则在整个样本集上选择第二个变量,
如果整个样本集依然不存在,则重新选择第一个变量。
写在结束的话
SMO算法是求解拉格朗日乘子αi的一种快速实现算法,SMO算法比较抽象,若花了较长时间还没有弄懂的话就跳过吧,会用就行了。
推荐阅读文章
以上是关于支持向量机:SMO算法剖析的主要内容,如果未能解决你的问题,请参考以下文章
支持向量机(SVM):超平面及最大间隔化支持向量机的数学模型软间隔与硬间隔线性可分支持向量机线性支持向量机非线性支持向量机核函数核函数选择SMO算法SVM vs LR优缺点