1、SMO算法

说明:本文内容基于李航《统计学习方法》一书。
SMO算法用于支持向量机学习的实现,求解如下的凸二次规划问题:
clipboard.png

变量是拉格朗日乘子,一个变量αi对应一个样本点(xi,yi);变量总数等于训练样本容量N。
SMO算法的基本思路:选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题。(书Page125)

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

假设选择两个变量α1、α2,其他变量αi(i=3,4,....,N)是固定的。于是,前面的优化问题1.1~1.3可以简化为:
clipboard.png(Page126)
z是常数,Kij=K(xi,xj),因为不含α1、α2的常数项不影响式1.4的最小值,故省略。
clipboard.png
,在式1.5等号两边同时乘以y2得:
clipboard.png
将式1.7代入式1.4得到求解最小值关于α1的函数:
clipboard.png
对式1.8求W(α1 )关于α1的偏导数:
clipboard.png
clipboard.png得到不考虑约束1.5,1.6的解:clipboard.png,再由1.5求得:clipboard.png
因为yi只等于1或-1。当clipboard.png时,可以假设y1=1,y2=-1。则在α2为纵轴α1为横轴的坐标系上:
clipboard.png是斜率为1,且横纵坐标都属于区间[0,C]的线段。
如下图:(Page126)
clipboard.png
联立:
clipboard.png
得到:
clipboard.png
又:
clipboard.png
所以:
clipboard.pngclipboard.png
故而,在考虑约束条件的情况下,α可以取得最小值和最大值分别为:
clipboard.png
同理,当y1=y2时,假设y1=y2=1,则:
clipboard.png
所以:
clipboard.png
最终得到满足约束条件的优化过后的α1,α2解:
clipboard.png
clipboard.png

3、变量的选择方法

。。。


YjxGVG
8 声望3 粉丝

« 上一篇
Python基础