SVM算法(五)SMO算法

根据前文SVM算法(四)接近线性可分的SVM求解,通过软边界的设定以及拉格朗日函数对偶问题的求解,同时引入核函数,最终的分隔面求解问题变成了如下拉格朗日乘子 α \alpha α的二次规划问题:
min ⁡ α 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) − ∑ i = 1 n α i s . t . 0 ≤ α ≤ C ∑ i = 1 n α i y i = 0 \begin{aligned}&\min_\alpha \frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum\limits_{i=1}^n\alpha_i\\&s.t.\quad 0\le\alpha\le C\\&\qquad \sum_{i=1}^n\alpha_iy_i=0 \end{aligned} αmin21i=1nj=1nαiαjyiyjK(xi,xj)i=1nαis.t.0αCi=1nαiyi=0求解二次规划问题有多种方法,本文介绍常用的SMO算法(序列最小化优化,Sequential Minimal Optimization),其优点主要体现在:每次对一组 α i , α j \alpha_i,\alpha_j αi,αj进行迭代优化,可以减小计算量。

一、一组 α i , α j \alpha_i,\alpha_j αi,αj的二次优化问题

对偶问题中存在 n n n个未知量 α \alpha α(即拉格朗日乘子,数量等同于数据量),目标解应能够满足KKT条件,当然满足KKT条件的一组 α \alpha α即为目标解。根据SVM算法(四)接近线性可分的SVM求解中对各类点与分隔面的关系论述,存在如下三种情况,分别对应于错分点(需通过软件软间隔修正)、支持向量和远离分割面点(划分正确): α i = C ⇔ y i ( w x i + b ) ≤ 1 0 < α i < C ⇔ y i ( w x i + b ) = 1 α i = 0 ⇔ y i ( w x i + b ) ≥ 1 \begin{aligned}&\alpha_i=C \Leftrightarrow y_i(wx_i+b)\le1\\& 0<\alpha_i<C \Leftrightarrow y_i(wx_i+b)=1\\&\alpha_i=0 \Leftrightarrow y_i(wx_i+b)\ge1\end{aligned} αi=Cyi(wxi+b)10<αi<Cyi(wxi+b)=1αi=0yi(wxi+b)1我们难以一次性求出满足适合于上述条件的一组 α \alpha α,根据问题分解的思想,我们假设每次只变动两个变量 α i , α j \alpha_i,\alpha_j αi,αj,固定住其它变量,通过这种迭代,可以使目标函数不断变小,从而求得满足KKT条件的全部 α \alpha α,使得目标函数的最小值。
根据这种思想,不妨只探讨变量为 α 1 \alpha_1 α1 α 2 \alpha_2 α2情形,此时最小化问题可改写为: min ⁡ α 1 , α 2 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + α 1 y 1 ∑ i = 3 n α i y i K 1 i + α 2 y 2 ∑ i = 3 n α i y i K 2 i − α 1 − α 2 s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 n α i y i = ζ 0 ≤ α 1 ≤ C , 0 ≤ α 2 ≤ C \begin{aligned}&\min_{\alpha_1,\alpha_2}\frac{1}{2}\alpha_1^2K_{11}+\frac{1}{2}\alpha_2^2K_{22}+\alpha_1y_1\sum_{i=3}^n\alpha_iy_iK_{1i}+\alpha_2y_2\sum_{i=3}^n\alpha_iy_iK_{2i}-\alpha_1-\alpha_2\\&s.t.\quad\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^n\alpha_iy_i=\zeta\\&\qquad0\le\alpha_1\le C,0\le\alpha_2\le C\end{aligned} α1,α2min21α12K11+21α22K22+α1y1i=3nαiyiK1i+α2y2i=3nαiyiK2iα1α2s.t.α1y1+α2y2=i=3nαiyi=ζ0α1C,0α2C其中 K i j K_{ij} Kij表示 K ( x i , x j ) K(x_i,x_j) K(xi,xj)暂不考虑可行域,将 α 1 = y 1 ( ζ − α 2 y 2 ) \alpha_1=y_1(\zeta-\alpha_2y_2) α1=y1(ζα2y2)代入目标函数,可得: W = 1 2 K 11 ( ζ − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + ( ζ − α 2 y 2 ) α 2 y 2 K 12 − y 1 ( ζ − α 2 y 2 ) − α 2 + ∑ i = 3 n ( ζ − α 2 y 2 ) α i y i K 1 i + ∑ i = 3 n α 2 y 2 α i y i K 2 i W=\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{22}\alpha_2^2+(\zeta-\alpha_2y_2)\alpha_2y_2K_{12}-y_1(\zeta-\alpha_2y_2)-\alpha_2+\sum_{i=3}^n(\zeta-\alpha_2y_2)\alpha_iy_iK_{1i}+\sum_{i=3}^n\alpha_2y_2\alpha_iy_iK_{2i} W=21K11(ζα2y2)2+21K22α22+(ζα2y2)α2y2K12y1(ζα2y2)α2+i=3n(ζα2y2)αiyiK1i+i=3nα2y2αiyiK2i为方便推导,不妨令: g ( x j ) = ∑ i = 1 n α i y i K i j + b v ( x j ) = ∑ i = 3 n α i y i K i j = g ( x j ) − α 1 y 1 K 1 j − α 2 y 2 K 2 j − b \begin{aligned}&g(x_j)=\sum_{i=1}^n\alpha_iy_iK_{ij}+b\\&v(x_j)=\sum_{i=3}^n\alpha_iy_iK_{ij}=g(x_j)-\alpha_1y_1K_{1j}-\alpha_2y_2K_{2j}-b\end{aligned} g(xj)=i=1nαiyiKij+bv(xj)=i=3nαiyiKij=g(xj)α1y1K1jα2y2K2jb注意到 g ( x i ) g(x_i) g(xi)即为根据参数 α , b \alpha,b α,b得到的 x i x_i xi的预测值(未加符号函数,可理解成函数距离),因此目标函数可进一步写成: W = 1 2 K 11 ( ζ − α 2 y 2 ) 2 + 1 2 K 22 α 2 2 + ( ζ − α 2 y 2 ) α 2 y 2 K 12 − y 1 ( ζ − α 2 y 2 ) − α 2 + ( ζ − α 2 y 2 ) v 1 + α 2 y 2 v 2 W=\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{22}\alpha_2^2+(\zeta-\alpha_2y_2)\alpha_2y_2K_{12}-y_1(\zeta-\alpha_2y_2)-\alpha_2+(\zeta-\alpha_2y_2)v_1+\alpha_2y_2v_2 W=21K11(ζα2y2)2+21K22α22+(ζα2y2)α2y2K12y1(ζα2y2)α2+(ζα2y2)v1+α2y2v2
这是关于 α 2 \alpha_2 α2单变量的二次函数,通过令其导数为0求得最值: ∂ W ∂ α 2 = α 2 ( K 11 + K 22 − 2 K 12 ) − ζ y 2 K 11 + ζ y 2 K 12 + y 1 y 2 − 1 − y 2 v 1 + y 2 v 2 = 0 \frac{\partial W}{\partial \alpha_2}=\alpha_2(K_{11}+K_{22}-2K_{12})-\zeta y_2K_{11}+\zeta y_2K_{12}+y_1y_2-1-y_2v_1+y_2v_2=0 α2W=α2(K11+K222K12)ζy2K11+ζy2K12+y1y21y2v1+y2v2=0 v 1 , v 2 v_1,v_2 v1,v2分别用 g ( x 1 ) , g ( x 2 ) g(x_1),g(x_2) g(x1),g(x2)表示,以及 y 2 2 = 1 y_2^2=1 y22=1可得 ( K 11 + K 22 − 2 K 12 ) α 2 = y 2 ( ζ K 11 − ζ K 12 − y 1 + y 2 + v 1 − v 2 ) = y 2 [ ζ K 11 − ζ K 12 − y 1 + y 2 + ( g ( x 1 ) − α 1 y 1 K 11 − α 2 y 2 K 12 − b ) − ( g ( x 2 ) − α 1 y 1 K 12 − α 2 y 2 K 22 − b ) ] \begin{aligned}(K_{11}+K_{22}-2K_{12})\alpha_2&=y_2(\zeta K_{11}-\zeta K_{12}-y_1+y_2+v_1-v_2)\\&=y_2[\zeta K_{11}-\zeta K_{12}-y_1+y_2+(g(x_1)-\alpha_1y_1K_{11}-\alpha_2y_2K_{12}-b)-(g(x_2)-\alpha_1y_1K_{12}-\alpha_2y_2K_{22}-b)]\end{aligned} (K11+K222K12)α2=y2(ζK11ζK12y1+y2+v1v2)=y2[ζK11ζK12y1+y2+(g(x1)α1y1K11α2y2K12b)(g(x2)α1y1K12α2y2K22b)]注意到,在上式等号左端项的 α 2 \alpha_2 α2为更新后的目标参数(用 α 2 n e w \alpha_2^{new} α2new表示),而等号右端项中由 ζ , v \zeta, v ζ,v得到的 α 1 , α 2 \alpha_1,\alpha_2 α1,α2均为预先固定,即更新前的参数值(用 α 2 o l d \alpha_2^{old} α2old表示)。
同时,令 E i E_i Ei表示预测函数距离与真实 y i y_i yi的差,即: E i = g ( x i ) − y i E_i=g(x_i)-y_i Ei=g(xi)yi因此,导数为0的式子可简化为: ( K 11 + K 22 − 2 K 12 ) α 2 n e w = ( K 11 + K 22 − 2 K 12 ) α 2 o l d + y 2 ( E 1 − E 2 ) (K_{11}+K_{22}-2K_{12})\alpha_2^{new}=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2) (K11+K222K12)α2new=(K11+K222K12)α2old+y2(E1E2)这即为 α 2 \alpha_2 α2的迭代公式,根据约束条件 α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta α1y1+α2y2=ζ,可同步更新对应的 α 1 \alpha_1 α1

二、带约束最小问题的求解

在上面的推导过程中,还存在两点漏洞需要解决:
(1)如何保证经过这样迭代的目标 W W W变小?
(2) α 2 \alpha_2 α2在求解中忽略了可行域的影响。

对于问题(1),注意到 W W W关于 α 2 \alpha_2 α2的二次项系数为 K 11 + K 22 − 2 K 12 K_{11}+K_{22}-2K_{12} K11+K222K12,假设对应核函数 K K K的隐式特征空间变换函数为 ϕ \phi ϕ,则该系数可写成: ϕ ( x 1 ) ϕ ( x 1 ) + ϕ ( x 2 ) ϕ ( x 2 ) − 2 ϕ ( x 1 ) ϕ ( x 2 ) = ∣ ∣ ϕ ( x 1 ) − ϕ ( x 2 ) ∣ ∣ 2 ≥ 0 \phi(x_1)\phi(x_1)+\phi(x_2)\phi(x_2)-2\phi(x_1)\phi(x_2)=||\phi(x_1)-\phi(x_2)||^2\ge0 ϕ(x1)ϕ(x1)+ϕ(x2)ϕ(x2)2ϕ(x1)ϕ(x2)=ϕ(x1)ϕ(x2)20非特殊情况下, ϕ ( x 1 ) ≠ ϕ ( x 2 ) \phi(x_1)\ne \phi(x_2) ϕ(x1)=ϕ(x2),这意味着目标函数 W W W为开口向上的二次函数,存在最小值。通过令梯度为0可以保证目标函数变小。
η = K 11 + K 22 − 2 K 12 \eta=K_{11}+K_{22}-2K_{12} η=K11+K222K12,则 α 2 \alpha_2 α2的迭代公式可改写为: α 2 n e w = α 2 o l d + y 2 ( E 1 − E 2 ) η \alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta} α2new=α2old+ηy2(E1E2)

对于问题(2),因为 α 1 y 1 + α 2 y 2 = ζ \alpha_1y_1+\alpha_2y_2=\zeta α1y1+α2y2=ζ,且 0 ≤ α ≤ C 0\le\alpha\le C 0αC,显然 α 2 \alpha_2 α2并不能任意取值。因为 y 1 , y 2 ∈ { + 1 , − 1 } y_1,y_2\in\{+1,-1\} y1,y2{+1,1},所里存在两种情况: y 1 = y 2 y_1=y_2 y1=y2 y 1 ≠ y 2 y_1\ne y_2 y1=y2
又考虑到等式的对称性,不妨令这两种情况分别对应于: α 1 − α 2 = ζ α 1 + α 2 = ζ \begin{aligned}\alpha_1-\alpha_2=\zeta\\\alpha_1+\alpha_2=\zeta\end{aligned} α1α2=ζα1+α2=ζ分别用二维平面表示约束条件:
在这里插入图片描述
对于 α 1 − α 2 = ζ \alpha_1-\alpha_2=\zeta α1α2=ζ
如果 ζ > 0 \zeta>0 ζ>0,即 α 1 > α 2 \alpha_1>\alpha_2 α1>α2,新的 α 2 \alpha_2 α2约束边界为 [ 0 , C − ζ ] [0, C-\zeta] [0,Cζ];
如果 ζ < 0 \zeta<0 ζ<0,即 α 1 < α 2 \alpha_1<\alpha_2 α1<α2,新的 α 2 \alpha_2 α2约束边界为 [ − ζ , C ] [-\zeta, C] [ζ,C]
将两者合并,边界为 [ max ⁡ ( 0 , − ζ ) , min ⁡ ( C , C − ζ ) ] [\max(0, -\zeta), \min(C,C-\zeta)] [max(0,ζ),min(C,Cζ)],用原始的 α 1 o l d , α 2 o l d \alpha_1^{old},\alpha_2^{old} α1old,α2old表示,即为:
L = max ⁡ ( 0 , α 2 o l d − α 1 o l d ) H = min ⁡ ( C , C + α 2 o l d − α 1 o l d ) \begin{aligned}&L=\max(0,\alpha_2^{old}-\alpha_1^{old})\\&H=\min(C,C+\alpha_2^{old}-\alpha_1^{old})\end{aligned} L=max(0,α2oldα1old)H=min(C,C+α2oldα1old)
对于 α 1 + α 2 = ζ \alpha_1+\alpha_2=\zeta α1+α2=ζ
如果 ζ < C \zeta<C ζ<C,新的 α 2 \alpha_2 α2约束边界为 [ 0 , ζ ] [0, \zeta] [0,ζ];
如果 ζ > C \zeta>C ζ>C,新的 α 2 \alpha_2 α2约束边界为 [ ζ − C , C ] [\zeta-C, C] [ζC,C];
将两者合并,边界为 [ max ⁡ ( 0 , ζ − C ) , min ⁡ ( C , ζ ) ] [\max(0, \zeta-C), \min(C,\zeta)] [max(0,ζC),min(C,ζ)]
用原始的 α 1 o l d , α 2 o l d \alpha_1^{old},\alpha_2^{old} α1old,α2old表示,即为:
L = max ⁡ ( 0 , α 2 o l d + α 1 o l d − C ) H = min ⁡ ( C , α 2 o l d + α 1 o l d ) \begin{aligned}&L=\max(0,\alpha_2^{old}+\alpha_1^{old}-C)\\&H=\min(C,\alpha_2^{old}+\alpha_1^{old})\end{aligned} L=max(0,α2old+α1oldC)H=min(C,α2old+α1old)
因此,在求得无约束的最优解 α 2 n e w , u n c \alpha_2^{new,unc} α2new,unc,后需要根据约束边界进行裁剪。经裁剪后的最优解是: α 2 n e w = { H , α 2 n e w , u n c > H α 2 n e w , u n c , L ≤ α 2 n e w , u n c ≤ H L , α 2 n e w , u n c < L \alpha_2^{new}=\begin{cases}H,\alpha_2^{new,unc}>H\\\alpha_2^{new,unc},L\le \alpha_2^{new,unc} \le H\\ L,\alpha_2^{new,unc}<L\end{cases} α2new=H,α2new,unc>Hα2new,unc,Lα2new,uncHL,α2new,unc<L

三、SMO算法流程

基于上述的推导,完整的SMO算法流程如下:
1)选取一组初值 α i ( 0 ) \alpha_i^{(0)} αi(0)(一般取0),上标 k k k表示迭代轮数,对于初值即 k = 0 k=0 k=0
2)选择一组需要更新的 α 1 ( k ) , α 2 ( k ) \alpha_1^{(k)},\alpha_2^{(k)} α1(k),α2(k)。那如何选择呢?其包含外循环寻找 α 1 ( k ) \alpha_1^{(k)} α1(k)和内循环寻找 α 2 ( k ) \alpha_2^{(k)} α2(k)两个阶段。
外循环搜索 α 1 ( k ) \alpha_1^{(k)} α1(k)。注意到最优解 α ∗ \alpha^* α满足KKT条件,无需更新。那意味着需要迭代的 α i \alpha_i αi必然违背KKT条件。因此我们可以按照支持向量点(对应 0 < α i < C 0<\alpha_i <C 0<αi<C)——>所有其余点的顺序选出违背KKT条件最严重的一组点作为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1),对应的拉格朗日乘子即为 α 1 ( k ) \alpha_1^{(k)} α1(k)
内循环搜索 α 2 ( k ) \alpha_2^{(k)} α2(k)。注意到 α 2 n e w = α 2 o l d + y 2 ( E 1 − E 2 ) η \alpha_2^{new}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta} α2new=α2old+ηy2(E1E2),为使得迭代加速,希望 α 2 \alpha_2 α2变换程度大。换言之,希望 y 2 ( E 1 − E 2 ) η \frac{y_2(E_1-E_2)}{\eta} ηy2(E1E2)的绝对值大。一种简单的做法是,选择与 E 1 E_1 E1符号相反、且绝对值最大的 E 2 E_2 E2对应的点作为 ( x 2 , y 2 ) (x_2,y_2) (x2,y2),对应的拉格朗日乘子即为 α 2 ( k ) \alpha_2^{(k)} α2(k)
3)按照上文的解析方法,得到更新的后的 α 1 ( k + 1 ) , α 2 ( k + 1 ) \alpha_1^{(k+1)},\alpha_2^{(k+1)} α1(k+1),α2(k+1)
4)如果所有的 α i ( k + 1 ) \alpha_i^{(k+1)} αi(k+1)均满足约束条件和KKT条件,即满足: ∑ i = 1 n α i ( k + 1 ) y i = 0 0 ≤ α i ( k + 1 ) ≤ C y i ∗ g ( x i ) = { ≥ 1 , i f α i = 0 = 1 , i f 0 < α i < C ≤ 1 , i f α i = C \begin{aligned}&\sum_{i=1}^n\alpha_i^{(k+1)}y_i=0\\&0\le\alpha_i^{(k+1)}\le C\\&y_i*g(x_i)=\begin{cases}\ge1,if \quad \alpha_i=0\\=1, if \quad 0<\alpha_i<C\\\le1,if \quad \alpha_i=C\end{cases}\end{aligned} i=1nαi(k+1)yi=00αi(k+1)Cyig(xi)=1,ifαi=0=1,if0<αi<C1,ifαi=C其中 g ( x i ) g(x_i) g(xi)为根据当前 α ( k ) \alpha^{(k)} α(k)得到的预测的函数间距,即 g ( x i ) = ∑ j = 1 n α j ( k + 1 ) y j K ( x j , x i ) + b g(x_i)=\sum_{j=1}^n\alpha_j^{{(k+1)}}y_jK(x_j,x_i)+b g(xi)=j=1nαj(k+1)yjK(xj,xi)+b则取得目标最优的一组 α ∗ \alpha^* α
否则,转向步骤2)进行下一轮 α ( k + 1 ) \alpha^{(k+1)} α(k+1)的筛选和迭代。

四、小结

SMO算法是求解SVM对偶问题(二次规划问题)的一种快速迭代算法。其将原始 n n n个拉格朗日乘子的最优化求解分解为一组 α 1 , α 2 \alpha_1,\alpha_2 α1,α2的子问题进行逐个解决,最终求得满足约束条件和KKT条件的最优解。
这种将问题分解为子问题,进行局部解决和迭代的思想值得深刻理解和掌握。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值