SMO算法剖析
来源:互联网 发布:儿童学古诗软件 编辑:程序博客网 时间:2024/05/17 00:06
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51227754
本文力求简化SMO的算法思想,毕竟自己理解有限,无奈还是要拿一堆公式推来推去,但是静下心看完本篇并随手推导,你会迎刃而解的。推荐参看SMO原文中的伪代码。
1.SMO概念
上一篇博客已经详细介绍了SVM原理,为了方便求解,把原始最优化问题转化成了其对偶问题,因为对偶问题是一个凸二次规划问题,这样的凸二次规划问题具有全局最优解,如下:
其中
2.SMO原理分析
2.1视为一个二元函数
为了求解N个参数
SMO算法选择同时优化两个参数,固定其他N-2个参数,假设选择的变量为
2.2视为一元函数
由等式约束得:
等式
2.3对一元函数求极值点
上式中是关于变量
1.由上式中假设求得了
α2 的解,带回到(2)式中可求得α1 的解,分别记为αnew1,αnew2 ,优化前的解记为αold1,αold2 ;由于参数α3,α4,...,αN 固定,由等式约束∑Ni=1yiαi=0 有αold1y1+αold2y2=−∑Ni=3αiyi=αnew1y1+αnew2y2=ζ ζ=αold1y1+αold2y2(4)
2.假设SVM超平面的模型为f(x)=wTx+b ,上一篇中已推导出w 的表达式,将其带入得f(x)=∑Ni=1αiyiK(xi,x)+b;f(xi) 表示样本xi 的预测值,yi 表示样本xi 的真实值,定义Ei 表示预测值与真实值之差为Ei=f(xi)−yi(5)
3.由于vi=∑Nj=3αjyjK(xi,xj),i=1,2 ,因此v1=f(x1)−∑j=12yjαjK1j−b(6) v2=f(x2)−∑j=12yjαjK2j−b(7)
把(4)(6)(7)带入下式中:
化简得: 此时求解出的
带入(5)式,并记
2.4对原始解修剪
上述求出的解未考虑到约束条件:
0≤αi=1,2≤C α1y1+α2y2=ζ
在二维平面上直观表达上述两个约束条件
最优解必须要在方框内且在直线上取得,因此
当
当
经过上述约束的修剪,最优解就可以记为
2.5求解αnew1
由于其他N-2个变量固定,因此
2.6取临界情况
大部分情况下,有
η<0 ,当核函数K不满足Mercer定理时,矩阵K非正定;η=0 ,样本x1 与x2 输入特征相同;
也可以如下理解,对(3)式求二阶导数就是
当
当
计算方法:
即当
带入目标函数(1)内,比较
其中
3.启发式选择变量
上述分析是在从N个变量中已经选出两个变量进行优化的方法,下面分析如何高效地选择两个变量进行优化,使得目标函数下降的最快。
第一个变量的选择
第一个变量的选择称为外循环,首先遍历整个样本集,选择违反KKT条件的
边界上的样本对应的
第二个变量的选择
SMO称第二个变量的选择过程为内循环,假设在外循环中找个第一个变量记为
有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:
首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
如果非边界集上没有,则在整个样本集上选择第二个变量,
如果整个样本集依然不存在,则重新选择第一个变量。
4.阈值b的计算
每完成对两个变量的优化后,要对b的值进行更新,因为b的值关系到f(x)的计算,即关系到下次优化时
1.如果
由(5)式得,上式前两项可以替换为:
得出:
2.如果
3.如果同时满足
4.如果同时不满足
建议参看SMO原文的伪代码
参考:
统计学习方法,李航
Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Machines,John C. Platt
http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
- SMO算法剖析
- SMO算法剖析
- SMO算法剖析
- SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- SMO算法
- 显示Android studio项目底下标签
- 回文词
- 关于selector"失效"的原因
- Android UI渲染与卡顿原理
- Android-6.0之PMS解析上篇
- SMO算法剖析
- Vue常用经典开源项目汇总参考-海量
- 回溯法.N皇后问题
- cudnn的安装
- BAT等我来
- OpenCV使用操作
- Climbing Stairs
- Ackerman函数的递归实现算法
- NS3实例分析third.cc_Building a Wireless Network Topology