SMO算法
SMO算法求解如下凸二次规划的对偶问题:

在这个问题中,变量是拉格朗日乘子,一个变量
对应于一个样本点
;变量的总数等于训练样本容量N
SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件,否则,选择两个变量,固定其它变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数变小,重要的是,这时子问题可以通过解析方法求解,这样就可以大大提高整个算法的计算速度,子问题有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。
注意,子问题的两个变量中只有一个是自由变量,假设
为两个变量,
固定,那么由等式约束可知

由于矩阵K是正定的,所以有

目标函数式中省略了不含
的常数项
为了求解两个变量的二次规划问题,首先分析约束条件,然后在此约束条件下求极小
由于只有两个变量
,约束可以用二维空间中的图形表示


SVM对数据点的预测值:

其中

令

当i=1,2时,
为函数g(x)对输入
的预测值与真实输出
之差
引进记号

目标函数可写成
![]()
由
及
可将
表示为
![]()
带入式子中,得到只是
的函数的目标函数

对
求导数
![]()
令其为0,得到

将
带入得到

将
带入,得到

由
求得![]()
变量的选择方法:
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的
第1个变量的选择:
SMO称选择第1个变量的过程为外层循环,外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。具体地,检验训练样本点
是否满足KKT条件,即

这里的
还是Lagrange乘子
(1)对于第1种情况,表明
是正常分类,在边界内部(我们知道正确分类的点
)
(2)对于第2种情况,表明了
是支持向量,在边界上
(3)对于第3种情况,表明了
是在两条边界之间
如果存在不满足KKT条件的
,那么需要更新这些
,这是第一个约束条件。此外,更新的同时还要受到第二个约束条件的限制,即![]()
第2个变量的选择:
SMO称选择第2个变量的过程为内层循环。假设在外层循环中已经找到第1个变量
,现在要在内层循环中找第2个变量
,第2个变量选择的标准是希望能使
有足够大的变化

浙公网安备 33010602011771号