支持向量机SVM之-SMO算法

序列最小最优化算法

序列最小最优化算法(sequential minimal optimization,简称SMO)是由Platt在1998年提出,用于解决多变量的凸优化问题。当变量个数很多的时候,一般的最优化算法通常无法有效求解最优解。此时,SMO算法的作用就会体现的淋漓尽致。针对多变量的最优解问题,SMO算法通过从变量集中选取两个变量,剩余的变量视为常量来计算局部最优解,然后再以递进的方式求出全局最优解。

SMO算法需要解决的最优化问题:min⁡α12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαi\min_{\alpha} \quad \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^N\alpha_iαmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.∑i=1Nαiyi=0s.t. \qquad \sum_{i=1}^N\alpha_iy_i=0s.t.i=1Nαiyi=0 0≤αi≤C,i=1,2,...,N0 \leq \alpha_i \leq C,i=1,2,...,N0αiC,i=1,2,...,N其中,目标函数的变量为(α1,α2,...,αN)(\alpha_1,\alpha_2,...,\alpha_N)(α1,α2,...,αN),每一个实例(xi,yi)(x_i,y_i)(xi,yi)对应一个αi\alpha_iαi

SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因此KKT条件是该最优化问题的充分必要条件。SMO算法的目标是求解满足KKT条件的(α1,α2,...,αN)(\alpha_1,\alpha_2,...,\alpha_N)(α1,α2,...,αN)。方法是选择两个变量,固定其他变量,针对这两个变量构建一个二次规划的子问题。这个二次规划子问题关于这两个变量的解更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小。二次规划子问题有两个变量,一个是主动变量,其为违反KKT条件最严重的那一个,另一个被动变量,由主动变量依据约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而达到求解原问题的目的。

对子问题进行求最优解时,假设α1,α2\alpha_1,\alpha_2α1,α2为两个变量,固定α3,α4,...,αN\alpha_3,\alpha_4,...,\alpha_Nα3,α4,...,αN,其满足的约束条件为:α1y1+α2y2=−∑i=3Nαiyi=ζ\alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^N\alpha_iy_i=\zetaα1y1+α2y2=i=3Nαiyi=ζ当更新其中一个变量α2\alpha_2α2时,相应的α1\alpha_1α1也会自动更新,进而求出子问题的最优解。

两个变量二次规划

假设α1,α2\alpha_1,\alpha_2α1,α2为两个变量,固定α3,α4,...,αN\alpha_3,\alpha_4,...,\alpha_Nα3,α4,...,αN,那么SMO的最优化问题的子问题表达为:min⁡α1,α2W(α1,α2)=12K11α12+12K22α22+y1y2K12α1α2−(α1+α2)+y1α1∑i=3NyiαiKi1+y2α2∑i=3NyiαiKi2\min_{\alpha_1,\alpha_2} \quad W(\alpha_1,\alpha_2)=\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1\sum_{i=3}^Ny_i\alpha_iK_{i1}+y_2\alpha_2\sum_{i=3}^Ny_i\alpha_iK_{i2}α1,α2minW(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1α1i=3NyiαiKi1+y2α2i=3NyiαiKi2s.t.α1y1+α2y2=−∑i=3Nαiyi=ζs.t. \quad \alpha_1y_1+\alpha_2y_2=-\sum_{i=3}^N\alpha_iy_i=\zetas.t.α1y1+α2y2=i=3Nαiyi=ζ0≤αi≤C,i=1,20 \leq \alpha_i\leq C,i=1,20αiC,i=1,2其中,Kij=K(xi,xj),i,j=1,2,...,NK_{ij}=K(x_i,x_j),i,j=1,2,...,NKij=K(xi,xj),i,j=1,2,...,Nζ\zetaζ为常数。

为了解决两个变量的最优化问题,首先分析约束条件,找出变量满足的取值范围,并在此范围内求解最优解。

依据变量的上述等式约束和不等式约束,α1,α2\alpha_1,\alpha_2α1,α2都在[0,C][0,C][0,C]范围内,并且α1,α2\alpha_1,\alpha_2α1,α2满足的直线平行于盒子范围的对角线。如果y1≠y2y_1=\not y_2y1≠y2时,则L=max(0,α2old−α1old),H=min(C,C+α2old−α1old)L=max(0,\alpha_2^{old}-\alpha_1^{old}),H=min(C,C+\alpha_2^{old}-\alpha_1^{old})L=max(0,α2oldα1old),H=min(C,C+α2oldα1old);如果y1=y2y_1= y_2y1=y2时,则L=max(0,α2old+α1old−C),H=min(C,α2old+α1old)L=max(0,\alpha_2^{old}+\alpha_1^{old}-C),H=min(C,\alpha_2^{old}+\alpha_1^{old})L=max(0,α2old+α1oldC),H=min(C,α2old+α1old)。计算的新解α1new,α2new\alpha_1^{new},\alpha_2^{new}α1new,α2new必须满足[L,H][L,H][L,H]这一范围,即L≤α2new≤HL\leq \alpha_2^{new}\leq HLα2newH,接下来两个变量的最优化问题实质上是单变量的最优化问题,因为上述的等式约束,不妨考虑为变量α2\alpha_2α2的最优化问题。

首先求沿着约束方向不考虑取值范围时的α2\alpha_2α2的最优解α2new,unc\alpha_2^{new,unc}α2new,unc;然后再求剪辑后α2\alpha_2α2的解α2new\alpha_2^{new}α2new。在此之前,先计算每个实例xix_ixi的误差g(x)=∑i=1NαiyiK(xi,x)+bg(x)=\sum_{i=1}^N\alpha_iy_iK(x_i,x)+bg(x)=i=1NαiyiK(xi,x)+bEi=g(xi)−yi=(∑i=1NαiyiK(xi,x)+b)−yi,i=1,2E_i=g(x_i)-y_i=(\sum_{i=1}^N\alpha_iy_iK(x_i,x)+b)-y_i,i=1,2Ei=g(xi)yi=(i=1NαiyiK(xi,x)+b)yi,i=1,2上式中,g(xi)g(x_i)g(xi)为实例xix_ixi的预测值,EiE_iEi为实例xix_ixi的误差。

最优化问题沿着约束方向不考虑取值范围的解为:α2new,unc=α2old+y2(E1−E2)η\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}α2new,unc=α2old+ηy2(E1E2)那么,这个公式是怎么推导出来的呢?接下来就是推导公式的详细步骤:vi=∑j=3NαjyjK(xi,xj)=g(xi)−∑j=12αjyjK(xi,xj)−b,i=1,2v_i=\sum_{j=3}^N\alpha_jy_jK(x_i,x_j)=g(x_i)-\sum_{j=1}^2\alpha_jy_jK(x_i,x_j)-b,i=1,2vi=j=3NαjyjK(xi,xj)=g(xi)j=12αjyjK(xi,xj)b,i=1,2目标函数可写成W(α1,α2)=12K11α12+12K22α22+y1y2K12α1α2−(α1+α2)+y1α1v1+y2α2v2W(\alpha_1,\alpha_2)=\frac{1}{2}K_{11}\alpha_1^2+\frac{1}{2}K_{22}\alpha_2^2+y_1y_2K_{12}\alpha_1\alpha_2-(\alpha_1+\alpha_2)+y_1\alpha_1v_1+y_2\alpha_2v_2W(α1,α2)=21K11α12+21K22α22+y1y2K12α1α2(α1+α2)+y1α1v1+y2α2v2α1y1=ζ−α2y2\alpha_1y_1=\zeta-\alpha_2y_2α1y1=ζα2y2yi2=1y_i^2=1yi2=1,可将α1\alpha_1α1表示为α1=(ζ−α2y2)y1\alpha_1=(\zeta-\alpha_2y_2)y_1α1=(ζα2y2)y1代入到上式中,得到只要一个变量α2\alpha_2α2的目标函数W(α2)=12K11(ζ−α2y2)2+12K22α22+y2K12(ζ−α2y2)α2−(ζ−α2y2)y1−α2+v1(ζ−α2y2)+y2v2α2W(\alpha_2)=\frac{1}{2}K_{11}(\zeta-\alpha_2y_2)^2+\frac{1}{2}K_{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_2W(α2)=21K11(ζα2y2)2+21K22α22+y2K12(ζα2y2)α2(ζα2y2)y1α2+v1(ζα2y2)+y2v2α2α2\alpha_2α2求导数∂W∂α2=K11α2+K22α2−2K12α2−K11ζy2+K12ζy2+y1y2−1−v1y2+y2v2\frac{\partial W}{\partial \alpha_2}=K_{11}\alpha_2+K_{22}\alpha_2-2K_{12}\alpha_2-K_{11}\zeta y_2+K_{12}\zeta y_2+y_1y_2-1-v_1y_2+y_2v_2α2W=K11α2+K22α22K12α2K11ζy2+K12ζy2+y1y21v1y2+y2v2令其为0,即(K11+K22−2K12)α2=y2(y2−y1+ζK11−ζK12+v1−v2)=y2[y2−y1+ζK11−ζK12+(g(xi)−∑j=12yjαjK1j−b)−(g(x2−∑j=12yjαjK2j−b)](K_{11}+K_{22}-2K_{12})\alpha_2=y_2(y_2-y_1+\zeta K_{11}-\zeta K_{12}+v_1-v_2)\\ =y_2\left[y_2-y_1+\zeta K_{11} - \zeta K_{12} +(g(x_i)-\sum_{j=1}^2y_j\alpha_jK_{1j}-b)-(g(x_2-\sum_{j=1}^2y_j\alpha_jK_{2j}-b)\right](K11+K222K12)α2=y2(y2y1+ζK11ζK12+v1v2)=y2[y2y1+ζK11ζK12+(g(xi)j=12yjαjK1jb)(g(x2j=12yjαjK2jb)]ζ=α1oldy1+α2oldy2\zeta=\alpha_1^{old}y_1+\alpha_2^{old}y_2ζ=α1oldy1+α2oldy2代入,得到(K11+K22−2K12)α2new,unc=y2((K11+K22−2K12)α2oldy2+y2−y1+g(x1)−g(x2))=(K11+K22−2K12)α2old+y2(E1−E2)\begin{aligned}(K_{11}+K_{22}-2K_{12})\alpha_2^{new,unc} &= y_2((K_{11}+K_{22}-2K_{12})\alpha_2^{old}y_2+y_2-y_1+g(x_1)-g(x_2)) \\ &=(K_{11}+K_{22}-2K_{12})\alpha_2^{old}+y_2(E_1-E_2)\end{aligned}(K11+K222K12)α2new,unc=y2((K11+K222K12)α2oldy2+y2y1+g(x1)g(x2))=(K11+K222K12)α2old+y2(E1E2)η=K11+K22−2K12\eta=K_{11}+K_{22}-2K_{12}η=K11+K222K12代入,得到α2new,unc=α2old+y2(E1−E2)η\alpha_2^{new,unc}=\alpha_2^{old}+\frac{y_2(E_1-E_2)}{\eta}α2new,unc=α2old+ηy2(E1E2)

然后,经过范围的约束得到的新解为
α2new={H,α2new,unc&gt;Hα2new,unc,L≤α2new,unc≤HL,α2new,unc&lt;L\alpha_2^{new} = \begin{cases} H \qquad, \alpha_2^{new,unc}&gt;H \\ \alpha_2^{new,unc}, L \leq \alpha_2^{new,unc} \leq H \\ L \qquad, \alpha_2^{new,unc} &lt; L \end{cases}α2new=H,α2new,unc>Hα2new,unc,Lα2new,uncHL,α2new,unc<L
α2new\alpha_2^{new}α2new计算得到α1new=α1old+y1y2(α2old−α2new)\alpha_1^{new}=\alpha_1^{old}+y_1y_2(\alpha_2^{old}-\alpha_2^{new})α1new=α1old+y1y2(α2oldα2new)

计算截距b和误差EiE_iEi

每次完成两个变量的更新优化后,都要重新计算截距b。当0&lt;α1new&lt;C0&lt;\alpha_1^{new}&lt;C0<α1new<C时,由KKT条件可知:∑i=1NαiyiKi1+b=y1\sum_{i=1}^N\alpha_iy_iK_{i1}+b=y_1i=1NαiyiKi1+b=y1于是得到:b1new=y1−∑i=3NαiyiKi1−α1newy1K11−α2newy2K21b_1^{new}=y_1-\sum_{i=3}^N\alpha_iy_iK_{i1}-\alpha_1^{new}y_1K_{11}-\alpha_2^{new}y_2K_{21}b1new=y1i=3NαiyiKi1α1newy1K11α2newy2K21E1E_1E1的定义:E1=∑i=3NαiyiKi1−α1oldy1K11−α2oldy2K21+bold−y1E1=\sum_{i=3}^N\alpha_iy_iK_{i1}-\alpha_1^{old}y_1K_{11}-\alpha_2^{old}y_2K_{21}+b^{old}-y_1E1=i=3NαiyiKi1α1oldy1K11α2oldy2K21+boldy1将上式代入到E1E_1E1中得到:b1new=−E1−y1K11(α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}b1new=E1y1K11(α1newα1old)y2K21(α2newα2old)+bold同理,如果0&lt;α2new&lt;C0&lt;\alpha_2^{new}&lt;C0<α2new<C,那么b2new=−E2−y1K12(α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}b2new=E2y1K12(α1newα1old)y2K22(α2newα2old)+bold如果α1new,α2new\alpha_1^{new},\alpha_2^{new}α1new,α2new是0或者C,那么bnew=b1new+b2new2b^{new}=\frac{b_1^{new}+b_2^{new}}{2}bnew=2b1new+b2new

更新bnewb^{new}bnew之后,还要更新对应的EiE_iEiEinew=∑j=1NyjαjK(xi,xj)+bnew−yiE_i^{new}=\sum_{j=1}^Ny_j\alpha_jK(x_i,x_j)+b^{new}-y_iEinew=j=1NyjαjK(xi,xj)+bnewyi

SMO算法

输入:线性可分训练集T={(x1,y1),(x2,y2),...,(xN,yN)}T=\left\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\right\}T={(x1,y1),(x2,y2),...,(xN,yN)},其中,xi∈X=Rn,yi∈Y={+1,−1},i=1,2,...,Nx_i\in \mathcal {X}=R^n,y_i \in \mathcal {Y}=\left\{+1,-1\right\},i=1,2,...,NxiX=Rn,yiY={+11},i=1,2,...,N,精度ε\varepsilonε
输出:近似解α\alphaα

  • 取初值α(0)=0\alpha^{(0)}=0α(0)=0,令k=0
  • 选取优化变量α1(k),α2(k)\alpha_1^{(k)},\alpha_2^{(k)}α1(k),α2(k),解析求解两个变量的最优化问题,求得最优解α1(k+1),α2(k+1)\alpha_1^{(k+1)},\alpha_2^{(k+1)}α1(k+1),α2(k+1),更新α\alphaαα(k+1)\alpha^{(k+1)}α(k+1)
  • 若在精度ε\varepsilonε范围内满足停止条件∑i=1Nαiyi=0\sum_{i=1}^N\alpha_iy_i=0i=1Nαiyi=00≤αi≤C,i=1,2,...,N0\leq \alpha_i \leq C,i=1,2,...,N0αiC,i=1,2,...,Ny.g(xi)={≥1,{xi∣αi=0}=1,{xi∣0&lt;αi&lt;C}≤1,{xi∣αi=C}y.g(x_i)=\begin{cases} \ge 1, \left\{x_i|\alpha_i=0\right\} \\ =1, \left\{x_i|0 &lt; \alpha_i &lt; C\right\} \\ \leq 1, \left\{x_i|\alpha_i=C\right\} \end{cases}y.g(xi)=1,{xiαi=0}=1,{xi0<αi<C}1,{xiαi=C}其中g(xi)=∑j=1NαjyjK(xi,xj)+bg(x_i)=\sum_{j=1}^N\alpha_jy_jK(x_i,x_j)+bg(xi)=j=1NαjyjK(xi,xj)+b则转到下一步,否则令k=k+1,转到第2步;
  • α=α(k+1)\alpha=\alpha^{(k+1)}α=α(k+1)
变量的选择
  1. 第一个变量的选择
    KKT条件:αi=0⇔yig(xi)≥1\alpha_i=0\Leftrightarrow y_ig(x_i)\ge 1αi=0yig(xi)10&lt;αi&lt;C⇔yig(xi)=10&lt;\alpha_i&lt;C\Leftrightarrow y_ig(x_i)= 10<αi<Cyig(xi)=1αi=C⇔yig(xi)≤1\alpha_i=C\Leftrightarrow y_ig(x_i)\leq 1αi=Cyig(xi)1SMO选择第1个变量的过程称为外层循环。外层循环在训练样本中选取违反KKT条件最严重的样本点,并将其对应的变量作为第1个变量。该检验是在ε\varepsilonε范围内进行的。检验过程中,外层循环首先遍历所有满足条件的0&lt;αi&lt;C0 &lt; \alpha_i &lt; C0<αi<C的样本点,检验它们是否满足KKT条件。如果这些样本点都不满足KKT条件,那么遍历整个训练集,检验它们是否满足KKT条件。
  2. 第2个变量的选择
    SMO选择第2个变量的过程称为内层循环。假设外层循环找到第1个变量α1\alpha_1α1,现在在内层循环中找到第2个变量α2\alpha_2α2。第2个变量的选择标准是使∣α1−α2∣|\alpha_1-\alpha_2|α1α2有足够大的变化。因为α2new\alpha_2^{new}α2new是依赖于∣α1−α2∣|\alpha_1-\alpha_2|α1α2,选择一个α2\alpha_2α2,使得∣α1−α2∣|\alpha_1-\alpha_2|α1α2尽可能的大,从而加快计算速度。如果E1E_1E1是正的,那么选择最小的EiE_iEi作为E2E_2E2;如果E1E_1E1是负的,那么选择最大的EiE_iEi作为E2E_2E2
参考文献
  • 李航 《统计学习方法》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值