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

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

     

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

     

对于上述两个对偶问题,我们在支持向量机(三)中分析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. CentOS下搭建docker+.net core

    运行环境: CentOS 7.0 容器:Docker 1.13.1 .Net Core版本: .NET Core 2.1,安装详见 CentOS 7 下安装.NET Core SDK 2.1 1.安装 ...

  2. C++ 线性表实现

    List.h #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h&g ...

  3. javascript学习笔记--经典继承、组合继承、原型式继承、寄生继承以及寄生组合继承

    经典继承 js中实现经典继承的方式是通过构造函数来实现的,即在子类中对父类调用call方法. function Geometric() { this.time = ""; this ...

  4. MATLAB图像的代数运算

    1.图像旋转与缩放 bm=imread("3.png"); %subplot(1,3,1); imshow(bm); %缩放图片 %bt=imresize(bm,0.5,'near ...

  5. vue脚手架通过UI界面创建项目

    vue脚手架提供了图形界面操作项目,比之前通过命令操作的形式还要简单,以下是使用的步骤: 1.全局安装@vue/cli脚手架工具 npm i @vue/cli -g {使用淘宝镜像:npm insta ...

  6. 流畅的Python (Fluent Python) —— 第二部分01

    2.1 内置序列类型概览 Python 标准库用 C 实现了丰富的序列类型,列举如下. 容器序列 list. tuple 和 collections.deque 这些序列能存放不同类型的数据. 扁平序 ...

  7. 划水日记之大哥带我走渗透I

    5/24/19 周五 access注入 先测试是否有漏洞 or nor and 1=1 and 1=2 2. Order by 猜字表端,发现一共有22个 3..然后使用 union select 1 ...

  8. linux Apache 日志轮询

    安装日志轮询工具 cronolog [root@Nagios-Server tools]# wgethttp://cronolog.org/download/cronolog-1.6.2.tar.gz ...

  9. mysql基础知识和pymysql

    一.视图 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的 ...

  10. CentOS7 安装 Mysql5.6.40

    CentOS7.5二进制安装MySQL-5.6.40 安装之后登陆不上,mysql.user 表是空的时: Mysql User表为空 mysql创建用户报错ERROR 1364 (HY000): F ...