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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37352167/article/details/86078484

机器学习 - 支持向量机(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

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

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

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

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

    i = 1 M α i y i = 0 \sum_{i=1}^{M}α_iy_i=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. 两个变量的二次规划

      假设我们选择 α 1 , α 2 α_1,α_2 作为变量,其他为 α i ( i = 3 , 4 , . . . , M ) α_i(i=3,4,...,M) 是固定的,于是 SMO 的最优化问题的子问题可以写成(将 α 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}

      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=ζ

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

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

      根据约束条件:

      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=ζ

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

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

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

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

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

      因为需要满足不等式 0 α 2 C , i = 1 , 2 , . . . , M 0\leα_2\le C,i=1,2,...,M ,所以: L α 2 n e w H L\le α_2^{new}\le H ,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})

      \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})

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

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


      下面介绍详细计算过程:

      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}

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

        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


      1. 因为 α 1 y 1 + α 2 y 2 = ζ y i 2 = 1 α_1y_1+α_2y_2=ζ,且y_i^2=1 ,所以转化为对 α 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


      1. 为求 W ( α 2 ) W(α_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)


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

        α 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}} ,其中 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


      1. 在计算出 α 2 n e w , u n c α_2^{new,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 α_2^{new}=\begin{cases} H,α_2^{new,unc}>H\\ α_2^{new,unc},L\leα_2^{new,unc}\le H\\ L,α_2^{new,unc}<L \end{cases}


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

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

猜你喜欢

转载自blog.csdn.net/weixin_37352167/article/details/86078484