机器学习算法——支持向量机SVM4(SMO算法及KTT条件)
上节中我们得出了原问题的对偶问题为:
公式(4.1)
那如何求解公式4.1呢?即解出,求出w和b即可得到原型:
(公式4.2)
显然,公式4.1是二次规划(QP)问题,可使用二次规划算法进行求解。然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。为了避免这个障碍,人们利用问题本身的特性,研究出很多高效的算法,其中SMO算法就是一个典型的代表。
讲解SMO算法之前,就必须先了解什么是KTT条件?
一般有等式约束条件时,常常使用拉格朗日乘子法,即把等式约束函数用一个系数与目标函数写为一个式子,称为拉格朗日函数,通过对拉格朗日函数对各变量求导,令其为零,得到候选值集合,然后验证求得最优值。
一般有不等式约束条件时,常常使用的就是KTT条件。同样地,把所有等式、不等式约束与目标函数写成一个式子,也叫拉格朗日函数,通过一些条件,可以求出最优值的必要条件,这个条件称为KTT条件。假设不等式约束的优化问题,可以写为:
那么,拉格朗日函数为
KTT条件是说最优值必须满足以下条件:
1. L(a,b,x)对x求导等于零;
2. a*g(x)=0
3. g(x) ≤0
4. ai≥0,b≥0
5. h(x)=0
到此为止,我们就能得出公式4.1的KTT条件为:
那么,对任意训练样本,总有
或对
。若
,则该样本将不会出现在公式4.2求和公式中,所以也不会对f(x)有任何影响。若
,则必有
,所对应的样本点位于最大间隔边界上,是一个支持向量。
这总结出支持向量机一个重要的性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
回到正题,求解公式4.1用到的SMO算法是什么?
SMO基本思路是先固定之外的所有参数,然后求
上的极值。由于存在约束
,若固定
之外的其它变量,则
可由其它变量导出。于是SMO算法每次选择两个变量
和
并固定其它参数。这样,在参数初始化后,SMO不断进行如上操作即可。
由上面的KTT条件注意到,满足KTT的 和
就是在最大间隔上,如果不满足KTT条件,就会使得目标函数在迭代后减小。即:KTT条件违背的程度越大,则变量更新后可能导致的目标函数值减幅越大。于是,SMO会选取违背KTT条件程度最大的变量,第二个变量选择使一个目标函数值减小最快的变量,但由于其计算过程的复杂程度过高,因此,SMO采用一个启发式:使选取的两变量对应样本之间的间隔最大。
具体来说,仅考虑和
时,公式4.1的约束可重写为:
,其中
是使
成立的常数。
用去消除公式4.1中的变量
,则得到一个关于
的单变量二次规划问题,仅有的约束就是
,这样的很容易就能求解出
和
那如何求出公式4.2中的参数b呢?
注意到对任意支持向量(xs,ys),都有ysf(s)=1,即
为所有支持向量的下标集。
理论上,可选取任意支持向量并通过求解上述式子得到b。
但在现实任务中,常采用一种更鲁棒的做法:使用所有支持向量求解的平均值,即:
下节讲解核函数。
机器学习算法——支持向量机SVM4(SMO算法及KTT条件)相关推荐
- 支持向量机(SVM) SMO算法详解
1.寻找最大间隔 训练样本集:D = { (x1, y1) , (x2, y2) , ... ,(xm, ym) } , yi ϵ { -1, +1} 划分超平面的线性方程:wTx + b = 0( ...
- 支持向量机器—SMO算法
文章目录 引入SMO的背景 两个变量二次规划求解方法 选择两个变量的方法 第一个变量选择 第二个变量选择 计算阈值b和差值EiE_iEi SMO算法 参考文章: 引入SMO的背景 前面的文章提到,S ...
- 支持向量机之SMO算法
一.SMO算法 序列最小化优化算法(Sequential minimal optimization,SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的约翰·普莱特在1 ...
- smo算法C语言,SMO算法详解
一.我们先回顾下SVM问题. A.线性可分问题 1.SVM基本原理: SVM使用一种非线性映射,把原训练 数据映射到较高的维.在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开. 2.问 ...
- 机器学习入门笔记:(4.3)SMO算法
前言 之前的博客中,已经介绍了SVM的原理: 机器学习入门学习笔记:(4.1)SVM算法 机器学习入门学习笔记:(4.2)核函数和软间隔 最后我们得到的优化问题如下: maxα∑i=1mαi−12∑i ...
- 【机器学习】:SMO算法理解
SMO算法看了近3遍感觉还是有点朦朦胧胧,模模糊糊. 所以索性,理解多少写多少,避免遗忘.可能会有很多错误,欢迎指正. 主要基于李航的<统计学习方法> SMO(sequential min ...
- 机器学习九大算法---支持向量机
机器学习九大算法---支持向量机 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好 ...
- 详解SVM支持向量机算法(四:坐标上升和SMO算法)
作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 背景 坐标上升算法 定义 过程 举个求解的栗子 基于坐标上升的SMO算法 SMO ...
- 支持向量机原理(四)SMO算法原理
支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...
最新文章
- mysql通用分页_MySQL海量数据的通用存储过程分页代码
- python单词意思-python 前面几个单词含义
- LINQ之路系列博客后记
- 剑指offer:50-53记录
- 当连接一个 IP 不存在的主机时,TCP握手过程是怎样的?
- Bare HTTP不完全是RESTful
- 发表email所需要
- puppetmaster 自动签名
- P2P概览与原理解析
- java中加权滤波怎么用_方向加权中值滤波算法-The Directional Medial Filtering with Weights...
- Android等宽字体
- 让所有版本的IE卡死的HTML代码
- 数据如何变成知识(2):数据湖和数据沼泽
- rk3288编译android,RK3288 源码编译Android 7.1.2 自动编译
- 北斗星历星钟性能总结
- 张亚飞《.Net for Flash FMS》读后笔记一
- 算法基础知识——二叉树
- web前端培训班多少钱-web行业未来发展如何
- 怎么用xshell启动mysql_xshell怎么配置mysql
- 封神台之萌新也能找CMS漏洞整理记录
热门文章
- 黑群晖vmm专业版_在NAS上运行虚拟机:群晖虚拟化套件VMM正式发布
- airtest上的滑动操作swipe
- 高等代数 线性映射(第9章)1 概念,运算,核与象
- js获取传统节假日_vue js moment.js 过滤了双休日和法定节假日
- “海盗”贝索斯:出色的商人,疯狂的投资家
- 互联网企业掀起安全大战 各显神通
- 数据防泄密软件可以解决哪些安全问题?
- yutons_sug搜索框提示插件||输入框提示插件
- VBS 从Excel中获取数据,批量替换word中的文字
- 物联网案例(一):将设备数据转换为明智决策