四、序列最小最优化算法
如上篇所述,SMO算法的目的是求非线性支持向量机的对偶问题:
的解:
SMO算法是一种启发式算法,基本思路为:假如解中所有变量都满足最优化问题的KKT条件,那么这时的解就是最优化问题的解,因为KKT条件是该最优化问题的充分必要条件。否则,选择两个变量(其中一个变量是违反KKT条件最严重的那一个,另一个变量由约束条件自动确定),固定其他变量(即把
中的两个元素看做是变量,其他的看做是常量),
针对这两个变量构建一个二次规划问题。
(为什么一次优化两个变量而不是一个呢?很简单,如果选择一个变量,其他固定为常量,那么由于约束条件
的存在,所以得到这个变量也只有一个取值,这样就没意义了。)
这个二次规划问题关于两个变量的解,肯定是向原始二次规划问题的解靠近的。SMO算法就是将原始问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。而且分解成子问题后有一个很大的好处,就是可以通过解析的方式来求解,大大提高整体计算的速度。
由于约束条件
,知,子问题的两个变量中
只有一个是自由变量。例如,假设我们选择
作为两个变量,其他的
固定为常量,那么由这个约束条件可知:
即,如果
确定,那么
也随之确定。所以子问题中
同时更新两个变量。
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发方法。
我们分别来介绍:
1.两个变量二次规划的求解方法
不失一般性,假设两个变量是
,其他元素
是固定的
常量。于是
SMO的最优化问题的子问题可以写成: