支持向量机(四)----序列最小最优化算法SMO
在支持向量机(二)和(三)中,我们均遗留了一个问题未解决,即如何求解原问题的对偶问题;
在支持向量机(二)中对偶问题为:

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

对于上述两个对偶问题,我们在支持向量机(三)中分析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的更多相关文章
- 序列最小最优化算法(SMO)-SVM的求解(续)
在前一篇文章中,我们给出了感知器和逻辑回归的求解,还将SVM算法的求解推导到了最后一步,在这篇文章里面,我们将给出最后一步的求解.也就是我们接下来要介绍的序列最小最优化算法. 序列最小最优化算法(SM ...
- SMO序列最小最优化算法
SMO例子: 1 from numpy import * 2 import matplotlib 3 import matplotlib.pyplot as plt 4 5 def loadDataS ...
- 【机器学习】支持向量机(SVM)的优化算法——序列最小优化算法(SMO)概述
SMO算法是一一种启发式算法,它的基本思路是如果所有变量的解的条件都满足最优化问题的KKT条件,那么这个最优化问题的解就得到了.因为KKT条件是该优化问题的充分必要条件. 整个SMO算法包括两个部分: ...
- Sequential Minimal Optimization(SMO,序列最小优化算法)初探
什么是SVM SVM是Support Vector Machine(支持向量机)的英文缩写,是上世纪九十年代兴起的一种机器学习算法,在目前神经网络大行其道的情况下依然保持着生命力.有人说现在是神经网络 ...
- 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等
优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...
- 支持向量机(Support Vector Machine)-----SVM之SMO算法(转)
此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimization, SMO)是一种用于解决支持向量机训练过程中所产生优化问题的算法.SMO由微软研究院的 ...
- 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态 ...
- 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法
原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...
- 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...
随机推荐
- 【Linux开发】为qt-embedded添加jpeg库的交叉编译方法for arm
看了一个文章: =====================================谢论坛内各位的帮助,我的qt/e2.3.10和qtopia2.1.1终于全部编译通过. 下面是jpeg和uui ...
- java中的命名规则
转载自:http://growstep.diandian.com/post/2011-08-17/3989094 1.类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参数.实 ...
- 20191127 Spring Boot官方文档学习(9.1-9.3)
9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...
- python 并发编程 多进程 互斥锁 目录
python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别
- [Git] 015 远程仓库篇 第二话
0. 前言 在 [Git] 006 在本地新建一个仓库 中,我在本地建了一个仓库 "git_note" 这回的任务 在 GitHub 上建一个远程仓库:为方便记忆,我就起名为 &q ...
- 银河麒麟v4.0.2 安装gscloud的简单过程
1. 本来想用 tar包安装 redis 结果总是报错, 提示需要make test 但是我已经make test 了 所以还是使用 apt-get来安装. 2. 方式 apt-get update ...
- SSIS包定时执行
企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名& ...
- [51Nod1850] 抽卡大赛
link $solution:$ 朴素 $dp$,暴力枚举选择 $i$ 号人的第 $j$ 张卡片,朴素 $dp$ 即可,时间复杂度 $O(n^4)$ . 考虑对于朴素 $dp$ 的优化,发现其实是一个 ...
- 绝对定位left:50% 隐式设置了宽度
绝对定位left:50% 隐式设置了宽度 不定宽高的盒子如何在父盒子中垂直居中,我们常做的一种方式便是 left: 50%; top: 50%; transform: translate(-50%, ...
- arcgis server10.2自带打印模板路径
找到arcgis server10.2安装目录路径,我的安装路径为C盘,如下: C:\Program Files\ArcGIS\Server\Templates\ExportWebMapTemplat ...