《最优化理论与算法》超详细学习笔记 (六)————序列最小化算法SMO(支持向量机SVM)

《最优化理论与算法》超详细学习笔记 (六)————序列最小化算法SMO 支持向量机SVM

相关链接:支持向量机SVM

什么是SMO算法以及基本思路

序列最小化(SMO)算法是一种解决二次优化问题的算法,其最经典的应用就是在解决SVM问题上。SVM推导到最后,特别是使用了拉格朗日因子法求解之后便不难发现其最终等效为一个二次规划问题。为了解决普通二次规划算法计算量大的问题,1998年John Platt发布了一个称为SMO的强大算法,用于训练SVM分类器。
我们看到SVM最终所需要解决的目标函数:
min α 1 2 i , j = 1 α i α j y i y j κ ( x i , x j ) i = 1 α i s.t. 0 α i C , i = 1 , , n i = 1 n α i y i = 0 \begin{aligned} \min _{\boldsymbol\alpha} & \frac{1}{2} \sum_{i, j=1} \alpha_{i} \alpha_{j} y_{i} y_{j}\kappa (x_{i}, x_{j})-\sum_{i=1} \alpha_{i}\\\text {s.t.} \quad & 0 \leq \alpha_{i} \leq C, i=1, \ldots, n \\ & \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{aligned}
所求的是 α = ( α 1 , α 2 , , α n ) \boldsymbol\alpha=(\alpha_1,\alpha_2,\cdots,\alpha_n) ,样本集的样本容量 n n 越大,所需要求的参数 α i \alpha_i 越多。
一下子求出成百上千个参数的值可想而知是非常困难而且计算量巨大,SMO算法的思路是一次只求两个变量,固定其他变量,以此类推,直至求出所有变量
大致求解步骤为:

  1. 设定 α \boldsymbol\alpha 的初始值为0.
  2. 按一定的规则选取两个变量,例如 α 1 , α 2 \alpha_1,\alpha_2 ,固定其他 α i \alpha_i
  3. 优化 α 1 , α 2 \alpha_1,\alpha_2 ,满足约束条件后,选取另外两个变量,如 α 3 , α 4 \alpha_3,\alpha_4 .
  4. 依此类推,直至所有变量都已经求出

SMO具体求解思路

α 1 , α 2 \alpha_1,\alpha_2 求解过程为例:
此时其他的 α i \alpha_i 可以看作常数,则求和符号展开后,省略掉常数项,得:
min α 1 , α 2 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 N y i α i K i 1 + y 2 α 2 i = 3 N y i α i K i 2 \min _{\alpha_{1}, \alpha_{2}} W\left(\alpha_{1}, \alpha_{2}\right)=\frac{1}{2} K_{11} \alpha_{1}^{2}+\frac{1}{2} K_{22} \alpha_{2}^{2}+y^{(1)} y^{(2)} K_{12} \alpha_{1} \alpha_{2}-\left(\alpha_{1}+\alpha_{2}\right)+y_{1} \alpha_{1} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 1}+y_{2} \alpha_{2} \sum_{i=3}^{N} y_{i} \alpha_{i} K_{i 2}
s . t . α 1 y 1 + α 2 y 2 = i = 3 N α i y i = c s.t. \quad \alpha_{1} y_{1}+\alpha_{2} y_{2}=-\sum_{i=3}^{N} \alpha_{i} y_{i}=\mathrm{c}
0 α i C , i = 1 , 2 0 \leq \alpha_{i} \leq \mathrm{C}, \quad \mathrm{i}=1,2
其中 K i j = κ ( x i , x j ) K_{ij}=\kappa(x_i,x_j) .
由于存在约束 α 1 y 1 + α 2 y 2 = c \alpha_{1} y_{1}+\alpha_{2} y_{2}=c ,所以上式可以看作一个一元二次方程,可以很容易求出未考虑约束的最优解 α 1 n e w , u n c , α 2 n e w , u n c \alpha_1^{new,unc},\alpha_2^{new,unc}
那么是如何进行迭代的呢?
由于 y y 的取值为1或-1,所以当 y 1 = y 2 y_1=y_2 时, α 1 + α 2 = c \alpha_{1} +\alpha_{2} =c y 1 y 2 y_1\neq y_2 时, α 1 + α 2 = c \alpha_{1} +\alpha_{2} =c
接下来:
g ( x ) = i = 3 N y i α i K ( x i , x ) + b g(x)=\sum_{i=3}^{N} y_{i} \alpha_{i} K\left(x_{i}, x\right)+b
E i = g ( x i ) y i \mathrm{E}_{i}=g\left(x_{i}\right)-y_{i}

其中 g ( x i ) g(x_{i}) 表示预测值, E i \mathrm{E}_{i} 表示偏差
可以得到:
α 2 n e w , u n c = α 2 o l d + y 2 ( E 1 E 2 ) η \alpha_{2}^{n e w, u n c}=\alpha_{2}^{o l d}+\frac{y_{2}\left(E_{1}-E_{2}\right)}{\eta}
其中
η = K 11 + K 22 2 K 12 = Φ ( x 1 ) Φ ( x 2 ) 2 \eta=K_{11}+K_{22}-2 K_{12}=\left\|\Phi\left(x_{1}\right)-\Phi\left(x_{2}\right)\right\|^{2}
经约束后的解是
α 2 new = { H , α 2 new , u n c , L α 2 new , unc L , α 2 new , unc H α 1 new = α 1 old + y 1 y 2 ( α 2 old α 2 new ) \begin{array}{l} \qquad \begin{aligned} \alpha_{2}^{\text {new}}=\left\{\begin{array}{lr} H, \\ \alpha_{2}^{\text {new}, u n c}, & L \leq \alpha_{2}^{\text {new}, \text {unc}} \\ L, \end{array}\right.& \alpha_{2}^{\text {new}, \text {unc}} \leq H \end{aligned} \\ \alpha_{1}^{\text {new}}=\alpha_{1}^{\text {old}}+y_{1} y_{2}\left(\alpha_{2}^{\text {old}}-\alpha_{2}^{\text {new}}\right) \end{array}
其中
y 1 y 2 y_{1} \neq y_{2}

L = max ( 0 , α 2 old α 1 old ) , H = min ( C , C + α 2 old α 1 old ) \mathrm{L}=\max \left(0, \alpha_{2}^{\text {old}}-\alpha_{1}^{\text {old}}\right), H=\min \left(C, C+\alpha_{2}^{\text {old}}-\alpha_{1}^{\text {old}}\right)
y 1 = y 2 y_{1}=y_{2}
L = max ( 0 , α 2 old + α 1 old C ) , H = min ( C , α 2 old + α 1 old ) \mathrm{L}=\max \left(0, \alpha_{2}^{\text {old}}+\alpha_{1}^{\text {old}}-C\right), H=\min \left(C, \alpha_{2}^{\text {old}}+\alpha_{1}^{\text {old}}\right)

变量选取

启发式策略:

  1. 第一个变量
    第一个变量的选择为外层循环,先选取违反KKT条件最严重的样本点。
  2. 第二个变量
    进行第二个变量的选择为内层循环,为了加快 α 2 α_2 的迭代速度,应使其对应的 E 1 E 2 |E_1-E_2| 最大。

猜你喜欢

转载自blog.csdn.net/River_J777/article/details/107443720