转载请注明出处:http://blog.youkuaiyun.com/luoshixian099/article/details/51227754
CSDN−勿在浮沙筑高台优快云−勿在浮沙筑高台
本文力求简化SMO的算法思想,毕竟自己理解有限,无奈还是要拿一堆公式推来推去,但是静下心看完本篇并随手推导,你会迎刃而解的。推荐参看SMO原文中的伪代码。
1.SMO概念
上一篇博客已经详细介绍了SVM原理,为了方便求解,把原始最优化问题转化成了其对偶问题,因为对偶问题是一个凸二次规划问题,这样的凸二次规划问题具有全局最优解,如下:
其中(xi,yi)(xi,yi),其他参数均为已知,有多种算法可以对上述问题求解,但是算法复杂度均很大。但1998年,由Platt提出的序列最小最优化算法(SMO)可以高效的求解上述SVM问题,它把原始求解N个参数二次规划问题分解成很多个子二次规划问题分别求解,每个子问题只需要求解2个参数,方法类似于坐标上升,节省时间成本和降低了内存需求。每次启发式选择两个变量进行优化,不断循环,直到达到函数最优值。
2.SMO原理分析
2.1视为一个二元函数
为了求解N个参数(α1,α2,α3,...,αN)(α1,α2,α3,...,αN)
2.2视为一元函数
由等式约束得:α1y1+α2y2=−∑Ni=3αiyi=ζα1y1+α2y2=−∑i=3Nαiyi=ζ
2.3对一元函数求极值点
上式中是关于变量α2α2
1.由上式中假设求得了α2α2,因此
v1=f(x1)−∑j=12yj