支持向量机1——间隔和支持向量
支持向量机2——对偶问题
支持向量机3——SMO算法
根据上一篇的对偶问题的结论,我们现在的目的是计算下式子,也就是找到一系列
α
使得
(3.1)
公式达到最大值。
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxixjst. ∑i=1mαiyi=0αi≥0(3.1)
换一种表达方式那么就是让找到一系列
α
使得
(3.2)
公式达到最小值。
minα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαist. ∑i=1mαiyi=0αi≥0(3.2)
那么现在问题就是如何解
(3.2)
公式。不难发现,这是一个
二次规划的问题。可使用通用的二次规化算法来求解。然而,该问题的规模正比于训练样本数,这会在实际中造成很大的开销。SMO(Sequential Minimal Optimization)可以更高效的解决上述SVM问题。
它的基本思路是先固定
αi
之外的所有参数,然后求
αi
上的极值,由于存在约束
∑mi=1αiyi=0
,若固定
αi
之外的其它变量,则
αi
可由其它变量导出。于是,SMO每次选择两个变量
αi,αj
,并固定其它参数。
假设选择优化的参数是
α1,α2
,那么需要固定其它
m−2
个参数。可以将
(3.2)
式简化为只关于
α1,α2
的式子。
minα1,α212(α21y21x21+α22y22x22+2α1α2y1y2x1x2) − (α1+α2) + y1α1v1 + y2α2v2 + Conatantvi=∑j=3mαjxjyjxii=1,2(3.3)
其中
Constant
代表和
α1,α2
无关的常数项。由于
yi∗yi ==1
,故上式可变为
(3.4)
minα1,α2=12(α21x21+α22x22+2α1α2y1y2x1x2) − (α1+α2) + y1α1v1 + y2α2v2 + Conatantvi=∑j=3mαjxjyjxii=1,2(3.4)
由于约束条件
∑mi=1αiyi=0αi≥0
,那么:
α1y1+α2y2=−∑i=3mαiyi=ζ(3.5)
可见
ζ
为定值,则在等式两端同时乘以
y1
,
y21=1
,得到:
α1=(ζ−α2y2)y1(3.6)
将
(3.6)
带入
(3.4)
中:
minα212(ζ−α2y2)2x21+12α22x22+(ζ−α2y2)α2y2x1x2−(ζ−α2y2)y1−α2+(ζ−α2y2)v1+y2v2α2(3.7)
对
(3.7)
的
α2
求导,并令求导后的式子为0,以便于求得极值。令
(3.7)
式子为
ψ(α2)
:
∂ψ(α2)∂α2=(x21+x22−2x1x2)α2−ζy2x21+ζy2x1x2+y1y2−1−v1y2+v2y2=0(3.8)
- 由上式子假设求得了
α2
的值,带入
(3.6)
即可求得
α1
,分为标记为
αnew1,αnew2
,优化之前的记录为
αold1,αold2
。由于
(3.5)
式,可知
ζ=αold1y1+αold2y2=αnew1y1+αnew2y2(3.9)
- 由于对偶问题中已经求得
ω=∑mi=1αiyixi
,SVM的超平面为
f(x)=ωTx+b(3.10)
,则
f(x)=∑i=1mαiyixix+b(3.11)
由于
vi=∑mj=3αjyjxjxii=1,2
v1=f(x)−b−∑j=12αjxjyjx1(3.12)
v2=f(x)−b−∑j=12αjxjyjx2(3.13)
将
(3.9),(3.12),(3.13)
带入
(3.8)
中
(x21+x22−2x1x2)αnew2=(x21+x22−2x1x2)αold2+y2[y2−y1+f(x1)−f(x2)](3.14)
αnew2=αold2+y2(E1−E2)η(3.15)
其中E表示预测值和真实值的差。