【理论】支持向量机5:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法
来源:互联网 发布:怎样才能增加淘宝流量 编辑:程序博客网 时间:2024/06/04 01:01
【原文:http://blog.pluskid.org/?p=696】
作为支持向量机系列的基本篇的最后一篇文章,我在这里打算简单地介绍一下用于优化 dual 问题的 Sequential Minimal Optimization (SMO) 方法。确确实实只是简单介绍一下,原因主要有两个:第一这类优化算法,特别是牵涉到实现细节的时候,干巴巴地讲算法不太好玩,有时候讲出来每个人实现得结果还不一样,提一下方法,再结合实际的实现代码的话,应该会更加明了,而且也能看出理论和实践之间的差别;另外(其实这个是主要原因)我自己对这一块也确实不太懂。
先回忆一下我们之前得出的要求解的 dual 问题:
对于变量
另外还有一种叫做 Coordinate Descend 的变种,它每次只选择一个维度,例如
然而这里还有一个问题就是约束条件的存在,其实如果没有约束条件的话,本身就是一个多元的 quadratic 问题,也是很好求解的。但是有了约束条件,结果让 Coordinate Descend 变得很尴尬了:比如我们假设
所以 Sequential Minimal Optimization (SMO) 一次选取了两个坐标维度来进行优化。例如(不失一般性),我们假设现在选取
其中那个从 3 到 n 的作和由于都是常量,我们统一记作
也可以得到
同 Coordinate Descent 一样,SMO 也会选取不同的两个 coordinate 维度进行优化,可以看出由于每一个迭代步骤实际上是一个可以直接求解的一元二次函数极值问题,所以求解非常高效。此外,SMO 也并不是依次或者随机地选取两个坐标维度,而是有一些启发式的策略来选取最优的两个坐标维度,具体的选取方法(和其他的一些细节),可以参见 John C. Platt 的那篇论文 Fast Training of Support Vector Machines Using Sequential Minimal Optimization 。关于 SMO ,我就不再多说了。如果你对研究实际的代码比较感兴趣,可以去看 LibSVM 的实现,当然,它那个也许已经不是原来版本的 SMO 了,因为本来 SVM 的优化就是一个有许多研究工作的领域,在那些主要的优化方法之上,也有各种改进的办法或者全新的算法提出来。
除了 LibSVM 之外,另外一个流行的实现 SVMlight 似乎是用了另一种优化方法,具体可以参考一下它相关的论文 Making large-Scale SVM Learning Practical 。
此外,虽然我们从 dual 问题的推导中得出了许多 SVM 的优良性质,但是 SVM 的数值优化(即使是非线性的版本)其实并不一定需要转化为 dual 问题来完成的,具体做法我并不清楚,不过这方面的文章也不少,比如 2007 年 Neural Computation 的一篇 Training a support vector machine in the primal 。如果感兴趣可以参考一下。
- 【理论】支持向量机5:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法
- SVM-支持向量机学习(7):求解SVM算法-SMO-序列最小最优化
- 支持向量机:Numerical Optimization
- 支持向量机:Numerical Optimization
- 数值优化(Numerical Optimization)
- [Free Mind]支持向量机:Numerical Optimization
- 支持向量机系列五:Numerical Optimization
- 支持向量机_5:Numerical Optimization
- 支持向量机 SVM 简要介绍
- 用SMO算法求解支持向量机(SVM)pythony源代码(三)
- 支持向量机SVM推导及求解过程
- 支持向量机SVM推导及求解过程
- 【理论】支持向量机2: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念
- 【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
- 支持向量机SVM算法介绍
- 支持向量机SMO算法求解过程分析
- SMO算法求解支持向量机(二)
- 求解极值的数值算法
- 内部类
- poj 2586
- cocos2dx Android植入友盟分享功能
- 状态压缩(2) Hdu 4778 Gems Fight!
- 享元模式-Flyweight
- 【理论】支持向量机5:Numerical Optimization —— 简要介绍求解求解 SVM 的数值优化算法
- autoit 三次尝试 自动登陆新浪微博
- linux shell编程 变量$#,$@,$0,$1,$2的含义解释
- 程序员之歌
- 手把手教你玩转GDB(三)—常用命令
- 解释器模式-interpreter
- className.class.getResourceAsStream()与ClassLoader.getSystemResourceAsStream() 的区别
- Css3圆角阴影
- URL 连接超时