机器学习入门笔记:(4.3)SMO算法
来源:互联网 发布:淘宝实人认证在哪里 编辑:程序博客网 时间:2024/06/05 17:07
前言
之前的博客中,已经介绍了SVM的原理:
机器学习入门学习笔记:(4.1)SVM算法
机器学习入门学习笔记:(4.2)核函数和软间隔
最后我们得到的优化问题如下:
这个问题的解就是一系列的
这个式子是引入了软间隔后的支持向量机的问题,再进一步,用上核函数,就可以表示为:
一般来说,我们都不是很喜欢求最大值的问题,而是求最小值,所以将上面的问题换成求最小值的形式:
我们之后的讨论都会围绕着这个问题进行。
SMO算法
为了解决二次规划问题,人们提出许多高效的算法。其中比较典型的一个就是SMO(Sequential Minimal Optimization)算法。SMO算法由Microsoft Research的John C. Platt在1998年提出,并成为最快的二次规划优化算法,特别针对线性SVM和数据稀疏时性能更优。关于SMO最好的资料就是他本人写的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》了。
(摘自支持向量机(五)SMO算法)
SMO 概念
SMO的基本思路就是:先固定
- 选取一对新的
αi 和αj ; - 固定
αi 和αj 之外的参数,求解前面的优化问题,获取更新后的αi 和αj 。
假设选取的两个变量为
由约束条件
为简化表示,我们用
对原始问题进行化简:
(其中,因为核函数满足
由于除了
其中
解的范围
现在的结果是有关
(摘自John C. Platt的论文)
前面推出的
我们还有些已知的条件:
如上图所示,分两种情况讨论:
如果
y1≠y2 ,则y1 和y2 一定异号,那么约束关系变为:α1−α2=k ,k 是任意常数。k 具体是多少我们并不关心,但是我们知道α1 和α2 的取值都落在途中的直线上。k 无非就是一个截距,随着k 的变化,这根直线在方框内会上下移动,交点也变,但是一定要在方框范围内,所以边界一定会落在方框与直线的交点上。假设几种可能的情况就不难推算出α 的范围了假设只考虑α2 的范围,设L 为α2 可能的最小取值,H 为α2 可能的最大取值。L=max(0,−k),H=min(C,C−k)L=max(0,α2−α1),H=min(C,C+α2−α1) 如果
y1=y2 ,则y1 和y2 一定同号,那么约束关系变为:α1+α2=k ,k 是任意常数。与前面同样分析。只考虑α2 的范围,设L 为α2 可能的最小取值,H 为α2 可能的最大取值。根据图中所示,可以得到如下关系:L=max(0,k−C),H=min(C,k)L=max(0,α1+α2−C),H=min(C,α1+α2)
通过上面的讨论,我们得到了
- 当
y1≠y2 时,L=max(0,α2−α1),H=min(C,C+α2−α1) ; - 当
y1=y2 时,L=max(0,α1+α2−C),H=min(C,α1+α2) 。
同理,
求解优化问题
转化为一元函数求极值点
接下来,将
好了,我们已经将
我们有
常数可以去掉,不影响结果:
上面的问题已经化成了单变量的优化问题了,使用常规套路,求偏导取0,即可解出
对目标函数求偏导数:
令这个偏导数为0可以求出新的
修改后的几个条件如下:
为了后面表示简便,还要给出几个关系:
如果把
前面的博客中,我们已经推导过SVM的数学模型的最终结果:
展开
所以:
好了,条件基本都得到了,再列一下我们要用的条件:
联立,化简得:(注:
设预测值与真实值之差为
继续化简:
再记
注意,
当然还有
了
- 当
y1≠y2 时,L=max(0,α2−α1),H=min(C,C+α2−α1) ; - 当
y1=y2 时,L=max(0,α1+α2−C),H=min(C,C+α1+α2) 。
所以求出了优化后的
求解α1
知道了
由约束条件:
取临界情况
前面推导的结果:
大部分情况下,都有
- η<0,当核函数K不满足Mercer定理时,矩阵K非正定;
- η=0,样本x1与x2输入特征相同;
也可以换个方式来理解:
原问题:
其一阶偏导数为:
二阶偏导数为:
这个
- 当
η<0 时,目标函数为凸函数,没有极小值,最小值会在边界取得; - 当
η=0 时,目标函数为单调函数,很明显,最小值或者最大值都会在边界上取得。
所以,当
代回到目标函数中可以求出对应的两个可能值
代入之前先看看目标函数:
因为
代入
下面令
使用上面的这些式子,将
这里是论文中的结果,我就偷懒不写步骤了。前面推导的式子联立就可以得到上面的6个式子。
计算ω 和b
首先看
因为除了
两式做差即可求出新的
然后是
(摘自Platt的论文)
这是原优化问题的KKT条件:
- 当
αi=0 时,分类是正确的; - 当
0≤αi≤C 时,这时的样本点是支持向量,处在边界上; - 当
αi=C 时,位于边界之间。
参考上面的KKT条件进行分类讨论:
如果
0<α1<C ,则(x1,y1) 为支持向量,满足yi(∑mi=1αiyiKi1+b1)=1 :αnew1y1K11+αnew2y2K21+∑i=3mαiyiKi1+bnew1=y1 因为:
y1−∑mi=3αiyiKi1=y1−f(x1)+α1y1K11+α2y2K21+b 所以:
bnew1=y1−f(x1)+α1y1K11+α2y2K21+b−αnew1y1K11−αnew2y2K21 bnew1=−E1−y1K11(αnew1−α1)−y2K21(αnew2−α2)+b 其中
α1,α2,b 为旧的值,αnew1,αnew2,bnew 为优化后的值。如果
0<α2<C ,则(x2,y2) 为支持向量,同理可以得到:bnew2=−E2−y1K12(αnew1−α1)−y2K22(αnew2−α2)+b 如果同时有
0<α1<C,0<α2<C ,那么bnew1=bnew2 。如果均不满足
0<αi<C ,这时选择他们的中点:bnew=bnew1+bnew22
启发式选择变量
由Osuna定理知道,只要选取的
(摘自【机器学习详解】SMO算法剖析)
选取第一个变量
第一个变量的选择称为外循环.
首先遍历整个样本集,选择违反KKT条件的
当遍历完整个样本集后,遍历非边界样本集
当遍历完非边界样本集后,再次回去,遍历整个样本集寻找,即在整个样本集与非边界样本集上来回切换,寻找违反KKT条件的
边界上的样本对应的
第二个变量的选择
SMO称第二个变量的选择过程为内循环.
假设在外循环中找到的第一个变量记为
有时按照上述的启发式选择第二个变量,不能够使得函数值有足够的下降,这时按下述步骤:
首先在非边界集上选择能够使函数值足够下降的样本作为第二个变量,
如果非边界集上没有,则在整个样本集上选择第二个变量,
如果整个样本集依然不存在,则重新选择第一个变量。
后记
SVM从头到尾推一边,发现许多概念都更熟悉了。许多推导步骤,我也尽可能写在博客中了,工作量的确挺大的。下次再把SVM的代码仔细研究研究。
参考资料:
《机器学习》周志华
【机器学习详解】SMO算法剖析
[支持向量机(五)SMO算法](http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html)
解密SVM系列(三):SMO算法原理与实战求解
- 机器学习入门笔记:(4.3)SMO算法
- 【机器学习笔记】SVM part2: 核函数与SMO算法
- SVM学习笔记(五)---SMO算法
- Andrew Ng机器学习笔记+Weka相关算法实现(六)SMO/LibSVM/SVM参数
- 机器学习实战【7】(SMO算法实现)
- python机器学习之SMO算法
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 机器学习实战SMO算法源码解析
- 【机器学习详解】SMO算法剖析
- 【机器学习详解】SMO算法剖析
- 机器学习二一:SMO算法
- 【机器学习详解】SMO算法剖析
- 公开课机器学习笔记(15)支持向量机五 坐标上升法 SMO优化算法
- 机器学习笔记3:支持向量机的SMO高效优化算法
- 机器学习入门学习笔记:(3.1)决策树算法
- 机器学习入门学习笔记:(4.1)SVM算法
- 《机器学习实战》学习笔记-[6]-支持向量机SMO
- 会声会影X8 一打开就提示Corel VideoStudio 已停止工作的解决办法
- 随机森林
- Struts2 Day 05 : 运行流程、自定义拦截器、上传下载、表单重复提交、输入验证
- poj1032Parliament
- 进程与线程的联系和区别
- 机器学习入门笔记:(4.3)SMO算法
- 设计模式之禅——观察者模式
- 独轮车广搜解法
- 网易云音乐缓存音乐/视频文件的解密操作
- android matrix 详解
- 二进制
- mail from address must be same as authorization user
- GCC Internals手册pdf版的下载方法
- 基于对象与面向对象