上节中我们得出了原问题的对偶问题为:

 公式(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条件)相关推荐

  1. 支持向量机(SVM) SMO算法详解

    1.寻找最大间隔 训练样本集:D = { (x1, y1) ,  (x2, y2) , ... ,(xm, ym) } , yi ϵ { -1, +1} 划分超平面的线性方程:wTx + b = 0( ...

  2. 支持向量机器—SMO算法

    文章目录 引入SMO的背景 两个变量二次规划求解方法 选择两个变量的方法 第一个变量选择 第二个变量选择 计算阈值b和差值EiE_iEi​ SMO算法 参考文章: 引入SMO的背景 前面的文章提到,S ...

  3. 支持向量机之SMO算法

    一.SMO算法 序列最小化优化算法(Sequential minimal optimization,SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的约翰·普莱特在1 ...

  4. smo算法C语言,SMO算法详解

    一.我们先回顾下SVM问题. A.线性可分问题 1.SVM基本原理: SVM使用一种非线性映射,把原训练  数据映射到较高的维.在新的维上,搜索最佳分离超平面,两个类的数据总可以被超平面分开. 2.问 ...

  5. 机器学习入门笔记:(4.3)SMO算法

    前言 之前的博客中,已经介绍了SVM的原理: 机器学习入门学习笔记:(4.1)SVM算法 机器学习入门学习笔记:(4.2)核函数和软间隔 最后我们得到的优化问题如下: maxα∑i=1mαi−12∑i ...

  6. 【机器学习】:SMO算法理解

    SMO算法看了近3遍感觉还是有点朦朦胧胧,模模糊糊. 所以索性,理解多少写多少,避免遗忘.可能会有很多错误,欢迎指正. 主要基于李航的<统计学习方法> SMO(sequential min ...

  7. 机器学习九大算法---支持向量机

    机器学习九大算法---支持向量机 出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好 ...

  8. 详解SVM支持向量机算法(四:坐标上升和SMO算法)

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 背景 坐标上升算法 定义 过程 举个求解的栗子 基于坐标上升的SMO算法 SMO ...

  9. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

最新文章

  1. mysql通用分页_MySQL海量数据的通用存储过程分页代码
  2. python单词意思-python 前面几个单词含义
  3. LINQ之路系列博客后记
  4. 剑指offer:50-53记录
  5. 当连接一个 IP 不存在的主机时,TCP握手过程是怎样的?
  6. Bare HTTP不完全是RESTful
  7. 发表email所需要
  8. puppetmaster 自动签名
  9. P2P概览与原理解析
  10. java中加权滤波怎么用_方向加权中值滤波算法-The Directional Medial Filtering with Weights...
  11. Android等宽字体
  12. 让所有版本的IE卡死的HTML代码
  13. 数据如何变成知识(2):数据湖和数据沼泽
  14. rk3288编译android,RK3288 源码编译Android 7.1.2 自动编译
  15. 北斗星历星钟性能总结
  16. 张亚飞《.Net for Flash FMS》读后笔记一
  17. 算法基础知识——二叉树
  18. web前端培训班多少钱-web行业未来发展如何
  19. 怎么用xshell启动mysql_xshell怎么配置mysql
  20. 封神台之萌新也能找CMS漏洞整理记录

热门文章

  1. 黑群晖vmm专业版_在NAS上运行虚拟机:群晖虚拟化套件VMM正式发布
  2. airtest上的滑动操作swipe
  3. 高等代数 线性映射(第9章)1 概念,运算,核与象
  4. js获取传统节假日_vue js moment.js 过滤了双休日和法定节假日
  5. “海盗”贝索斯:出色的商人,疯狂的投资家
  6. 互联网企业掀起安全大战 各显神通
  7. 数据防泄密软件可以解决哪些安全问题?
  8. yutons_sug搜索框提示插件||输入框提示插件
  9. VBS 从Excel中获取数据,批量替换word中的文字
  10. 物联网案例(一):将设备数据转换为明智决策