SMO要点总结
SMO要点总结:
SMO使用坐标上升的方法,求解SVM的最优解。和原始坐标上升方法的不同点在于:
1.
由于SVM的限制条件
,所以不能只使用一个坐标,改为更新两个
2.
采用启发式方法,找到每次更新的坐标,而不是按顺序来
SMO的终止条件即,所有参数都符合KKT条件:
对应在margin以外的点
对应在margin上的点
对应在margin内的点
其中
所以在伪代码中,使用如下代码判断,是否违反KKT条件

对于
的点,应该有
,即
,若起小于0,则判定为违反KKT条件;同样,对于
的点,判定大于0为违反KKT条件
当所有点都没有违反KKT条件时,说明已经达到最优解
当选定第一个更新坐标
后,根据以下规则选择
1.
首先在unbound(
)点中,选择使
最大的
2.
若1失败,按随机顺序从unbound(
)点中开始尝试
3.
若2失败,随机顺序从所有点尝试
更新
,
时,可以计算得到
的解析解,按以下公式更新:

由于a取值范围有限定,所以需要判断解析解是否在范围内
y1,y2异号

y1,y2同号

当新的a超过范围时,需要替换成对应的上下界

注意:
当是个大于0的数字,用以上公式更新$\alpha_2$;
当等于0时,原式变成一元一次式,在L或H处去的最小(
>0时,函数单调降,取H,否则取L);
当小于0时,原式轮廓类似与$y=-x^2+1$,L和H谁离中间线(即
)远,谁取得最小値
得到新的a2后,计算a1

更新玩a后,接着需要更新
b
如果
为unbound,更新b为

如果
为unbound,更新b为

如果两者都为bound

最后更新每个点上的错误(考虑到只变化了
)




SMO要点总结的更多相关文章
- C++常见笔试面试要点以及常见问题
1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...
- 《高性能javascript》一书要点和延伸(上)
前些天收到了HTML5中国送来的<高性能javascript>一书,便打算将其做为假期消遣,顺便也写篇文章记录下书中一些要点. 个人觉得本书很值得中低级别的前端朋友阅读,会有很多意想不到的 ...
- [php]laravel框架容器管理的一些要点
本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点.文章很长,但是内容应该很有用,希望有需要的朋友能看到.php经验有限,不到位的地方,欢迎帮忙指正. ...
- 基础笔记(一):C#编程要点
前言 来源于手中日常摘录的资料和书籍,算是对看过的东西的总结,部分注有阅读心得,也有部分只提出大纲或结论.(备注:本篇文章中大部分要点需要有实际的开发经验,有助于阅读理解.) 目录 const ...
- CORS基础要点:关于dataType、contentType、withCredentials
事实上,面试时我喜欢问跨域,因为多数开发者都知道它并且常用,而我希望能从面试者的回答中知道他在这个问题的深入程度,进一步看看面试者研究问题的思维方式及钻研精神,然而确实难到了很多人,当然这也不是面试通 ...
- 漫谈C++:良好的编程习惯与编程要点
以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明 complex.h: # ifndef ...
- 机器学习——支持向量机(SVM)之Platt SMO算法
Platt SMO算法是通过一个外循环来选择第一个alpha值的,并且其选择过程会在两种方式之间进行交替: 一种方式是在所有数据集上进行单遍扫描,另一种方式则是在非边界alpha中实现单遍扫描. 所谓 ...
- 机器学习——支持向量机(SVM)之拉格朗日乘子法,KKT条件以及简化版SMO算法分析
SVM有很多实现,现在只关注其中最流行的一种实现,即序列最小优化(Sequential Minimal Optimization,SMO)算法,然后介绍如何使用一种核函数(kernel)的方式将SVM ...
- 推荐Linux管理员不可不知十大PHP安全要点 - SCutePHP
PHP是使用最广泛的脚本编程语言之一.市场份额颇能说明其主导地位.PHP 7已推出,这个事实让这种编程语言对当前的开发人员来说更具吸引力.尽管出现了一些变化,但是许多开发人员对PHP的未来持怀疑态度. ...
随机推荐
- UVA 816 Abbott’s Revenge
bfs求最短路,递归打印最短路的具体路径: 难点: 当前状态和转弯方式很复杂,要仔细处理: 递归打印:用一个数组存储路径中结点的前一个节点,递归查找 (bfs无法确定下一个结点,但对于没一个结点,它的 ...
- ADO.NET帮助类DBHelper
一. DBHelper帮助类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- C#调用API函数EnumWindows枚举窗口的方法
原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同,C#调用API函数需要引入.dll文件,步骤如下: 1. ...
- grok 正则解析日志例子<1>
<pre name="code" class="html">下面是日志的样子 55.3.244.1 GET /index.html 15824 0. ...
- haproxy hdr和path
path : string This extracts the request's URL path, which starts at the first slash and ends before ...
- GPS功能:百度路书自定义【轨迹回放】
如题所述:百度的编辑界面很直观,修改后就可以运行,地址:http://developer.baidu.com/map/jsdemo.htm#c2_8: 因为同事研究了一下午结果都没搞出来,他copy百 ...
- Aix5~6小机运维
1,0516-787 extendlv: Maximum allocation for logical volume hd3 is 512 smitt chlv改max logical ...
- CSS3重点总结
CSS3重点总结(1)兄弟选择器:2种:+. ~ 1.相邻兄弟选择器(+):选择器1+选择器2 选择"选择器1"相邻的后一个兄弟"选择器2" 强调:选中的是自己 ...
- sql server中将一个表中的部分数据插入到另一个表中
可以通过存储过程完成,也可以通过在库名上右击“新建查询”执行.语句其实基本相同. 1. 存储过程: CREATE PROCEDURE pro1 as insert into tableB (field ...
- SQL语句优化(转摘)
(1) 选择最有效率的表名顺序(只在基于规则的seo/' target='_blank'>优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最 ...