支持向量机4——SMO算法
根据上一篇的对偶问题的结论,我们现在的目的是计算下式子,也就是找到一系列 α α 使得 (4.1) ( 4.1 ) 公式达到最大值。
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxixjst. ∑i=1mαiyi=0αi≥0(4.1) (4.1) max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i x j s t . ∑ i = 1 m α i y i = 0 α i ≥ 0
换一种表达方式那么就是让找到一系列 α α 使得 (4.2) ( 4.2 ) 公式达到最小值。
minα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαist. ∑i=1mαiyi=0αi≥0(4.2) (4.2) min α 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i x j − ∑ i = 1 m α i s t . ∑ i = 1 m α i y i = 0 α i ≥ 0
那么现在问题就是如何解 (4.2) ( 4.2 ) 公式。不难发现,这是一个 二次规划的问题。可使用通用的二次规化算法来求解。然而,该问题的规模正比于训练样本数,这会在实际中造成很大的开销。SMO(Sequential Minimal Optimization)可以更高效的解决上述SVM问题。
它的基本思路是先固定 αi α i 之外的所有参数,然后求 αi α i 上的极值,由于存在约束 ∑mi=1αiyi=0 ∑ i = 1 m α i y i = 0 ,若固定 αi α i 之外的其它变量,则 αi α i 可由其它变量导出。于是,SMO每次选择两个变量 αi,αj α i , α j ,并固定其它参数。
假设选择优化的参数是 α1,α2 α 1 , α 2 ,那么需要固定其它 m−2 m − 2 个参数。可以将 (4.2) ( 4.2 ) 式简化为只关于 α1,α2 α 1 , α 2 的式子。
minα1,α212(α21y21x21+α22y22x22+2α1α2y1y2x1x2) − (α1+α2) + y1α1v1 + y2α2v2 + Conatantvi=∑j=3mαjxjyjxii=1,2(4.3) (4.3) min α 1 , α 2 1 2 ( α 1 2 y 1 2 x 1 2 + α 2 2 y 2 2 x 2 2 + 2 α 1 α 2 y 1 y 2 x 1 x 2 ) − ( α 1 + α 2 ) + y 1 α 1 v 1 + y 2 α 2 v 2 + C o n a t a n t v i = ∑ j = 3 m α j x j y j x i i = 1 , 2
其中 Constant C o n s t a n t 代表和 α1,α2 α 1 , α 2 无关的常数项。由于 yi∗yi ==1 y i ∗ y i == 1 ,故上式可变为 (4.4) ( 4.4 )