待求解问题
目标函数
αmin s.t 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Nαii=1∑Nαiyi=00≤αi≤C(∀i=1,2,…n)且由KKT对偶互补条件有
αi∗=0⇒yi(w∗∙ϕ(xi)+b∗)≥10<αi∗<C⇒yi(w∗∙ϕ(xi)+b∗)=1αi∗=C⇒yi(w∗∙ϕ(xi)+b∗)≤1
SMO算法基本思想
上式中有N个变量
α1,α2,…,αN需要在极小化的时候求出,直接优化很难。
SMO采用启发式的方法,每次只优化两个变量,而将其它变量视为常数。
由
i=1∑Nαiyi=0知,假如
α3,…,αN固定,那么
α1,α2的关系就确定了,从而转化为了一个比较简单的两变量优化问题。
α1,α1min21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1i=3∑NyiαiKi1+y2α2i=3∑NyiαiKi2 s.t. α1y1+α2y2=−i=3∑Nyiαi=ς0≤αi≤Ci=1,2
两变量优化——>单变量约束优化
符号说明:上一轮迭代得到的解
α1old,α2old,沿着约束方向未经剪辑的
α2表示为
α2new,unc,本轮迭代完成后的解
α1new,α2new 约束条件
由于𝛼_1,𝛼_2的关系被限制在盒子里的一条线段上,故两变量的优化问题实际上仅仅是一个变量的优化问题。不是一般性,假设是𝛼_2的优化问题。
L≤α2new≤H- 如果是左图的情况,L=max(0,α2old−α1old),H=min(C,C+α2old−α1old);
- 如果是右图的情况,L=max(0,α2old+α1old−C),H=min(C,α2old+α1old).
假如通过求导得到了解
α2new,unc,那么
α2new =⎩⎨⎧Hα2new,unc Lα2new,unc >HL≤α2new,unc ≤Hα2new,unc <L简记
Eivi=j=1∑NαjyjK(xi,xj)+b−yi,=j=3∑NyjαjK(xi,xj),i=1,2则待优化目标函数为
W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2−(α1+α2)+y1α1v1+y2α2v2将
α1=y1(ς−α2y2)代入得关于
α2的目标函数为
W(α2)=21K11(ς−α2y2)2+21K22α22+y2K12(ς−α2y2)α2−(ς−α2y2)y1−α2+(ς−α2y2)v1+y2α2v2由偏导为0
∂α2∂W=K11α2+K22α2−2K12α2−K11ςy2+K12ςy2+y1y2−1−v1y2+y2v2=0计算化简得到
α2new,unc =α2old +(K11+K22−2K12)y2(E1−E2)
SMO算法两个变量的选择
第一个变量的选择(外层循环)
选择在训练集中违反KKT条件最严重的样本点,要满足的KKT条件为
αi∗=0⇒yi(w∗∙ϕ(xi)+b∗)≥10<αi∗<C⇒yi(w∗∙ϕ(xi)+b∗)=1αi∗=C⇒yi(w∗∙ϕ(xi)+b∗)≤1首先选择违反
0<αi∗<C⇒yi(w∗∙ϕ(xi)+b∗)=1的点;若这些支持向量都满足该KKT条件,在选择违反另外两条条件的点。
第二个变量的选择(内层循环)
- 假设第一个循环已经选择了α1,第二个变量α2的选择指标是使得|E1−E2|尽可能大;
- 只需在E1为正时,选择最小的Ei作为E2;在E1为负时,选择最大的Ei作为E2;
- 如果上述找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做α2直到目标函数有足够的下降;
- 如果所有的支持向量作为α2都不能让目标函数有足够的下降,可以跳出循环,重新选择α1.
在每次完成两个变量的优化之后,需要重新计算阈值b。
当
0<α1new <C时,有
y1−i=1∑NαiyiKi1−b1=0故可得到
b1new=y1−i=3∑NαiyiKi1−α1newy1K11−α2newy2K21由于
E1=i=3∑NαiyiKi1+α1old y1K11+α2old y2K21+bold −y1因此
b1new可以用
E1表示为
b1new =−E1−y1K11(α1new −α1old )−y2K21(α2new −α2old )+bold 同理,若
0<α2new <C,有
b2new =−E2−y1K12(α1new −α1old )−y2K22(α2new −α2old )+bold 最终的b计算为
bnew =2b1new +b2new 利用
bnew更新
Ei:
Ei=S∑yjαjK(xi,xj)+bnew−yi其中S是所有支持向量的集合。
SVM的SMO算法流程