1.SMO概念
上一篇博客已经详细介绍了SVM原理(http://blog.csdn.net/luoshixian099/article/details/51073885),
为了方便求解,把原始最优化问题转化成了其对偶问题,因为对偶问题是一个凸二次规划问题,这样的凸二次规划问题具有全局最优解,如下:

minαΨ(α)=minα12i=1Nj=1NyiyjK(xi,xj)αiαji=1Nαi\min_{\overrightarrow{\alpha}}\Psi(\overrightarrow{\alpha})\\ =\min_{\overrightarrow{\alpha}}\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^Ny_i·y_j·K(\overrightarrow{x_i},\overrightarrow{x_j})·\alpha_i·\alpha_j-\sum_{i=1}^{N}\alpha_i
0αiC,i,0≤\alpha_i≤C,\forall i,
i=0Nyiαi=0\sum_{i=0}^N y_i·\alpha_i=0
其中K(xi,xj)K(\overrightarrow{x_i},\overrightarrow{x_j})表示向量内积

其中:
(xix_i,yiy_i):训练样本数据,
xix_i:样本特征
yi{1,1}y_i\in\{-1,1\}:为样本标签
CC:惩罚系数

上述问题是要求解N个参数(α1,α2,α3,...,αN)(\alpha_1,\alpha_2,\alpha_3,...,\alpha_N)
,其他参数均为已知,有多种算法可以对上述问题求解,但是算法复杂度均很大。
但1998年,由Platt提出的序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。

2.SMO原理分析
2.1视为一个二元函数
为了求解N个参数(α1,α2,α3,...,αN)(\alpha_1,\alpha_2,\alpha_3,...,\alpha_N),首先想到的是坐标上升的思路,例如求解α1,可以固定其他N-1个参数,可以看成关于α1\alpha_1的一元函数求解,但是注意到上述问题的等式约束条件i=1Nyiαi=0\sum_{i=1}^{N}y_i\alpha_i=0,当固定其他参数时,参数α1\alpha_1也被固定,因此此种方法不可用。

SMO算法选择同时优化两个参数,
固定其他N-2个参数,假设选择的变量为α1,α2\alpha_1,\alpha_2的二元函数,

ConstantConstant表示常数项,(不包含变量α1\alpha_1,α2\alpha_2的项)。
minΨ(α1,α2)=12K11α12+12K22α22+y1y2K12α1α2(α1+α2)+y1v1α1+y2v2α2+Constant(1)minΨ(\alpha_1,\alpha_2)=\frac12K_{11}\alpha_1^{2}+\frac12K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1v_1\alpha_1+y_2v_2\alpha_2+Constant\qquad \color{Red}{(1)}
其中vi=j=3NαjyjK(xi,xj),i=1,2v_i=\sum_{j=3}^N\alpha_jy_jK(x_i,x_j),i=1,2

2.2视为一元函数
3.由等式约束得:
α1y1+α2y2=i=3Nαiyi=ζ\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^N\alpha_iy_i=\zeta
可见ζ\zeta为定值。

等式α1y1+α2y2=ζ\alpha_1y_1+\alpha_2y_2=\zeta两边同时乘以y1y_1,且y12=1y_1^2=1,得
α1=(ζy2α2)y1(2)\alpha_1=(\zeta-y_2\alpha_2)y_1 \qquad \color{Red}{(2)}

(2)式带回到(1)中得到只关于参数α2{\alpha_2}的一元函数,由于常数项不影响目标函数的解,以下省略掉常数项ConstantConstant
min Ψ(α2)=12K11(ζα2y2)2+12K22α22+y2K12(ζα2y2)α2(ζα2y2)y1α2+v1(ζα2y2)+y2v2α2(3)min\ Ψ(\alpha_2)=\frac12K_{11}(\zeta-\alpha_2y_2)^2+\frac12K_{22}\alpha_2^2+y_2K_{12}(\zeta-\alpha_2y_2)\alpha_2-(\zeta-\alpha_2y_2)y_1-\alpha_2+v_1(\zeta-\alpha_2y_2)+y_2v_2\alpha_2 \qquad\color{Red}{(3)}

2.3对一元函数求极值点
上式中是关于变量α2的函数,对上式求导并令其为0得:
Ψ(α2)α2=(K11+K222K12)α2K11ζy2+K12ζy2+y1y21v1y2+v2y2=0\frac{\partial \Psi (\alpha_2)}{\partial \alpha_2}=(K_{11}+K_{22}-2K_{12})\alpha_2-K_{11}\zeta y_2+K_{12}\zeta y_2+y_1y_2-1-v_1y_2+v_2y_2=0
1.由上式中假设求得了α2{\alpha_2}的解,带回到(2)式中可求得α1{\alpha_1}的解,分别记为:
α1new,α2new\alpha_1^{new},\alpha_2^{new}
优化前的解记为:
α1old,α2old\alpha_1^{old},\alpha_2^{old},
由于参数α3,α4,...,αN\alpha_3,\alpha_4,...,\alpha_N固定,由等式约束
i=1Nyiαi=0\sum_{i=1}^{N}y_i\alpha_i=0有:
α1oldy1+α2oldy2=i=3Nαiyi=α1newy1+α2newy2=ζ\alpha_1^{old}y_1+\alpha_2^{old}y_2\\ =-\sum_{i=3}^N\alpha_iy_i\\ =\alpha_1^{new}y_1+\alpha_2^{new}y_2\\ =\zeta
ζ=α1oldy1+α2oldy2(4)\zeta=\alpha_1^{old}y_1+\alpha_2^{old}y_2 \qquad \color{Red}{(4)}

2.假设SVM超平面的模型为f(x)=wTx+bf(x)=w^Tx+b,
3.上一篇中已推导出ww的表达式,将其带入得
f(x)=i=1NαiyiK(xi,x)+bf(x)=\sum_{i=1}^N\alpha_iy_iK(x_i,x)+b
f(xi)f(x_i):表示样本xix_i的预测值
yiy_i表示样本xix_i的真实值,定义EiE_i表示预测值与真实值之差为
Ei=f(xi)yi(5)E_i=f(x_i)-y_i \qquad \color{Red}{(5)}

3.由于vi=j=3NαjyjK(xi,xj),i=1,2v_i=\sum_{j=3}^N\alpha_jy_jK(x_i,x_j),i=1,2因此,
v1=f(x1)j=12yjαjK1jb(6)v_1=f(x_1)-\sum_{j=1}^2y_j\alpha_jK_{1j}-b\qquad \color{Red}{(6)}

v2=f(x2)j=12yjαjK2jb(7)v_2=f(x_2)-\sum_{j=1}^2y_j\alpha_jK_{2j}-b\qquad \color{Red}{(7)}

把(4)(6)(7)带入下式中:
(K11+K222K12)α2K11ζy2+K12ζy2+y1y21v1y2+v2y2=0(K_{11}+K_{22}-2K_{12})\alpha_2-K_{11}\zeta y_2+K_{12}\zeta y_2+y_1y_2-1-v_1y_2+v_2y_2=0

化简得: 此时求解出的α2new\alpha_2^{new}未考虑约束问题,先记为α2new,unclipped\alpha_2^{new,unclipped}:

(K11+K222K12)α2new,unclipped=(K11+K222K12)α2old+y2[y2y1+f(x1)f(x2)](K_{11}+K_{22}-2K_{12})\alpha_2^{new,unclipped}=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2\left[y_2-y_1+f(x_1)-f(x_2)\right]

代入(5)式,并记η=K11+K222K12\eta=K_{11}+K_{22}-2K_{12}:
α2new,unclipped=α2old+y2(E1E2)η(8)\alpha_2^{new,unclipped}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta} \qquad \color{Red}{(8)}

2.4对原始解修剪
上述求出的解未考虑到约束条件:
0αi=1,2C0\leq\alpha_{i=1,2}\leq C
α1y1+α2y2=ζ\alpha_1·y_1+\alpha_2·y_2=\zeta

在二维平面上直观表达上述两个约束条件 :

SMO原理原理未完待续..
最优解必须要在方框内且在直线上取得,因此
Lα2newHL\leq\alpha_2^{new} \leq H
y1y2y_1\neq y_2时,
L=max(0,α2oldα1old);L=max(0,\alpha_2^{old}-\alpha_1^{old});
H=min(C,C+α2oldα1old)H=min(C,C+\alpha_2^{old}-\alpha_1^{old})

y1=y2y_1= y_2时,
L=max(0,α1old+α2oldC);L=max(0,\alpha_1^{old}+\alpha_2^{old}-C);
H=min(C,α2old+α1old)H=min(C,\alpha_2^{old}+\alpha_1^{old})

经过上述约束的修剪,最优解就可以记为α2new\alpha_2^{new}了.

α2new={ H ,α2new,unclipped>Hα2new,unclipped,Lα2new,unclippedH L ,α2new,unclipped<L\alpha_2^{new}=\begin{cases} & \text{ H ,} \alpha_2^{new,unclipped}>H \\ \\& \alpha_2^{new,unclipped}, L\leqslant \alpha_2^{new,unclipped}\leqslant H\\ \\ & \text{ L ,} \alpha_2^{new,unclipped}<L \end{cases}

2.5α1new2.5求解\alpha_1^{new}
由于其他N-2个变量固定,因此

α1oldy1+α2oldy2=α1newy1+α2newy2\alpha_1^{old}y_1+\alpha_2^{old}y_2=\alpha_1^{new}y_1+\alpha_2^{new}y_2
所以可求得:
α1new=α1old+y1y2(α2oldα2new)(9)\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new})\qquad \color{Red}{(9)}

2.62.6取临界情况
大部分情况下,有η=K11+K222K12>0\eta=K_{11}+K_{22}-2K_{12}>0
但是在如下几种情况下,α2new\alpha_2^{new}需要取临界值L或者H.

1.ηη<0,当核函数K不满足Mercer定理时,矩阵K非正定;
2.ηη=0,样本x1x_1x2x_2输入特征相同;
也可以如下理解,对(3)式求二阶导数就是
η=K11+K222K12\eta=K_{11}+K_{22}-2K_{12}
η\eta<0时,目标函数为凸函数,没有极小值,极值在定义域边界处取得。
η\eta=0时,目标函数为单调函数,同样在边界处取极值。
计算方法:
即当α2new=L\alpha_2^{new}=Lα2new=H\alpha_2^{new}=H分别代入(9)式中,
计算出α1new=L1\alpha_1^{new}=L_1α1new=H1\alpha_1^{new}=H_1,其中s=y1y2s=y_1y_2

L1=α1+s(α2L)L_1=\alpha_1+s(\alpha_2-L)
H1=α1+s(α2H)H_1=\alpha_1+s(\alpha_2-H)
代入目标函数(1)内,比较Ψ(α1=L1,α2=L)\Psi(\alpha_1=L-1,\alpha_2=L)Ψ(α1=H1,α2=H)Ψ(\alpha_1=H_1,\alpha_2=H)的大小,α2\alpha_2取较小的函数值对应的边界点.
ΨL=L1f1+Lf2+12L12K(x1,x1)+12L2K(x2,x2)+sLL1K(x1,x2)\Psi_L=L_1f_1+Lf_2+\frac{1}{2}L_1^2K(\overrightarrow{x_1},\overrightarrow{x_1})+\frac{1}{2}L^2K(\overrightarrow{x_2},\overrightarrow{x_2})+sLL_1K(\overrightarrow{x_1},\overrightarrow{x_2})

ΨH=H1f1+Hf2+12H12K(x1,x1)+12H2K(x2,x2)+sHH1K(x1,x2)\Psi_H=H_1f_1+Hf_2+\frac{1}{2}H_1^2K(\overrightarrow{x_1},\overrightarrow{x_1})+\frac{1}{2}H^2K(\overrightarrow{x_2},\overrightarrow{x_2})+sHH_1K(\overrightarrow{x_1},\overrightarrow{x_2})

其中:
f1=y1(E1b)α1K(x1,x1)sα2K(x1,x2)f_1=y_1(E_1-b)-\alpha_1K(\overrightarrow{x_1},\overrightarrow{x_1})-s\alpha_2K(\overrightarrow{x_1},\overrightarrow{x_2})

f2=y2(E2b)sα1K(x1,x2)α2K(x2,x2)f_2=y_2(E_2-b)-s\alpha_1K(\overrightarrow{x_1},\overrightarrow{x_2})-\alpha_2K(\overrightarrow{x_2},\overrightarrow{x_2})
3.3.启发式选择变量
上述分析是在从N个变量中已经选出两个变量进行优化的方法,下面分析如何高效地选择两个变量进行优化,使得目标函数下降的最快。

第一个变量的选择称为外循环,首先遍历整个样本集,选择违反KKT条件的aia_i作为第一个变量,接着依据相关规则选择第二个变量(见下面分析),对这两个变量采用上述方法进行优化。
当遍历完整个样本集后,遍历非边界样本集(0αiC0<\alpha_i<C)中违反KKT的αi\alpha_i作为第一个变量,同样依据相关规则选择第二个变量,对此两个变量进行优化。
当遍历完非边界样本集后,再次回到遍历整个样本集中寻找,即在整个样本集与非边界样本集上来回切换,寻找违反KKT条件的αi\alpha_i作为第一个变量。直到遍历整个样本集后,没有违反KKT条件αi\alpha_i,然后退出。
边界上的样本对应的αi=0\alpha_i=0或者αi=C\alpha_i=C,在优化过程中很难变化,然而非边界样本0&lt;αi&lt;C0&lt;\alpha_i &lt; C
会随着对其他变量的优化会有大的变化。
KKTKKT条件
αi=0y(i)(wTx(i)+b)1\alpha_i=0\Rightarrow y^{(i)}(w^Tx^{(i)}+b)≥1
αi=Cy(i)(wTx(i)+b)1\alpha_i=C\Rightarrow y^{(i)}(w^Tx^{(i)}+b)≤1
0&lt;αi&lt;Cy(i)(wTx(i)+b)=10&lt;\alpha_i &lt; C\Rightarrow y^{(i)}(w^Tx^{(i)}+b)=1

第二个变量的选择
SMO称第二个变量的选择过程为内循环,假设在外循环中找个第一个变量记为α1\alpha_1,二个变量的选择希望能使α2\alpha_2有较大的变化,由于α2\alpha_2是依赖于
E1E2|E_1-E_2|,当E1E_1为正时,那么选择最小的EiE_i作为E2E_2,如果EiE_i为负,选择最大EiE_i作为E2E_2,通常为每个样本的EiE_i保存在一个列表中,选择最大的E1E2|E_1-E_2|来近似最大化步长。
有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:

首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
如果非边界集上没有,则在整个样本集上选择第二个变量,
如果整个样本集依然不存在,则重新选择第一个变量。

4.阈值b的计算
5.每完成对两个变量的优化后,要对b的值进行更新,因为b的值关系到f(x)f(x)的计算,即关系到下次优化时EiE_i的计算

1.如果0&lt;α1new&lt;C0&lt;\alpha_1^{new}&lt; C,
由KKT条件y1(wTx1+b)=1y_1(w^Tx_1+b)=1,得到i=1NαiyiKi1+b=y1\sum_{i=1}^N\alpha_iy_iK_{i1}+b=y_1,由此得:
b1new=y1i=3NαiyiKi1α1newy1K11α2newy2K21b_1^{new}=\color{Red}{y_1-\sum_{i=3}^N \alpha_iy_iK_{i1}}-\alpha_1^{new}y_1K_{11}-\alpha_2^{new}y_2K_{21}
由(5)式得,上式前两项可以替换为:
y1i=3NαiyiKi1=E1+α1oldy1K11+α2oldy2K11+boldy_1-\sum_{i=3}^N \alpha_iy_iK_{i1}=-E_1+\alpha_1^{old}y_1K_{11}+\alpha_2^{old}y_2K_{11}+b^{old}
得出:
b1new=E1y1K11(α1newα1old)y2K21(α2newα2old)+boldb_1^{new}=-E_1-y_1K_{11}(\alpha_1^{new}-\alpha_1^{old})-y_2K_{21}(\alpha_2^{new}-\alpha_2^{old})+b^{old}

2.如果0&lt;α2new&lt;C0&lt;\alpha_2^{new} &lt; C,则
b2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+boldb_2^{new}=-E_2-y_1K_{12}(\alpha_1^{new}-\alpha_1^{old})-y_2K_{22}(\alpha_2^{new}-\alpha_2^{old})+b^{old}

3.如果同时满足0&lt;αinew&lt;C0&lt;\alpha_i^{new} &lt; C,则b1new=b2newb_1^{new}=b_2^{new}

4.如果同时不满足0&lt;αinew&lt;C0&lt;\alpha_i^{new} &lt; C,则b1newb_1^newb2newb_2^new以及它们之间的数都满足KKT阈值条件,这时选择他们的中点

相关文章: