内容是自己做的 ppt 的截图,有需要的小伙伴可以去 下载,也可以给我留言,看到会回复的。
1998 年,John Platt 提出了序列最小最优化算法 (SMO) 算法用于训练 SVM 分类器。SMO 算法是一种启发式算法,其基本思路是:一次迭代只优化两个变量而固定剩余的变量。
SMO 要解如下凸二次规划的对偶问题
其实就是训练 SVM 分类器
精度 ϵ \epsilon ϵ指 KKT 条件的容错率 toler。
部分 KKT 条件:
比如第二个条件,不要求严格等于 1 ,在容错率范围内都是可以接收的。原文内容如下:
先说第二个内容
假设选择的变量是 α 1 , α 2 \alpha_1,\alpha_2 α1,α2,其余变量 α i ( i = 3 , ⋯ , N ) \alpha_i (i=3,\cdots,N) αi(i=3,⋯,N)是固定的,则 SMO 的最优化问题的子问题如下,其中 K ( x i , x j ) = K i j K(x_{i},x{j})=K_{ij} K(xi,xj)=Kij
首先分析约束条件,重新定义 α 2 \alpha_2 α2的取值范围
根据约束条件得到 α 2 \alpha_2 α2的表达式,然后分情况讨论,并根据 α 1 ∈ [ 0 , C ] \alpha_1 \in [0,C] α1∈[0,C]进行放缩
目标函数是含 α 1 n e w , α 2 n e w \alpha_1^{new},\alpha_2^{new} α1new,α2new两个变量的二次函数,为了方便求解,我们利用等式约束,将目标函数转化成只含 α 2 n e w \alpha_2^{new} α2new的函数,然后求极小值,并与之前求得的取值范围进行比较,确定 α 2 n e w \alpha_2^{new} α2new最终的表达式,最后根据等式约束也可以得到 α 1 n e w \alpha_1^{new} α1new.
将已知的量用 ν i \nu_i νi替换,其中
f ( x i ) = ∑ j = 1 N y j α j n e w K i j + b f(x_{i})=\sum_{j=1}^{N}y_{j}\alpha_{j}^{new}K_{ij}+b f(xi)=j=1∑NyjαjnewKij+b
下一步转化成只含 α 2 n e w \alpha_{2}^{new} α2new的函数
得到的极值点不一定在 α 2 n e w \alpha_{2}^{new} α2new的取值范围里,所以需要剪辑,则最终的 α 1 n e w , α 2 n e w \alpha_{1}^{new},\alpha_{2}^{new} α1new,α2new的表达式如下
根据 KKT 条件得到相应的等式,然后求解就可以了。
之前一直不明白当 α i \alpha_{i} αi都在边界上时 b n e w b^{new} bnew的取值为什么要取中点,试着推导,恍然大悟 。
可以看出,当四种 y i y_{i} yi的情况放在一起时, b n e w b^{new} bnew只能取中点。
其他在边界的情况也可以推导出相同的结论,同时关于 b n e w b^{new} bnew其他情况的取值也清晰了。
多次遍历 α i ∈ [ 0 , C ] \alpha_{i}\in[0,C] αi∈[0,C]的样本点,个人的理解是因为:根据 KKT 条件,这时
这样的样本点很容易违背 KKT 条件,对它们进行判断更新可以加快求解速度。
SMO 算法的理论推导就到这里了,最后贴一下李航老师《统计学习方法》里的算法流程。
关于算法的实现,可以参考
支持向量机|SMO算法实现
如有错误,请指正,谢谢
[1] 李航. 统计学习方法[M]. 清华大学出版社, 2012.
[2]https://www.jianshu.com/p/436d429ce91b