支持向量机(四)SMO算法
目录
序列最小最优化(\(sequential\ minimal\ optimization,SMO\))算法是 \(SVM\) 的快速实现算法。
\(SMO\) 算法要解如下凸二次规划的对偶问题:
\[\begin{array}{l}
\underset{\alpha}{min}
& \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_i \alpha_j y_i y_j K(x_i,x_j) - \sum_{i=1}^{N} \alpha_i \\
s.t.
& \sum_{i=1}^{N}\alpha_i y_i = 0 \\
& 0 \leqslant \alpha_i \leqslant C, \quad i=1,2,...,N
\end{array}
\]
在这个问题中,变量是拉格朗日乘子,一个变量 \(\alpha_i\) 对应于一个样本点 \((x_i,y_i)\);变量的总数等于训练样本容量 \(N\)。
\(SMO\) 算法思路:\(SMO\) 算法是支持向量机学习的一种快速算法,其特点是不断地将原二次规划问题分解为只有两个变量的二次规划子问题,并对子问题进行解析求解,直到所有变量满足 \(KKT\) 条件(\(Karush-Kuhn-Tucker\ condition\))为止。这样通过启发式方法得到原二次规划问题的最优解。因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但总体上还是高效的。