SMO算法--SVM(3)


利用SMO算法解决这个问题:

SMO算法的基本思路
SMO算法是一种启发式的算法(别管启发式这个术语, 感兴趣可了解), 如果所有变量的解都满足最优化的KKT条件, 那么最优化问题就得到了。
每次只优化两个, 将问题转化成很多个二次规划的子问题, 直到所有的解都满足KKT条件为止。
整个SMO算法包括两个部分:
1, 求解两个变量的解析方法
2, 选择变量的启发式方法


求解两个变量的解析方法

先选择两个变量,其余的固定, 得到子问题:

更新

先不考虑约束条件, 代入, 得到:

求导, 得到:

由于决策函数为:

令:


定义误差项

定义学习率

将v1, v2代入到中, 得到:

代入误差项和学习率, 得到最终的导数表达式:

求出:

表示未加约束条件求出来的(未剪辑)

加上约束条件:

约束条件如下图的正方形框所示, 一共会有两种情况:

以左图为例子分析:,约束条件可以写成:,分别求取的上界和下界:
下界:

上界:

同理,右图情况下
下界:

上界:
加入约束条件后:

然后根据:计算出


选择变量的启发式方法

的选择

选择违反KKT条件的, 选择使|E1 - E2|变化最大的。
具体过程如下:

的选择:

由KKT条件:

具体证明过程:

一般来说,我们首先选择违反这个条件的点。如果这些支持向量都满足KKT条件,再选择违反的点。

的选择:

要让|E1 - E2|变化最大。E1已经确定, 找到使得|E1-E2|最大的E2对应的即可。

更新 b

更新b要满足:

得到:

根据E1的计算公式:

代入即可得到:

同理:

更新b:

更新Ei

更新Ei时候, 只需要用到支持向量就好了, 因为超平面就是用支持向量来确定的, 其他的点其实并没有贡献什么作用, 只计算支持向量可以减小计算量。

其中,S是支持向量的集合。


SMO算法的总结:

先初始化参数, 选择, 然后更新到所有变量满足KKT条件。
.

.

.

SMO算法--SVM(3)的更多相关文章

  1. 机器学习经典算法详解及Python实现--基于SMO的SVM分类器

    原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector  ...

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

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

  3. [笔记]关于支持向量机(SVM)中 SMO算法的学习(一)理论总结

    1. 前言 最近又重新复习了一遍支持向量机(SVM).其实个人感觉SVM整体可以分成三个部分: 1. SVM理论本身:包括最大间隔超平面(Maximum Margin Classifier),拉格朗日 ...

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

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

  5. 统计学习方法c++实现之六 支持向量机(SVM)及SMO算法

    前言 支持向量机(SVM)是一种很重要的机器学习分类算法,本身是一种线性分类算法,但是由于加入了核技巧,使得SVM也可以进行非线性数据的分类:SVM本来是一种二分类分类器,但是可以扩展到多分类,本篇不 ...

  6. 支持向量机(SVM)中的 SMO算法

    1. 前言 最近又重新复习了一遍支持向量机(SVM).其实个人感觉SVM整体可以分成三个部分: 1. SVM理论本身:包括最大间隔超平面(Maximum Margin Classifier),拉格朗日 ...

  7. <转>SVM实现之SMO算法

    转自http://blog.csdn.net/zouxy09/article/details/17292011 终于到SVM的实现部分了.那么神奇和有效的东西还得回归到实现才可以展示其强大的功力.SV ...

  8. SVM之SMO算法(转)

    支持向量机(Support Vector Machine)-----SVM之SMO算法(转) 此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimizat ...

  9. ML-求解 SVM 的SMO 算法

    这算是我真正意义上认真去读的第一篇ML论文了, but, 我还是很多地方没有搞懂, 想想, 缓缓吧, 还是先熟练调用API 哈哈 原论文地址: https://www.microsoft.com/en ...

随机推荐

  1. exctern C

    在C++中调用C语言 因为C++扩展了函数重载.编译时会将函数名修改,所以直接条用会出错. #ifdef __cplusplusextern "C" {#endif // __cp ...

  2. POJ 2443:Set Operation 经典位运算好题

    Set Operation Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2965   Accepted: 1196 Des ...

  3. h5-伸缩布局

    1.html代码 <div class="box"> <div class="first">1</div> <div ...

  4. Abstract抽象类 && Interface接口

    # 抽象类 ## 将相同的但是不确定的动作提取出来,抽象化,抽象类的意义在于,在子类中进行实现. ## 抽象类可以被继承,子类继承抽象类时,需要对抽象方法进行完全实现. ## 抽象方法不能有方法体. ...

  5. Maven - Eclipse例子

    版权所有,未经授权,禁止转载 章节 Maven – 简介 Maven – 工作原理 Maven – Repository(存储库) Maven – pom.xml 文件 Maven – 依赖管理 Ma ...

  6. springboot~不用模板执行html文件

    放到在resources/static目录下,创建目录或html文件,均可.如:

  7. Day 9:双列集合Map及实现该接口的类的常用方法

    为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...

  8. POJ 3970:Party

    Party Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Submit Status ...

  9. Java集合--Map

    Map接口(双例集合): Map提供了映射关系,存放的元素是以key-value键值对存放的.可以根据key快速的查询value.key不可以重复,value可以重复. 常用实现类:HashMap,H ...

  10. 【收藏】免费开源好看的bootstrap后台模板

    1.ace admin github:https://github.com/bopoda/acedemo:http://ace.jeka.by/ 2.CoreUI jQuery.Angular.Rea ...