SMO算法(Sequential minimal optimization)要解决的对偶问题
maxα −12∑i=1m∑j=1mαiαjy(i)y(j)⟨x(i),x(j)⟩+∑i=1mαi
s.t. ∑i=1mαiyi=0
0⩽αi⩽C, i=1,...,m
该问题的收敛条件
αi=0αi=C0<αi<C⇒y(i)(wTx(i)+b)⩾1⇒y(i)(wTx(i)+b)⩽1⇒y(i)(wTx(i)+b)=1
SMO算法中的“minimal”表示我们希望一次迭代改变最小数量的
αi
,在该算法中只需要改变2个
Coordinate ascent
坐标上升法的特点是,尽管可能需要比较多的迭代次数,但是每一步迭代的代价非常低
SMO算法采用了Coordinate ascent的思想
考虑满足约束条件的
α1,α2,...,αm
,现在我们采用Coordinate ascent的思想来完成一次迭代,假设我们固定
α2,...,αm
,取
α1
进行优化,这样做可行吗?
回答是不可行,因为约束
∑i=1mαiyi=0
始终是存在的,这意味着固定
α2,...,αm
,则
α1
的取值只能是唯一的,所以不能只取
αi
进行优化,而应该取一对
αi
,
αj
进行优化
假设我们固定
α3,…,αm
,取
α1
,
α2
进行优化
扫描二维码关注公众号,回复:
3088934 查看本文章
则
α1y(1)+α2y(2)=ζ
以
α1
,
α2
为坐标轴,画出如下示意图

由于
α1
,
α2
需要满足下列3个条件
0⩽α1⩽C
0⩽α2⩽C
α1y(1)+α2y(2)=ζ
故
(α1,α2)
可行的位置为图中红色线段,
α1
,
α2
各自可行的位置为图中绿色线段,换句话说,
α1
,
α2
的取值范围被各自限定在一个区间内
假设我们选取
α2
进行优化,并设
α2
可行的上下界分别为
H
和
L
,即
L⩽α2⩽H
首先我们利用
α1y(1)+α2y(2)=ζ
消去
α1
,最终得到一个只包含
α2
的式子,这个式子的最高次数为
2
,可以直接套用公式求出最优解
α∗2
(初中就已经学过如何求二次函数的最值)
然后还需要检查
α∗2
是否在区间
[L,H]
内,如果不是,需要进行处理,得到迭代后的
αnew2
,处理方法如下
αnew2=⎧⎩⎨⎪⎪Hif α∗2>Hα∗2if L⩽α∗2⩽HLif α∗2<L(46)(47)(48)
再利用
αnew1y(1)+αnew2y(2)=ζ
求出
αnew1
,此时,本次迭代的工作完成
【重新思考】
假设参数更新前为
[αold1αold2αold3αold4⋯αoldm]
我们选择变量
α1
和
α2
进行更新
参数更新后为
[αnew1αnew2αold3αold4⋯αoldm]
那么有
αold1+αold2=−∑i=3mαoldi=ζ
αnew1+αnew2=−∑i=3mαoldi=ζ
为了计算
ζ
,可以使用
αold1+αold2
计算,或者使用
−∑i=3mαoldi
计算,显然,计算简单的是后者
这就是为什么需要使用
αold1
和
αold2
的原因