SMO(Sequential minimal optimization)序列最小化
前面章节中,我们使用了核函数的软间隔支持向量机的优化模型为:
式 (1) 需要满足的 KKT 条件为:
在 SMO(序列最小化)方法出现之前,人们依赖于二次规划求解工具来解决上述的优化问题,训练 SVM。这些工具需要具有强大计算能力的计算机进行支撑,实现也比较复杂。1998 年,微软研究院的 John Platt 提出了 SMO 算法将优化问题分解为容易求解的若干小的优化问题,来训练 SVM。简言之,SMO 仅关注 $ alpha $ 对 和 偏置 $ b$ 的求解更新,进而求解出权值向量 $ w $ ,得到决策边界(分割超平面),从而大大减少了运算复杂度。
算法介绍
SMO 会选择一对 $\alpha^{(i)}$ 及 $\alpha^{(j)}$ ,并固定住其他参数,即将其他参数认为是常数,则式 (1)中的约束条件就可写为:
其中:
$k = -\sum_{k \neq i,j}\alpha^{(k)}y^{(k)} \tag{4}$
那么,式 (1) 的优化问题可以推导:
算法流程
综上,我们可以概括出 SMO 的算法流程:
- 在整个训练集或者非边界样本中选择违反了 KKT 条件的 $\alpha^{(i)}$。
- 在剩下的$α$中,选择$|E^{(i)} - E^{(j)}|$达到最大的 $alpha^{(j)}$。
- 重复以上过程直到达到收敛精度或最大迭代次数。