SMO算法

SMO算法(Sequential minimal optimization)要解决的对偶问题

max α   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

0 α i C ,   i = 1 , . . . , m

该问题的收敛条件
α i = 0 y ( i ) ( w T x ( i ) + b ) 1 α i = C y ( i ) ( w T x ( i ) + b ) 1 0 < α i < C y ( i ) ( w T x ( i ) + b ) = 1

SMO算法中的“minimal”表示我们希望一次迭代改变最小数量的 α i ,在该算法中只需要改变2个

Coordinate ascent
这里写图片描述
坐标上升法的特点是,尽管可能需要比较多的迭代次数,但是每一步迭代的代价非常低

SMO算法采用了Coordinate ascent的思想

考虑满足约束条件的 α 1 , α 2 , . . . , α m ,现在我们采用Coordinate ascent的思想来完成一次迭代,假设我们固定 α 2 , . . . , α m ,取 α 1 进行优化,这样做可行吗?

回答是不可行,因为约束 i = 1 m α i y i = 0 始终是存在的,这意味着固定 α 2 , . . . , α m ,则 α 1 的取值只能是唯一的,所以不能只取 α i 进行优化,而应该取一对 α i α j 进行优化

假设我们固定 α 3 , , α m ,取 α 1 α 2 进行优化

扫描二维码关注公众号,回复: 3088934 查看本文章

α 1 y ( 1 ) + α 2 y ( 2 ) = ζ

α 1 α 2 为坐标轴,画出如下示意图

由于 α 1 α 2 需要满足下列3个条件
0 α 1 C
0 α 2 C
α 1 y ( 1 ) + α 2 y ( 2 ) = ζ

( α 1 , α 2 ) 可行的位置为图中红色线段, α 1 α 2 各自可行的位置为图中绿色线段,换句话说, α 1 α 2 的取值范围被各自限定在一个区间内

假设我们选取 α 2 进行优化,并设 α 2 可行的上下界分别为 H L ,即 L α 2 H

首先我们利用 α 1 y ( 1 ) + α 2 y ( 2 ) = ζ 消去 α 1 ,最终得到一个只包含 α 2 的式子,这个式子的最高次数为 2 ,可以直接套用公式求出最优解 α 2 (初中就已经学过如何求二次函数的最值)

然后还需要检查 α 2 是否在区间 [ L , H ] 内,如果不是,需要进行处理,得到迭代后的 α 2 n e w ,处理方法如下

α 2 n e w = { (46) H i f   α 2 > H (47) α 2 i f   L α 2 H (48) L i f   α 2 < L

再利用 α 1 n e w y ( 1 ) + α 2 n e w y ( 2 ) = ζ 求出 α 1 n e w ,此时,本次迭代的工作完成

【重新思考】

假设参数更新前为 [ α 1 old α 2 old α 3 old α 4 old α m old ]

我们选择变量 α 1 α 2 进行更新

参数更新后为 [ α 1 new α 2 new α 3 old α 4 old α m old ]

那么有
α 1 old + α 2 old = i = 3 m α i old = ζ
α 1 new + α 2 new = i = 3 m α i old = ζ

为了计算 ζ ,可以使用 α 1 old + α 2 old 计算,或者使用 i = 3 m α i old 计算,显然,计算简单的是后者

这就是为什么需要使用 α 1 old α 2 old 的原因

猜你喜欢

转载自blog.csdn.net/o0Helloworld0o/article/details/81557675
smo