学习笔记:SVM柔性边界的补充和SVR(支持向量回归)

作者 小刺猬yyx 关注

2016.08.06 10:31* 字数 1608 阅读 421评论 0喜欢 2

上一个笔记对于SVM不能完美分类的情况,之前并没有搞得很透彻。在学习SVR的时候,我又重新思考了一下关于SVM对于不能完美分类的情况,搞清楚SVM不可完美分类的情况之后,也就更容易理解SVR的美妙了。

SVM柔性边界

所谓柔性边界,就是会允许分类问题的不完美,能够包容一部分分类出现误差的情况,因为现实中往往会存在一些特例,或者我们不可能考虑到所有的影响因素,导致虽然满足了我们研究条件,但是依然输出不同于我们预测的情况。
SVM柔性边界的表达式:

柔性边界

与完美可分情况的SVM表达式:

完美可分

相比,我们发现如下以下区别[1]:

我们通过下图来说明柔性边界到底想要达到什么目的:

左边为完美可分,右边为柔性边界

可以看到,支持向量机真正确定的并不是一个超平面,而是沿着这个超平面的带状区间(在二维中,更高维就更抽象了,我也不知道长什么样,你们脑补吧)。而这个带状区间的宽度,在完美可分的情况下,就是两倍的几何距离,柔性边界呢就是把这个距离放大了,本来这个带状区域中没有训练样本,现在我允许可以有一些训练样本了,不等式中的1就是缩放后的带状区间的边界,现在训练样本满足的公式可以比这个边界小了,自然就是允许一部分训练样本点在带状区域里面了。

接下来我们通过来看拉格朗日乘子式来分析为什么这个方法是合理的,天才的,并来理解各个参数变量和KKT条件。

柔性边界的拉格朗日乘子式

我们对拉格朗日乘子式中各个变量求偏导:

至此关于SVM柔性边界的一些补充讨论就完成了,接下来说一下支持向量回归(SVR)

支持向量回归(SVR)

由支持向回归就是一种回归方法,就像最小二乘法,岭回归,梯度下降法一样,是一种方法,就像支持向量机也是一种方法,所以它们都不叫做模型,而是叫做支持向量机和支持向量回归。
支持向量回归是在我们做拟合时,采用了支持向量的思想,和拉格朗日乘子式的方式,来对数据进行回归分析的。相对于经济学领域常用的最小二乘法而言,它有诸多好处:

  • 最小二乘法只能用于线性回归,对于非线性模型则不再适用;而支持向量回归并没有这个限制
  • 最小二乘法对于具有多重共线性的变量之间的回归效果很差;而支持向量回归并不需要担心多重共线性问题
  • 支持向量回归对虽然不会在过程中直接排除异常点,但会是的由异常点引起的偏误更小。

所以,支持向量回归十分值得学习。下面上公式:

需要做回归的函数方程

问题转化:

表示出函数距离

其实上式就是表示出了回归函数和实际训练点之间的函数距离,对于式中定义的cost function,表述意义是允许模型由一定误差,误差范围内的点都认为是模型上的点,而只有那些在误差范围外,边界上的点才是确定模型的支持向量。由于存在SVM中类似柔性边界的考虑,于是引入松弛变量,得到支持向量回归如下:

转化成SVM求解问题

这里出现了两个不等式,因为我们没有分类结果{-1,1}来用乘积表示正负距离了,只能用绝对值,拆开绝对值符号之后,就会有两个不等式的约束条件。

以上便构成了支持向量回归的KKT条件,从条件中不难看出,我们选出的支持向量都是在认为符合回归情况范围之内的,和尽可能少的一部分超过边界的点,这样就排除了一部分的训练样本中的奇异点。
然后带入求解得到[2]:

求解

求得回归方程:

回归方程

回归方程中出现的K(xi,x)就是核(kernel)了,会有一些总结的比较好用的kernel,当然你的回归形式如果自己比较清楚,也可以换成你的回归方程。kernel可以使无限维特征向量的计算极大的简化,无论是线性还是非线性的问题满足一定条件就可以找到相应的kernel。不过这里并不会介绍kernel,因为kernel也是一个内容丰富的知识点,并且我也还没学习。
一直没写怎么求得最终结果,求解过程涉及到的都是启发式的算法,基本这些问题也是结合计算机使用的。这里提供一个r包的链接e1071,需要用到的可以去看看帮助。
支持向量机暂时写完了,我想其实这个过程中收获最大的是自己,逼着自己把各个条件推了一遍,写的过程中又发现本来以为理解其实并没理解的地方,又再思考了,以后会坚持写学习笔记的。


[1]:由于简书里不好编辑公式,所以这里我现在word上编辑好,再通过插入图片的方式以方便表达。 ↩

[2]:我在中间引用自己在word上编辑的内容时,可能公式中对应的符号有所变化,我相信这并不会给大家带来什么困扰:) ↩

svm和svr区别--摘自其它博客的更多相关文章

  1. laravel的启动过程---摘自网络博客个人学习之用

    如果没有使用过类似Yii之类的框架,直接去看laravel,会有点一脸迷糊的感觉,起码我是这样的.laravel的启动过程,也是laravel的核心,对这个过程有一个了解,有助于得心应手的使用框架,希 ...

  2. oracle 常用博客网址

    使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...

  3. Bootstrap 实战之响应式个人博客 (一)

    一.示例 1.主页 2.博客详情页 3.在线地址 在线地址:入口 Addition:这里使用github-page将自己的静态项目免费部署到线上. 如果你只是做一些简单的静态项目做展示,付出这么大的时 ...

  4. 想学习找不到好的博客?看这里>>

    想学习找不到好的博客?看这里>> (ps:内容 + 作者) 基础数论知识整理--gyh 进阶数论知识整理--又是gyh 关于SPFA--lyj(终于不是gyh) 证明二次探测定理-Line ...

  5. 博客营销(Blog Marketing)

    一.什么是博客营销 博客营销(Blog Marketing)的概念可以说并没有严格的定义,简单来说,就是利用博客这种网络应用形式开展网络营销.要说明什么是博客营销,首先要从什么是博客说起. 博客(Bl ...

  6. 【nodejs笔记4】搭建多人博客<内含http请求的get post方法区别>

    功能分析 博客具有四个功能:注册  登录  登出  发表文章 界面设计 未登录: [主页  注册页  登录页] [主页] 主页 左侧 HOME                             ...

  7. Qt控制台和带窗口的区别_mickelfeng_新浪博客

    Qt控制台和带窗口的区别_mickelfeng_新浪博客     t控制台和带窗口的区别    (2012-04-30 10:50:53)    标签:    杂谈        分类: C/C    ...

  8. 【转】挟天子以令诸侯博客关于TCP/IP模型与OSI模型的区别

    挟天子以令诸侯 博客园 首页 新随笔 联系 订阅 管理 随笔 - 21  文章 - 0  评论 - 9 TCP/IP四层模型与OSI参考模型   TCP/IP四层模型: 1.链路层(数据链路层/网络接 ...

  9. docker mysql 数据持久化到本地、设置不区别表名大小写-清风柳絮-51CTO博客

    原文:docker mysql 数据持久化到本地.设置不区别表名大小写-清风柳絮-51CTO博客 Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 ...

随机推荐

  1. svn和git的区别及适用场景

    svn和git的区别及适用场景 来源 https://blog.csdn.net/wz947324/article/details/80104621 svn的优势: 优异的跨平台支持,对windows ...

  2. 【刷题】BZOJ 4025 二分图

    Description 神犇有一个n个节点的图.因为神犇是神犇,所以在T时间内一些边会出现后消失.神犇要求出每一时间段内这个图是否是二分图.这么简单的问题神犇当然会做了,于是他想考考你. Input ...

  3. 【arc068E】Snuke Line

    Portal -->arc068E (温馨提示:那啥..因为各种奇怪的我也不知道的原因这题的题号在某度上面显示出来是agc007F...然而下面是arc068E的题解qwq给大家带来不便之处真是 ...

  4. 《剑指offer》— JavaScript(10)矩形覆盖

    矩形覆盖 题目描述 我们可以用(2*1)的小矩形横着或者竖着去覆盖更大的矩形.请问用n个(2*1)的小矩形无重叠地覆盖一个(2*n)的大矩形,总共有多少种方法? 实现代码 function jumpF ...

  5. 《剑指offer》— JavaScript(8)跳台阶

    跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 实现代码 function jumpFloor(number) { if (number& ...

  6. hiho 1044 : 状态压缩

    #1044 : 状态压缩·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车 ...

  7. elasticsearch配合mysql实现全文搜索

    之前用了sphinx,发现很多东西很久都没更新过了,之前只是知道有elasticsearch这个东西,还以为是java才能用,所以一直没有去了解过,也许sphinx慢慢会被淘汰了吧. 前置条件:需要安 ...

  8. windows环境下封装条件wait和signal

    linux 环境有提供好的pthread_cond_wait() 和 phread_signal().pthread_broadcast() windows需要自己封装,利用semophore控制线程 ...

  9. SQL Server清理Log文件

    ---SQL 2008 在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式. USE [master] go ALTER DATABASE PS SET RECOVERY ...

  10. Java运行原理研究(未完待续)

    java的介绍和定性 java的优缺点分析 jdk的组成结构 jvm的工作原理 java的跨平台原理 java的编译和运行过程