前面三篇我已经谈了谈我对支持向量机的理解,推到了各类支持向量机的对偶算法,我们有很多最优化算法来求解这个问题,但是样本容量很大时,这些算法会变得非常低效。人们就提出了很多快速实现算法,SMO算法就是其中之一,主要是用来解这个对偶问题:

s.t.                  

这个问题中变量是拉格朗日乘子,一个变量对应一个样本点,变量的总数即为样本容量N,也就是说我们现在要求的这个函数是N元函数。

在介绍SMO之前,大家可以先了解下坐标上升算法,这两个算法类似。


坐标上升算法

坐标上升算法每次更新多元函数中的一维,经过多次迭代直到收敛达到优化函数的目的。

下图中从A点到F*红色线所示就是这个过程。


SMO算法

上面已经提到了我们需要优化N个变量,SMO算法就是将N个参数的二次规划问题分成了多个二次规划问题,每个子问题只需要求解两个参数。

为什么要两个两个求?

我们要选择一对变量,因为在SVM中变量是相互关联的:,若只固定一个,当我们对修正后,等号将不再成立。我们至少需要两个来保证等式成立。

我们先选取两个需要优化的参数为(参数的选取不是随意的,在最后会介绍),其他变量是固定的,

带入上述对偶问题式子:

我们可以得到SMO的最优化问题的子问题:

s.t.        

我们可以借助,为了方便书写,我们令

可得:

       推出:

为了方便书写,我们令

代入上式,变成只有的二次函数:

 对求导数:

=0

将所有带的移到等式的同一侧

这里我们引入

   其中的预测值,是真实值

由此式也可得出:

i=1时:

i=2时:

补充一点:我们将优化后的记为,均满足:

将上边求导得到的式子中的v和换掉:

到了这一步我们已经得到了优化后的,但是还有一个要注意的点!!!要判断是否满足定义域,我们管这一步叫对原始解进行裁剪:

将      两边同时乘上

得:  这个式子对应两种情况:

 : 

 : 

当 时:

当 时:

综上:

求解:

                      

完成的优化后,需要重新计算b,(为了进行变量的选择):

     变量的选择:

最后,我们就得到了SMO算法:

序列最小最优化算法(SMO算法)相关推荐

  1. 一文看懂 序列最小最优化算法---SMO

    一.SMO的背景介绍 序列最小最优化算法(sequential minimal optimization,SMO)于1998年被John Platt发明,是一种用于解决支持向量机训练期间出现的二次规划 ...

  2. ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核)

    ML之SVM:利用Js语言设计SVM算法(SMO算法+线性核/高斯核) 目录 输出结果 设计思路 设计代码(部分代码) 输出结果 设计思路 设计代码(部分代码) var doTest = functi ...

  3. smo算法matlab实现,SVM之序列最小最优化算法(SMO算法)

    SVM回顾 支持向量机(SVM)的一大特点是最大化间距(max margin).对于如上图的二分类问题,虽然有很多线可以将左右两部分分开,但是只有中间的红线效果是最好的,因为它的可活动范围(margi ...

  4. 砥志研思SVM(四) 序列最小最优化算法(SMO)论文翻译

  5. SMO(序列最小优化)算法论文及原理详述

    今日拜读了Platt的关于SMO的论文:Sequential Minimal Optimization:A Fast Algorithm for Training Support Vector Mac ...

  6. SMO算法原理转载+自己补充

    几何间隔: 这个意思就是超平面离数据集的点的距离. 都别装逼了,说人话是啥? 说人话就是高中几何里的"点到平面距离". 经常听到的硬间隔和软间隔是啥? 说人话: 惩罚系数C=0,硬间隔 惩罚系数C&g ...

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

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

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

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

  9. SVM笔记之SMO算法

    目录 SMO序列最小最优化算法 变量更新 更新变量的选取 bbb和误差EiE_iEi​的计算 SMO序列最小最优化算法 SMO算法实际上用于SVM对偶问题求解中α∗\boldsymbol{\alpha ...

最新文章

  1. Qt入门——三个臭皮匠顶个诸葛亮
  2. 在 IntelliJ IDEA 中远程调试 Java 程序
  3. Spark MLlib实现的广告点击预测–Gradient-Boosted Trees
  4. 2018年最后一个月最值得关注的13个优质公号
  5. .NET串口通讯解决方案
  6. Linux系统中打开文件数量的查看方法
  7. Python 线程复习
  8. 【1.Delphi基础】1.Delphi程序设计入门
  9. 【离散数学】容斥原理
  10. 23----JS基础-----Unicode编码表
  11. 基于Verilog实现2ASK调制
  12. 字符编码-- Unicode(1991年)
  13. 深圳礼品展1688再度强强联手,30万平超级大展10月震撼来袭!
  14. linux根据端口限速,Linux 中限制网络带宽使用trickle或wondershaper
  15. 何时使用领域驱动设计(DDD)
  16. 口袋网咖已有服务器在使用怎么注销,口袋网咖怎么登录_口袋网咖登录方法介绍_游戏吧...
  17. 基于RBF函数的点云孔洞修补
  18. 控制面板快捷键win10_win10的Microsoft兼容性遥测占用大量资源?这样解决
  19. led接口实验微型计算机,“微机原理与接口技术”开放性实验建设——“点阵LED显示器显示汉字”实验...
  20. R语言使用log函数计算对数、自定义指定底数

热门文章

  1. Excel 2010 VBA 入门 082 数据处理之对比两个表的数据
  2. 高斯分布和正态分布有什么区别?Gaussian VS Normal
  3. 互相关函数实现(c语言完整工程,利用cmake编译)
  4. 抓包工具charles的使用
  5. 广西大学计算机专业女生就业前景,广西大学计算机学院比桂林电子科技大学计算机专业好吗?...
  6. VR+全景播放器+头控讲解-04
  7. html控制树莓派小车,用家里旧的红外遥控器控制树莓派小车
  8. Flutter PDF Android 电子签章不显示问题
  9. 获取网站上的旅游攻略信息,并作数据可视化
  10. Simscape接触建模简介