机器学习 - 支持向量机(4)- SMO(序列最小最优化算法)

机器学习 - 支持向量机(4)- SMO(序列最小最优化算法)

  • 动机

    SVM 的学习可以转化为求解凸二次规划问题,这样可以得到全局最优解,而且对于很多最优化问题具有通用性。但是学习过程中需要计算 α ∗ α^* α,而其中的个数又与训练数据的样本大小相等,所以当数据量非常大时,其计算的效率很低,所以我们想要高效的地实现 SVM 算法。

    下面就到了 序列最小最优化(Sequential minimal optimization,SMO) 算法出场的时刻了。

  • 算法过程

    对于 SVM 的凸二次规划的对偶问题:

    α min ⁡ 1 2 ∑ i = 1 M ∑ j = 1 M α i α j y i y j k ( x i ⋅ x j ) − ∑ i = 1 M α i \mathop{}_{α}^{\min} \frac{1}{2}\sum_{i=1}^{M}\sum_{j=1}^{M}α_iα_jy_iy_jk(x_i·x_j)-\sum_{i=1}^{M}α_i αmin21i=1Mj=1Mαiαjyiyjk(xixj)i=1Mαi

    s . t . s.t. s.t. ∑ i = 1 M α i y i = 0 \sum_{i=1}^{M}α_iy_i=0 i=1Mαiyi=0

            0 ≤ α i ≤ C , i = 1 , 2 , . . . , M 0\leα_i\le C,i=1,2,...,M 0αiC,i=1,2,...,M

    其中每一个变量 α i α_i αi 对应于一个样本点 ( x i , y i ) (x_i,y_i) (xi,yi),对于如此多的变量,SMO 算法的思路是:因为 KKT 条件是该最优化问题最优解的充分必要条件,所以,如果所有变量的解都满足此最优化问题的 KKT 条件,那么这个最优化问题的解就得到了。那么为了使得所有 α α α 都满足 KKT 条件,我们每次对其中两个 α α α 进行一个 二次规划的子问题 的求解。以此,不断的将原问题分解为子问题并对子问题求解,每一步都得到最优,进而达到求解原始问题的目的。

    那么为什么选择两个 α α α 而不是其他数量呢,因为我们已知:

    ∑ i = 1 M α i y i = 0 \sum_{i=1}^{M}α_iy_i=0 i=1Mαiyi=0

    如果选择一个 α α α,那么上式就变为:

    α 1 + ∑ i = 2 M α i y i = 0 ⟹ a 1 = − ∑ i = 2 M α i y i α_1 + \sum_{i=2}^{M}α_iy_i=0 \Longrightarrow a_1 = -\sum_{i=2}^{M}α_iy_i α1+i=2Mαiyi=0a1=i=2Mαiyi

    我们的思想是其他 α α α 不变,只选择少数几个 α α α 作为变量,而此时若只选择一个,那么这是一个恒等式,所以单变量的子问题也无法求解。而多选几个计算比较麻烦,所以我们选取两个 α α α 作为变量。

    1. 两个变量的二次规划

      假设我们选择 α 1 , α 2 α_1,α_2 α1,α2 作为变量,其他为 α i ( i = 3 , 4 , . . . , M ) α_i(i=3,4,...,M) αi(i=3,4,...,M) 是固定的,于是 SMO 的最优化问题的子问题可以写成(将 α 1 , α 2 α_1,α_2 α1,α2 单独拿出来):

      α min ⁡ 1 2 k 11 α 1 2 + 1 2 k 22 α 2 2 + y 1 y 2 k 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 M y i α i k i 1 + y 2 α 2 ∑ i = 3 M y i α i k i 2 \mathop{}_{α}^{\min} \frac{1}{2} k_{11}α_1^2+ \frac{1}{2} k_{22}α_2^2+y_1y_2k_{12}α_1α_2-(α_1+α_2)+y_1α_1\sum_{i=3}^{M}y_iα_ik_{i1}+y_2α_2\sum_{i=3}^{M}y_iα_ik_{i2} αmin21k11α12+21k22α22+y1y2k12α1α2(α1+α2)+y1α1i=3Myiαiki1+y2α2i=3Myiαiki2

      s . t . s.t. s.t. α 1 y 1 + α 2 y 2 = − ∑ i = 3 M α i y i = ζ α_1y_1+α_2y_2=-\sum_{i=3}^{M}α_iy_i=ζ α1y1+α2y2=i=3Mαiyi=ζ

              0 ≤ α i ≤ C , i = 1 , 2 , . . . , M 0\leα_i\le C,i=1,2,...,M 0αiC,i=1,2,...,M

      因为 − ∑ i = 3 M α i y i -\sum_{i=3}^{M}α_iy_i i=3Mαiyi 是常量,所以用 ζ ζ ζ 代替。其中 k 12 k_{12} k12 表示 x 1 , x 2 x_1,x_2 x1,x2 的核函数内积。

      根据约束条件:

      s . t . s.t. s.t. α 1 y 1 + α 2 y 2 = − ∑ i = 3 M α i y i = ζ α_1y_1+α_2y_2=-\sum_{i=3}^{M}α_iy_i=ζ α1y1+α2y2=i=3Mαiyi=ζ

              0 ≤ α i ≤ C , i = 1 , 2 , . . . , M 0\leα_i\le C,i=1,2,...,M 0αiC,i=1,2,...,M

      α 1 y 1 + α 2 y 2 = ζ α_1y_1+α_2y_2=ζ α1y1+α2y2=ζ 视为线性方程, 0 ≤ α i ≤ C , i = 1 , 2 , . . . , M 0\leα_i\le C,i=1,2,...,M 0αiC,i=1,2,...,M 为定义域,那么不等式约束可形象化为:

      ( α 1 , α 2 ) (α_1,α_2) (α1,α2) 在 C*C 的矩形区域内的,平行于对角线的线段上,如图:
      约束条件的形象化表示

      这使得两个变量的优化问题可以变为单变量的优化问题,我们以 α 2 α_2 α2 为研究对象:

      假设问题的初始可行解为 α 1 o l d , α 2 o l d α_1^{old},α_2^{old} α1old,α2old,未通过约束条件剪辑的最优解为 α 1 n e w , u n c , α 2 n e w , u n c α_1^{new,unc},α_2^{new,unc} α1new,unc,α2new,unc,剪辑后的最优解为 α 1 n e w , α 2 n e w α_1^{new},α_2^{new} α1new,α2new.

      因为需要满足不等式 0 ≤ α 2 ≤ C , i = 1 , 2 , . . . , M 0\leα_2\le C,i=1,2,...,M 0α2C,i=1,2,...,M,所以: L ≤ α 2 n e w ≤ H L\le α_2^{new}\le H Lα2newH,L,H 为所在对角线端点的界:

      ∙ \bullet 当 y1≠y2 时,如上图中的左图

      L = max ⁡ ( 0 , α 2 o l d − α 1 o l d ) , H = min ⁡ ( C , C + α 1 o l d + α 2 o l d ) L=\max(0,α_2^{old}-α_1^{old}),H=\min(C,C+α_1^{old}+α_2^{old}) L=max(0,α2oldα1old),H=min(C,C+α1old+α2old)

      ∙ \bullet 当 y1=y2 时,如上图中的右图

      L = max ⁡ ( 0 , α 1 o l d + α 2 o l d − C ) , H = ≤ min ⁡ ( C , α 1 o l d + α 2 o l d ) L=\max(0,α_1^{old}+α_2^{old}-C),H=\le\min(C,α_1^{old}+α_2^{old}) L=max(0,α1old+α2oldC),H=min(C,α1old+α2old)

      而后根据 α 2 n e w α_2^{new} α2new 计算 α 1 n e w α_1^{new} α1new.

      此时子问题的两个变量 α 1 n e w , α 2 n e w α_1^{new},α_2^{new} α1new,α2new 求解完毕。


      下面介绍详细计算过程:

      1. 对目标

        W ( α 1 , α 2 ) = 1 2 k 11 α 1 2 + 1 2 k 22 α 2 2 + y 1 y 2 k 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 ∑ i = 3 M y i α i k i 1 + y 2 α 2 ∑ i = 3 M y i α i k i 2 W(α_1,α_2)=\frac{1}{2} k_{11}α_1^2+ \frac{1}{2} k_{22}α_2^2+y_1y_2k_{12}α_1α_2-(α_1+α_2)+y_1α_1\sum_{i=3}^{M}y_iα_ik_{i1}+y_2α_2\sum_{i=3}^{M}y_iα_ik_{i2} W(α1,α2)=21k11α12+21k22α22+y1y2k12α1α2(α1+α2)+y1α1i=3Myiαiki1+y2α2i=3Myiαiki2

        我们引入变量 v i = ∑ j = 3 M y j α j k j i v_i=\sum_{j=3}^{M}y_jα_jk_{ji} vi=j=3Myjαjkji,得到:

        W ( α 1 , α 2 ) = 1 2 k 11 α 1 2 + 1 2 k 22 α 2 2 + y 1 y 2 k 12 α 1 α 2 − ( α 1 + α 2 ) + y 1 α 1 v 1 + y 2 α 2 v 2 W(α_1,α_2)=\frac{1}{2} k_{11}α_1^2+ \frac{1}{2} k_{22}α_2^2+y_1y_2k_{12}α_1α_2-(α_1+α_2)+y_1α_1v_1+y_2α_2v_2 W(α1,α2)=21k11α12+21k22α22+y1y2k12α1α2(α1+α2)+y1α1v1+y2α2v2


      1. 因为 α 1 y 1 + α 2 y 2 = ζ , 且 y i 2 = 1 α_1y_1+α_2y_2=ζ,且y_i^2=1 α1y1+α2y2=ζyi2=1,所以转化为对 α 2 α_2 α2 的单变量目标函数:

        W ( α 2 ) = 1 2 k 11 ( ζ − α 2 y 2 ) 2 + 1 2 k 22 α 2 2 + y 2 k 12 ( ζ − α 2 y 2 ) α 2 − ( ζ − α 2 y 2 ) − α 2 + y 1 ( ζ − α 2 y 2 ) v 1 + y 2 α 2 v 2 W(α_2)=\frac{1}{2} k_{11}(ζ-α_2y_2)^2+ \frac{1}{2} k_{22}α_2^2+y_2k_{12}(ζ-α_2y_2)α_2-(ζ-α_2y_2)-α_2+y_1(ζ-α_2y_2)v_1+y_2α_2v_2 W(α2)=21k11(ζα2y2)2+21k22α22+y2k12(ζα2y2)α2(ζα2y2)α2+y1(ζα2y2)v1+y2α2v2


      1. 为求 W ( α 2 ) W(α_2) W(α2) 最小,我们对 α 2 α_2 α2 求导并令其等于 0,得到;

        k 11 + k 22 − 2 k 12 α 2 = y 2 ( y 2 − y 1 + ζ k 11 − ζ k 12 + v 1 + v 2 ) k_{11}+k_{22}-2k_{12}α_2=y_2(y_2-y_1+ζk_{11}-ζk_{12}+v_1+v_2) k11+k222k12α2=y2(y2y1+ζk11ζk12+v1+v2)


      1. 而后将 v 1 , v 2 v_1,v_2 v1,v2 α 1 o l d y 1 + α 2 o l d y 2 = ζ α_1^{old}y_1+α_2^{old}y_2=ζ α1oldy1+α2oldy2=ζ 代入并整理可得:

        α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 − E 2 ) k 11 + k 22 − 2 k 12 α_2^{new,unc}=α_2^{old}+\frac{y_2(E_1-E_2)}{k_{11}+k_{22}-2k_{12}} α2new,unc=α2old+k11+k222k12y2(E1E2),其中 E i = ∑ j = 1 M y j α j k j i + b − y i , i = 1 , 2 E_i = \sum_{j=1}^{M}y_jα_jk_{ji}+b-y_i,i=1,2 Ei=j=1Myjαjkji+byii=1,2


      1. 在计算出 α 2 n e w , u n c α_2^{new,unc} α2new,unc 后,根据约束条件进行剪辑:

        α 2 n e w = { H , α 2 n e w , u n c &gt; 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 &lt; L α_2^{new}=\begin{cases} H,α_2^{new,unc}&gt;H\\ α_2^{new,unc},L\leα_2^{new,unc}\le H\\ L,α_2^{new,unc}&lt;L \end{cases} α2new=Hα2new,unc>Hα2new,uncLα2new,uncHLα2new,unc<L


      1. 根据 α 2 n e w α_2^{new} α2new 计算 α 1 n e w α_1^{new} α1new
    2. 两个变量的选择

      第一个变量选择违反 KKT 条件最严重的那一个,另一个有约束条件自动确定。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值