序列最小优化算法
前面介绍的支持向量机的学习问题可以形式化为求解凸二次规划的问题。这样具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。
但是当样本容量很大时,这些算法效率很低下。
因此需要使用序列最小最优化SMO等算法来解决
在这个问题中,变量是拉格朗日乘子,一个变量alphai对应于一个样本点,变量综述等于训练样本容量N
SMO是一种启发式算法,基本思路是:如果所有变量的解都满足此最优化问题的KKT条件。那么这个最优化问题的解就得到了。
否则,选择两个变量固定其他变量,根据两个变量构建一个二次规划问题。
这时子问题可以通过解析方法求解,这样就大大提高了计算速度。
如此,SMO算法将原问题不断分解为子问题,并对子问题求解,达到求原问题解的目。
整个SMO算法包括两个部分:
1. 求解两个变量二次规划的解析方法
2. 选择变量的启发式方法
由于只有两个变量,约束可以用二维空间中的图形表示
变量的选择方法:
SMO算法在每个子问题中选择两个变量优化,其中至少一个变量是违反KKT条件的。
1. 第一个变量的选择SMO选择第一个变量是外层循环,在样本中选择违反KKT条件最严重的点,将其作为第一个变量
2. 第二个变量的选择。为内层循环,标准是希望alpha2有足够大的变化