在支持向量机(二)和(三)中,我们均遗留了一个问题未解决,即如何求解原问题的对偶问题;

  在支持向量机(二)中对偶问题为:

     

  在支持向量机(三)中的对偶问题为:

     

对于上述两个对偶问题,我们在支持向量机(三)中分析C的作用时有分析过,当C特别大时,松弛因子ξ=0,故此时的线性支持向量机即为线性可分支持向量机,也就是说线性可分支持向量机可以看做是线性支持向量机的一种特殊情况,故在此处,我们以支持向量机(三)中的对偶问题为例,来分析利用SMO算法求解的过程,在上述对偶问题中,变量是拉格朗日乘子,一个变量αi对应一个样本点(xi,yi)变量的总数等于样本容量n

在支持向量机(一)中我们已经讨论了原问题与对偶问题的解等价的条件,即KKT条件。SMO算法基本思路也正是KKT条件:即如果所用变量的解都需满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。也就说假如是上述对偶问题的最优解,那么对于每一个α,均满足KKT条件,如下:(KKT条件推导见支持向量机(一))

   

SMO算法过程:

  1.选几个变量进行优化

  分析如上问题,最终我们需要优化的是n个变量α,一次型优化显然行不通,此时我们可以采用一种从局部到整体的思路,即先优化其中一部分变量,使这部分变量满足上述KKT条件,然后重复这种思路,直到n个变量α均被优化到满足KKT条件,那么此时的α即为满足条件的最优解,此时问题的关键为我们选几个变量进行优化,下边分情况讨论;

  a.每次选一个变量α进行优化:

    

    等式两边同乘以y1,即可得:

    α1变化的同时等号右边也随着一起变量,显然选定一个变量和原问题没有区别

  b.每次选择两个变量α进行优化:

    

    等式两边同乘以y1,可得:……………………………………………………………………(1)

    我们可以用一个变量表示另一个变量,我们通过在优化一个变量的同时也优化了另外一个变量,这样将一个优化n个变量的问题转换成为了优化两个变量的问题,按照这样的思路,不断的重复即可优化所有的变量,使其满足KKT条件。解决了选几个的问题,接下来要解决的问题就是怎么选和如何求解的问题这才是SMO的核心,参考《李航-统计学习方法一书》,将SMO分解为两个部分:第一:求解两个变量的二次规划的解析方法;第二:选择变量的启发式方法

  2.求解两个变量的二次规划的解析方法

  遵循何种原则去去选择两个变量,我们在后边整理,这里我们现假定我们选α1和α2作为优化变量,我们对原式进行化简如下:

    

  在上述化简过程中

    (1)我们将和α1与α2无关的项统一表示为常数项即英文单词constant

    (2)

  将式(1)代入到式(2)中可得:

    

    为了求解方便特令:

      

    将(4)(5)代入(1)中得:

      

    在KKT条件中:,令则:

      

    则:

      

  求解式(3)的最小值,式(3)为关于变量α2的二次函数,最值点即为极值点也就是导数为0的点,对(3)式求导并将上述(6)代入得:

    

  将(7)(8)(10)(11)代入(12)并化简:

    

    令:

    为预测值,为真实值,定义为真实值与预测值之间的误差;

    则:

    

    

    

      

      

      

      

      

  

  

  

  

    

  

  

支持向量机(四)----序列最小最优化算法SMO的更多相关文章

  1. 序列最小最优化算法(SMO)-SVM的求解(续)

    在前一篇文章中,我们给出了感知器和逻辑回归的求解,还将SVM算法的求解推导到了最后一步,在这篇文章里面,我们将给出最后一步的求解.也就是我们接下来要介绍的序列最小最优化算法. 序列最小最优化算法(SM ...

  2. SMO序列最小最优化算法

    SMO例子: 1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4 5 def loadDataS ...

  3. 【机器学习】支持向量机(SVM)的优化算法——序列最小优化算法(SMO)概述

    SMO算法是一一种启发式算法,它的基本思路是如果所有变量的解的条件都满足最优化问题的KKT条件,那么这个最优化问题的解就得到了.因为KKT条件是该优化问题的充分必要条件. 整个SMO算法包括两个部分: ...

  4. Sequential Minimal Optimization(SMO,序列最小优化算法)初探

    什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络 ...

  5. 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等

    优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...

  6. 支持向量机(Support Vector Machine)-----SVM之SMO算法(转)

    此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的 ...

  7. 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态 ...

  8. 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法

    原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...

  9. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题

    在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...

随机推荐

  1. POJ 1330 Nearest Common Ancestors (dfs+ST在线算法)

    详细讲解见:https://blog.csdn.net/liangzhaoyang1/article/details/52549822 zz:https://www.cnblogs.com/kuang ...

  2. 【Qt开发】【VS开发】VS2010+Qt开发环境搭建

    QT与JAVA有点类似,也是一种跨平台的软件(当然在windows平台和linux平台需要安装相应的QT开发环境和运行库,类似于JAVA在不同平台下的虚拟机JVM环境),因此对于某些需要同时支持win ...

  3. 扫描 + 注解完成bean的自动配置

    链接:https://pan.baidu.com/s/1W3TINXNnqpxmkIADOcJZCQ 提取码:fmt5 我们知道,我们一般是通过id或name调用getBean方法来从IOC容器中获取 ...

  4. urllib基本库的使用

    get方法的学习 1import urllib.request 2import ssl 3#设置全局证书 4ssl._create_default_https_context = ssl._creat ...

  5. 一分钟安装mysql

    学数据库的人都知道,MySQL数据库是比较基本的掌握要求,不仅开源而且社区版本是免费使用的.由于工作上或者经常更换系统的原因,有时候会需要安装MySQL数据库.为了不至于每次安装都要查阅资料,现把安装 ...

  6. C++中的新型类型转换

    1,C 语言中已经有类型之间的强制转换,C++ 做了改善: 2,C 方式的强制类型转换: 1,(Type) (Expression): 2,Type (Expression): 1,这种方式和上述方式 ...

  7. 小明种苹果(续)第十七次CCF认证

    小明种苹果(续)第十七次CCF认证 题目 原题链接 ](http://118.190.20.162/view.page?gpid=T93) 很高心,在现在CCF CSP可以下载自己当时的答卷了,也就是 ...

  8. linux通信之信号

    一. 信号介绍 1.1. 什么是信号 1.1.1. 信号是内容受限的一种异步通信机制 a. 之所以称之为受限是因为通信内容在OS已经规定,内容简单,单一(signal.h文件中定义好) b. 信号本质 ...

  9. python3使用hashlib进行加密

    hashlib是个专门提供hash算法的库,里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单.方便. MD5 MD5的全称是Message-Di ...

  10. PHP通过exec执行git pull

    目标 项目没有使用Jenkins部署,使用的是Gitlab+ECS,要实现代码的自动部署 想法 使用Gitlab的钩子,当某个分支的代码提交之后,访问一个URL,实现代码的自动部署.这里使用PHP的e ...