ref:    blog:http://zhihaozhang.github.io/2014/05/20/svm4/

《数据挖掘导论》


真正的大神是当采用的算法表现出不是非常好的性能的时候,懂得如何去更改算法的人。

本节课的三个内容:

  • Kernels:核,用于构建非线性的分类器
  • Soft Margin:软间隔,减小噪声对分类的影响
  • SMO算法:

1:核

当我们遇到左边的数据,显然,通过一条线是无法讲两种类别分开,那么,为什么利用核技术就可以呢?

a:属性变换

说的通俗一些,就是原来用变量一个变量表示,现在用两个或者多个变量表示,这样做的好处是什么呢?

显然,这样变量的“表现能力”更强大了,而且,不再局限于原始的维数。但是,也会带来一些问题:如更高维时,计算量会增加,维数灾难。

当然,这里还有一个相似度的概念,一个变量表示和多个向量表示,虽然表现能力更强大了,但是,必须要相似,不然就失去了映射的意义。

b:学习非线性SVM模型

问题转化为:

c:核技术

d:Mercer定理

2:软间隔

之前的SVM公式只能构造没有错误的决策边界,利用软间隔,我们可以“原谅”一些错误的存在。避免一些噪声的影响,上图中,我们认为B1作为分类超平面比B2更加适合。

a:松弛变量

那么,问题来了,我们能够容忍多大的误差呢?这里有个度,如下图:

显然,这种属于不能忍的情况。

b:KKT

3:SMO算法

a:坐标上升算法(coordinate assent algorithm)

由于种种原因,同时优化所有变量不太可能,为了得到全局最优,一次只优化一个变量,而保持其他变量不动的方法。这种方法可行的原因是通常优化一个变量的效率高且算法会比较容易实现。
特别地,当只有x,y两个变量的时候,优化的过程如下图:

图中的直线迭代优化的路径,可以看到每一步都会朝着最优解前进一小步,前进的路线是沿着坐标轴方向的,因为每一次都只优化一个变量,而保持另一个变量不变。

b:SMO算法

简化版SMO算法

和坐标上升法的思想类似,SMO算法也想每次只更新一个变量,但是很可惜,

上式限定了,当固定其他所有参数,那么α1上也是个定值,变不了;因此不得不将多增加一个αi,这样α1才能变动,关于αi的选择,有启发式方法,这里先不考虑,介绍一种简单的SMO实现方法。

简化版SMO算法的主要步骤

创建一个alpha向量并将其初始化为0向量
当迭代次数小于最大迭代次数时(外循环)
对数据集中的每个数据向量(内循环):
如果该数据向量可以被优化:
随机选择另一个数据向量
同时优化这两个向量

如果两个向量都不能被优化,退出内循环

	如果所有向量都没有被优化,增加迭代数目,继续下一次循环

如何更新α

SMO之所以高效是因为,当固定了其他参数后,对一个参数的优化过程很高效,现在我们就来看看到底怎么优化这一个参数。
假设我们选取了初始值{α1,α2,…,αn}并且满足KKT条件,下面固定{α3,…,αn},这样W就是α1,α2的函数,而α1,α2满足条件:

为了方便,我们将等式右边的常数值表示为k。
根据y1、y2符号是否相同,可以分为以下两种情况:

接下来以左边的图为例,来说明以下α的选取范围。
当y1、y2异号时,直线的斜率是1,由于KKT条件限定了α1、α2的范围必须在边长为c的正方形内,因此直线有下面两种可能性,

从图中不难总结出取值的上限H和下限L:
L=max(0,α2-α1),H=min(C,C+α2-α1)
同理,y1、y2同号时,
L=max(0,α2+α1-c),H=min(C,α2+α1)

将α1用α2来表示,带回W中,W会被表示成一个二次函数,a(α2)^2+bα2+c,二次函数求最值问题是高中最常做的一个问题了,基本思想是数形结合,找对称轴,然后看变量的取值范围里是否包含了对称轴,如下图:

根据能否取得对称轴,我们可以得到以下更新α2的原则:

有了α2,求解新的α1就不是难事了。

【cs229-Lecture8】顺序最小优化算法的更多相关文章

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

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

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

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

  3. 多目标优化算法(一)NSGA-Ⅱ(NSGA2)(转载)

    多目标优化算法(一)NSGA-Ⅱ(NSGA2) 本文链接:https://blog.csdn.net/qq_40434430/article/details/82876572多目标优化算法(一)NSG ...

  4. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  5. MOPSO 多目标例子群优化算法

    近年来,基于启发式的多目标优化技术得到了很大的发展,研究表明该技术比经典方法更实用和高效.有代表性的多目标优化算法主要有NSGA.NSGA-II.SPEA.SPEA2.PAES和PESA等.粒子群优化 ...

  6. 自然语言处理(5)之Levenshtein最小编辑距离算法

    自然语言处理(5)之Levenshtein最小编辑距离算法 题记:之前在公司使用Levenshtein最小编辑距离算法来实现相似车牌的计算的特性开发,正好本节来总结下Levenshtein最小编辑距离 ...

  7. 优化算法-BFGS

    优化算法-BFGS BGFS是一种准牛顿算法, 所谓的"准"是指牛顿算法会使用Hessian矩阵来进行优化, 但是直接计算Hessian矩阵比较麻烦, 所以很多算法会使用近似的He ...

  8. DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法

    1. Mini-batch梯度下降法 介绍 假设我们的数据量非常多,达到了500万以上,那么此时如果按照传统的梯度下降算法,那么训练模型所花费的时间将非常巨大,所以我们对数据做如下处理: 如图所示,我 ...

  9. 揽货最短路径解决方案算法 - C# 蚁群优化算法实现

    需求为(自己编的,非实际项目): 某配送中心进行揽货,目标客户数为50个客户,配送中心目前的运力资源如下: 现有车辆5台 单台运力最大行驶距离200千米 单台运力最大载重公斤1吨 问:运力怎样走法才能 ...

随机推荐

  1. (原)hisi3531立体声pcm实现播放方式

    版权声明:本文为博主原创文章,未经博主允许不得转载(http://www.cnblogs.com/lihaiping/p/5251854.html) 最近在使用hisi3531做一个项目,需要实现本地 ...

  2. EXP-00056遇到Oracle错误1455问题解决办法

    简单描述一下问题:需要备份一下生产环境的数据库到测试环境,使用EXP命令备份数据库时出现错误 EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 E ...

  3. 《经久不衰的Spring框架:@ResponseBody 中文乱码》(转)

    转载自:http://www.cnblogs.com/shanrengo/p/6429291.html 问题背景 本文并不是介绍@ResponseBody注解,也不是中文乱码问题的大汇总笔记,这些网上 ...

  4. 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包

    iostat sysstat 包里面包括 sar 和 iostat [root@centos7 ~]# iostat Linux 3.10.0-693.2.2.el7.x86_64 (centos7. ...

  5. ubuntu 12.04和Windows 7双系统的安装方法

    ubuntu是一个操作系统,和安卓一样同是linux内核下的子民,所以来这贡献一下,也求JW放出安卓4.0原生正式版,我只想要这个. 前几天发布了ubuntu12.04LTS 版本,兴奋ing. 看到 ...

  6. eclipse常用插件介绍

    1. 测试覆盖率工具:EclEmma https://www.cnblogs.com/Ming8006/p/5811425.html 2. 单元测试系列:如何使用JUnit+JaCoCo+EclEmm ...

  7. Windows 7 完美安装 Visual C++ 6.0

    http://wenku.baidu.com/link?url=UiwoH2l4H_IWK6y8JkVNg4slp8gkM_9qudihP0XD4MdMCwm-j1-vINWEjQE1aBCeP121 ...

  8. 通过phoenix在hbase上创建二级索引,Secondary Indexing

    环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本: ...

  9. Linux Shell 通配符、元字符、转义符使用实例介绍

    https://www.cnblogs.com/chengmo/archive/2010/10/17/1853344.html

  10. go类型系统

    https://blog.csdn.net/hittata/article/details/50915496 https://blog.csdn.net/hittata/article/details ...