SVM算法相关推导[五]——SMO算法

我们得到了目标是最大化W函数。那么要怎么求解呢?

因为我们的向量维度很高(D=m),直观的方法是用坐标上升法。

但是由于限制条件

\sum_{i=1}^my^{(i)}\alpha_i=0

的存在,我们不可能一次只修改一个alpha,需要对算法进行修改

微软的SMO算法尝试一次修改2个alpha, 固定其他alpha, 每一次地带优化W用这两个修改的alpha来进行

观察W公式

\begin{align*} W(\alpha)&= \sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m y^{(i)} y^{(j)} \alpha_i \alpha_j \left \langle x^{(i)}, x^{(j)} \right \rangle \\ &s.t.\ \sum_{i=1}^m y^{(i)}\alpha_i=0,\ 0 \leq \alpha_i \leq c \end{align*}

假如固定的是 alpha_a, alpha_b

根据限制条件

\sum_{i=1}^my^{(i)}\alpha_i=0

可以得到

\alpha_a y^{(a)}+\alpha_b y^{(b)}=-\sum_{i \neq a,b}^m\alpha_i y^{(i)}=\xi

所以

\alpha_a=\frac{\xi-\alpha_by^{(b)}}{y^{(a)}}

带入W可以明显看出w是alpha_a的二次函数, 可以直接求解到最优解。

对于如何选择两个alpha, 常用的是启发式规则,使选区的两变量所对应样本之间的间隔最大。

具体参考微软研究院的论文

Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines

 

 

你可能感兴趣的:(SVM算法相关推导[五]——SMO算法)