学习SVM(一) SVM模型训练与分类的OpenCV实现
学习SVM(二) 如何理解支持向量机的最大分类间隔
学习SVM(三)理解SVM中的对偶问题
学习SVM(四) 理解SVM中的支持向量(Support Vector)
学习SVM(五)理解线性SVM的松弛因子

先说一个事引出这个博客的内容,我最近投的一篇论文被拒稿,用到的方法使SVM(很惭愧,还在用20年前的算法,当然这并不是重点),审稿意见里面有一段话是这样说的(说的很中肯):“该方法本身的特点来看就很难达到100%正确率”,当然这并不是说SVM无法做到100%,我理解的很难达到的原因就是在于SVM算法本身的松弛因子的引入。

为什么要引入松弛因子

从前面四个内容来看,SVM理论可以完美的找到正负样本间的最大的分类间隔,这意味着不仅仅可以实现对训练数据的分类,还保证了决策平面是最理想的。那么SVM为什么还要引入松弛因子呢?我们可以看下面这个例子:


实线的决策平面分开了所有的正负样本,但是造成的结果是最大分类间隔非常小,而虚线虽然没有完全区分开所有的正负样本,但是保证了分类间隔更大,这个例子可以说明,不一定实线完全分类的决策平面就是最好的。
同时,还有一种情况,如果左上角的圆再向右侧移动的话,那么样本的数据本身就是线性不可分的。
综合上面的两点考虑,SVM引入了松弛因子

新的目标函数

在原有的约束条件上加入一个松弛因子,要求,那么约束条件变为:

很显然,由于松弛因子是一个正数,那么新的约束条件一定没有原来的条件“严格”,也就是松弛了。
同时,目标函数同样发生变化:

这个目标函数的变化是通过间隔松弛向量的范数定义的泛化误差界推导的出来,但是这不是SVM的重点,重点在于改变的目标函数对决策平面的影响。
除了一阶软间隔分类器,SVM的目标函数还有二阶软间隔分类器的形式:

而无论是上述哪种情况,实际上都是为目标函数引入一个损失,而上面的参数C被称之为惩罚因子
惩罚因子的大小决定了对离群点的容忍程度(松弛的程度),比如,如果C是一个非常大的值,那么很小的松弛因子都会让目标函数的值边的很大,然后目标是在求一个最小值,这就意味着哪怕是个很小的松弛都不愿意容忍。还有一种极端的情况是如果C选定成一个无穷大的值,那么软分类间隔问题(soft margin)会退化称为一个硬分类间隔问题(hard margin)。

可以拿一个很直观的例子说明惩罚因子C的影响,C越大意味着对训练数据而言能得到很好的分类结果,但是同时最大分类间隔就会变小,毕竟我们做模型不是为了在训练数据上有个多么优异的结果。相反的,如果C比较小,那么间隔就会变大,模型也就有了相对而言更好的泛化能力。

最后新的目标函数(采用一阶范式):

这里的约束条件是2n个。

软分类间隔问题的求解

在前面我们就已经知道,有了目标函数之后,后面的工作就是引入拉格朗日乘子,对偶问题转化后求导,解出拉格朗日乘子后反带回去求wb,这个讨论对于引得目标函数来说是一样的,而且推导的过程在前面四部分中解释的已经非常清楚,对于新的问题,只是加了两个参数:

1.目标函数本身多出来的一个松弛因子。

2.拉格朗日乘子法为新的约束条件引入的参数。

需要注意的是,参数C是一个已知量,是人为设定的!

拉格朗日函数:

其中,au是拉格朗日乘子,对偶后就变成了:

解决min问题,求偏导:

将三式带入到L中求得:

带入到上面的对偶问题中:


再次转化问题:

此时的约束条件为:

这个约束条件中的后三个是可以转化的,因为u是一个大于等于0的数(拉格朗日性质决定的),同时由于C-a=u,即C-a>=0。同时由于a>=0,后三个条件最后就变成:

那么最后整理得到的对偶问题就是:

这个结果和学习SVM(三)理解SVM中的对偶问题最后的结果很像,只是多出了些约束。

学习SVM(五)理解线性SVM的松弛因子相关推荐

  1. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  2. Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 支持向量机是由间隔最大化和高维映射两大部件组成.间隔最大化是目标 ...

  3. Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM

    原 Python3<机器学习实战>学习笔记(八):支持向量机原理篇之手撕线性SVM 置顶 2017年09月23日 17:50:18 阅读数:12644 转载请注明作者和出处: https: ...

  4. 行人检测HOG+SVM:综述、INRIADATA数据集、线性SVM

    目录 1. 行人检测算法研究综述 2. 基于机器学习的方法:人工特征+分类器 2.1 HOG+SVM 2.2 HOG+Adaboost 2.3 ICF+AdaBoost 2.4 DPM+ latent ...

  5. sklearn.svm中LinearSVR(svm线性回归)、LinearSVC(svm线性分类)与SVC(svm分类)、SVR(svm回归)之间的区别

    区别: LinearSVC: SVM线性分类器:用来实现线性的分类任务 """鸢尾花数据集,执行一个分类问题"""import numpy ...

  6. 学习July博文总结——支持向量机(SVM)的深入理解(上)

    前言 本文是参照CSDN的July大神的热门博文<支持向量机通俗导论(理解SVM的三层境界>)写的.目的是因为July大神文中说,SVM理论的理解,需要一遍一遍的推导公式,直到脑中梳理下来 ...

  7. 深度学习与计算机视觉(二)线性SVM与Softmax分类器

    2.线性SVM与Softmax分类器 2.1 得分函数(score function) 2.1.1 线性分类器 2.1.2 理解线性分类器 2.2 损失函数 2.2.1 多类别支持向量机损失(Mult ...

  8. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器--在深度学习的视觉分类中的,这两个分类器的原理和比较

    作者: 寒小阳  时间:2015年11月.  出处:http://blog.csdn.net/han_xiaoyang/article/details/49999299  声明:版权所有,转载请注明出 ...

  9. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器

    作者: 寒小阳 &&龙心尘 时间:2015年11月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/49999299 声明: ...

  10. 【机器学习实验五】基于多分类线性SVM实现简易人机猜拳游戏

    文章目录 基于多分类线性SVM&mediapipe手势关键点实现简易人机猜拳游戏 基于SMO优化的SVM分类算法完整实现版本 SVM决策结果与数据集可视化 多分类SVM实战:基于mediapi ...

最新文章

  1. IntPtr to bytes
  2. Python--set集合讲解; 什么是集合?创建一个集合;集合的操作函数;
  3. tf.Variable和 tf.get_variable区别(1)
  4. ajax post提交数据_JavaEE学习——为什么get请求方式比post请求方式效率高
  5. 【报告分享】85后、95后宝妈人群洞察报告.pdf(附下载链接)
  6. 滑轮控件研究四、VelocityTracker的简单研究
  7. Q102:光线追踪场景(1)——地球仪
  8. 几何画板椭圆九种画法_如何利用几何画板自定义工具画椭圆
  9. 关于STC8H8K64U单片机IAP升级过程
  10. Python源码保护
  11. java计算机毕业设计西安市城市绿地管理系统源码+系统+数据库+lw文档
  12. Python 技术篇-用PIL库修改图片尺寸实例演示,python调整图像大小方法
  13. python实现网页表单填写_python在网页中自动填充表单
  14. Prince和学生们侃侃而谈系列01
  15. 搭建一个独立英文网站费用多少?
  16. npm WARN unmet dependency错误解决方法
  17. js实现点击按钮,弹出新窗口
  18. 新项目筹划中。。。。
  19. python等于号怎么输入_python 中不等于怎么表示
  20. Linux文件权限查看与修改

热门文章

  1. 《Spring Cloud、Nginx高并发核心编程》读书笔记【END】
  2. 10 种 Python 聚类算法完整操作示例(附代码说明)
  3. Windows笔记本-U盘无法完成格式化
  4. PostgreSQL 配置文件 postgresql.conf 及 postgresql.auto.conf
  5. 世界药林:首款PRCP抑制剂奥拉帕利已经批准4种适应症
  6. python判断按键是否按下_Pygame检测是否按下了一个键?
  7. 02 - 典型相关性分析(Canonical Correlation Analysis)
  8. wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
  9. 希尔伯特曲线 java_希尔伯特曲线(示例代码)
  10. 嵌入式软件开发能力提高的几个途径