统计学习方法 学习笔记(六):序列最小最优化算法SMO

经过前三篇的学习笔记,对理论上的支持向量机算是稍微了解了,如何去求解前三篇学习笔记中的对偶问题呢?在这一篇学习笔记中将给出答案。

凸二次规划的对偶问题:

$$\min_{\alpha} \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_iy_iy_jK(x_i,x_j) - \sum_{i=1}^{N}\alpha_i$$

$$s.t.    \sum_{i=1}^{N}\alpha_iy_i = 0$$

$$ 0 \leq \alpha_i \leq C, i=1,2,...,N$$

支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大时,这些算法往往变得非常低效,以致无法使用。所以,如何高效地实现支持向量机学习就成为一个重要的问题。

SMO算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量满足KKT条件为止。这样通过启发式的方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的。所以,SMO算法两个大步骤:一,两个变量的二次规划的求解方法;二,两个变量的选择方法。

两个变量二次规划的求解方法:

    不失一般性,假设选择的两个变量是$\alpha_1,\alpha_2$,其他变量$\alpha_i(i=3,4,...,N)$是固定的,于是SMO的最优化问题(上诉对偶问题)的子问题可以写成:

$$\min_{\alpha_1,\alpha_2} 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}^{N}y_i\alpha_iK_{i1} + y_2\alpha_2\sum_{i=3}^{N}y_i\alpha_iK_{i2}$$

$$s.t.    \alpha_1y_1 + \alpha_2y_2 = - \sum_{i=3}^{N}y_i\alpha_i = \zeta$$

$$ 0 \leq \alpha_i \leq C , i=1,2$$

其中,$K_{ij} = K(x_i,x_j), i,j=1,2,...,N$,$\zeta$是常数,上述目标函数中省略了不含$\alpha_1,\alpha_2$的常数项。

 为了求解两个变量的二次规划问题,首先分析约束条件,然后在此约束条件下求极小。由于只有两个变量$(\alpha_1,\alpha_2)$,约束可以用二维空间中的图形表示,如上图。

不等式约束使得$(\alpha_1,\alpha_2)$在盒子[0,C]x[0,C]内,等式约束使$(\alpha_1,\alpha_2)$在平行于盒子[0,C]x[0,C]的对角线上。因此要求的目标函数在一条平行于对角线的线段上的最优值。这使两个变量的最优化问题成为实质上的单变量的最优化问题,不妨考虑为变量$\alpha_2$的最优化问题。

    假设上述子问题的初始可行解为$\alpha_{1}^{old},\alpha_{2}^{old}$,最优解为$\alpha_{1}^{new},\alpha_{2}^{new}$,并且假设在沿着约束方向为经剪辑时$\alpha_2$的最优解为$\alpha_2^{new,unc}$,换句话说,$\alpha_2^{new,unc}$是仅仅满足两个约束条件中的一个等式约束条件。

    由于$\alpha^new$需要满足不等式约束条件,所以最优值$\alpha^{new}$的取值范围必须满足条件:

$$L \leq \alpha_2^{new} \leq H$$

其中,$L$与$H$是$\alpha^{new}$所在的对角线端点的界。如果$y_1 \neq y_2$,则,在端点1,$\alpha_1$取0,在端点2,$\alpha_2$取$\alpha_2^{old} - \alpha_1^{old}$;在端点3,$\alpha_2$取$C+\alpha_2^{old}-\alpha_1^{old}$,在端点4,$\alpha_2$取$C$,所以:

$$L = max(0,\alpha_2^{old} - \alpha_1^{old}), H = min(C,C+\alpha_2^{old} - \alpha_1^{old})$$

如果$y_1 =y_2$,则,在端点5,$\alpha_2$取$\alpha_2^{old} + \alpha_1^{old} - C$,在端点6,取0;在端点7,取C,在端点8,取$\alpha_{2}^{old} + \alpha_{1}^{old}$。所以:

$$L = max(0,\alpha_2^{old}+\alpha_1^{old} - C), H = min(C,\alpha_2^{old} + \alpha_1^{old})$$

    下面,首先求沿着约束方向未经剪辑即未考虑不等式约束时$\alpha_2$的最优解$\alpha_2^{new,unc}$;然后再求剪辑后$\alpha_2$的解$\alpha_2^{new}$

    (1)$\alpha_2^{new,unc}$

    (2)经剪辑后$\alpha_2$的解:

$$\alpha_2^{new} = \begin{cases}
H, & \alpha_2^{new,unc}> H \\
\alpha_2^{nwe,unc},& L \leq \alpha_2^{new,unc} \leq H \\
L, & \alpha_2^{new,unc} < L
\end{cases}$$

由$\alpha_2^{new}$求得$\alpha_1^{new}$,因为$\alpha_1^{old}y_1 + \alpha_2^{old}y_2 = \alpha_1^{new}y_1 + \alpha_2^{new}y_2$:

$$\alpha_1^{new} = \alpha_1^{old} + y_1y_2(\alpha_2^{old} - \alpha_2^{new})$$

猜你喜欢

转载自www.cnblogs.com/double-lin/p/10427844.html