支持向量机的的学习问题可以形式化为求解凸二次规划问题。求解凸二次规划问题可以借用一些凸二次规划求解工具,但这需要强大的计算能力支持。Platt提出SMO序列最小优化算法,可以高效地计算出对偶问题中最佳的拉格朗日乘子
α∗
.
1. SMO 序列最小化算法的基本思想
SVM的对偶问题可以表示为:
minα 12∑Nj=1αiαjyiyjK(xi⋅xj)−∑Ni=1αi
s.t. ∑Ni=1αiyi=0
0≤αi≤C,i=1,2,...,N (1)
对应的KKT条件为:
αi=0⇒yig(xi)≥1
0<αi<C⇒yig(xi)=1
αi=C⇒yig(xi)≤1
SMO算法是一种快速学习的算法,其思想是:
不断地选择两个两个变量
α1,α2
,将上面(1)这个二次规划问题分解成一个只有两个变量的二次规划子问题,然后对二变量子问题进行解析求解,直到所有变量都满足KKT条件为止。由于每个子问题都有解析解,计算很快,所以很高效。
重要定理:KKT条件是最优化问题的充分必要条件。
2. 选择两个变量的方法
上面说到SMO算法的思想,那么第一步应该明确怎么选择两个变量
α1,α2
。
2.1 第一个变量的选择
选择第一个变量需要选择在训练集中违反KKT条件最严重的样本点。 这很容易理解,因为我们最终的目标是让所有的变量
α
满足KKT条件,选择违反KKT最大的作为优化对象。
2.2 第二个变量的选择
为了选择第二个变量,首先定义函数
g(xi)=∑Nj=1αjyjK(xj,xi)+b
并把预测值
g(xi)
与真实值
yi
之差记为
Ei
,则
Ei=gi(x)−yi=(∑Nj=1αjyjK(xj,xi)+b)−yi; i=1,2
第二个变量
α2
的选择标准就是是让
|E1−E2|
有足够大的变化。
假设已经找到了
α1
,由于
α1
定了,所以
E1
也确定了。所以要想
|E1−E2|
最大,只需要
- 在
E1
为正时,选择最小的
Ei
作为
E2
,
- 在
E1
为负时,选择最大的
Ei
作为
E2
,因此可以将所有的
Ei
保存下来加快迭代。
如果上面找到的
α2
不能让目标函数有足够的下降, 可以遍历支持向量,直到目标函数有足够的足够的下降.
如果所有的支持向量做α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1
3. SMO序列最小化算法的基本步骤
现在我们知道了选择变量的方法,那么就要把原来(1)中的凸二次优化问题转化为两个变量的二次规划子问题,然后对二变量子问题进行解析求解。
第一步, 使用2中方法选取两个变量
α1,α2
(选取的量应该是违反KKT比较大的变量,这样优化效果好), 其他的
αi
视为常量. 求解新的未经剪辑时
αnew,uncut2
.
最优化问题可以写为:
minα W(α1,α2)=12K11α21+12K22α22+y1y2K12α1α2−(α1+α2)+y1α1∑Nj=3αiyiKi1+y2α2∑Nj=3αiyiKi2 (2)
s.t. α1y1+α2y2=−∑Ni=3αiyi=ξ (3)
0≤αi≤C,i=1,2 (4)
如果不考虑
0≤αi≤C,i=1,2
的约束条件下,利用(3)代入(2),得到
α2
的单变量问题。
再对 W 求导并令其为 0,可以求到一个
α2
解。我们称这个解是未经剪辑时的新解
αnew,uncut2
:
αnew,uncut2=αold2+y2(E1−E2)η (5)
注:
g(xi)=∑Nj=1αjyjK(xj,xi)+b (6)
η=K11+K22−2K12=||ϕ(x1)−ϕ(x2)||2 (7)
Ei=g(xi)−yi=(∑Nj=1αjyjK(xj,xi)+b)−yi; i=1,2 (8)
第二步,按照下式求出剪辑后的
αnew2
,进而由求出
αnew1
实际上,我们还必须考虑约束条件
0≤αi≤C,i=1,2
,因此考虑后得到:
αnew2=⎧⎩⎨⎪⎪Hαnew,unc2LL≤αnew,unc2>HL≤αnew,unc2≤Hαnew,unc2<L (9)
αnew1=αold1+y1y2(αold2−αnew2) (10)
注:
具体推导参考 李航《统计学习方法》或 戳
经历了前两步,我们已经或得了新的
α1,α2
的值,那么什么时候终止呢?这需要在设定的一个精度e下检验终止条件。
第三步,计算
bnew
和
Enewi
,方便下次选择变量.
在每次完成两个变量的优化之后,需要重新计算阈值
bnew
和差值
Enewi
bnew1=−E1−y1K11(αnew1−αold1)−y2K21(αnew2−αold2)+bold (11)
bnew2=−E2−y1K12(αnew1−αold1)−y2K22(αnew2−αold2)+bold (12)
bnew=bnew1+bnew22 (13)
Enewi=∑SyjαjK(xi,xj)+bnew−yi (14)
S指所有的支持向量集合。
注:
具体推导参考 李航《统计学习方法》或 戳
第四步,在精度
e
范围内检查是否满足如下的终止条件,如果满足则结束,返回最佳解
αnew1,αnew1
,否则转到第二步
∑i=1Nαiyi=0 (15)
0≤αi≤C,i=1,2...N (16)
αnewi=0⇒yig(xi)≥1 (17)
0<αnewi<C⇒yig(xi)=1 (18)
αnewi=C⇒yig(xi)≤1 (19)