当我们对数据进行处理的时候,不论是分类还是回归,我们都必须考虑某些影响因素,比如噪声、缺省值、异常点等。我们要尽可能使我们的算法或模型对这些因素有很好的鲁棒性。
在上一节中,我们探讨了核函数使SVM对非线性情况也能处理。虽然通过映射φ(x)将原始数据映射到高维空间之后,能够线性分隔的概率大大增加,但是对于某些情况还是很难处理。
当我们数据有异常点的时候,对于这种偏离正常位置很远的数据点,我们也称之为outlier,在我们原来的SVM模型里,outlier 的存在有可能造成很大的影响,因为超平面本身就是只有少数几个 support vector 组成的,如果这些 support vector 里又存在 outlier 的话,其影响就很大了。例如下图:

从图上我们可以看出左上角有一个蓝点,明显的偏离下方的蓝色点群。如果我们不考虑这个点,就可以得到超平面,图中红色线所在位置。但是如果我们考虑这个点,得到的超平面,即图中两条虚线中间所在位置。很明显,不考虑异常蓝点所在,得到的超平面分类效果更好。

倘若异常蓝点分布在红点内部,那这组数据就变成了不可分。这种“一票否决”的模型肯定不是我们想要的。

之所以会出现这种问题,是因为我们原本的优化问题构建的表达式中,要考虑所有的样本点(不能忽略某一个,因为程序它不知道该忽略哪一个),在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距离,是非负的,像上面这种有噪声的情况会使得整个问题无解。这种解法其实也叫做“硬间隔”分类法,因为它硬性的要求所有样本点都满足和分类平面间的距离必须大于某个值。

如何解决这个问题呢,我们可以允许这些异常点到分类平面的距离与其他样本点到分类平面的距离不一样。我们原先对样本点的要求是

现在我们加入松弛变量,即给硬性阈值1添加一点容错性,公式变为

因为松弛变量是非负的,因此最终的结果是要求间隔可以比1小。但是当某些点出现这种间隔比1小的情况时(这些点也叫离群点),意味着我们放弃了对这些点的精确分类,而这对我们的分类器来说是种损失。但是放弃这些点也带来了好处,那就是使分类面不必向这些点的方向移动,因而可以得到更大的几何间隔(在低维空间看来,分类边界也更平滑)。显然我们必须权衡这种损失和好处。好处很明显,我们得到的分类间隔越大,好处就越多。回顾我们原始的硬间隔分类对应的优化问题:

||w||^2就是我们的目标函数(当然系数可有可无),我们希望它越小越好,因而损失就必然是一个能使之变大的量(能使它变小就不叫损失了,我们本来就希望目标函数值越小越好)。那如何来衡量损失,有两种常用的方式,


前者叫一阶软间隔分类器,后者叫二阶软间隔分类器,两种方法没有大的区别,用第二种方法的比较多。
把损失加入到目标函数里的时候,就需要一个惩罚因子(cost,也就是libSVM的诸多参数中的C),原来的优化问题就变成了下面这样:

惩罚因子C用来权衡分类损失和最大间隔之间关系,也即用于控制目标函数中两项(“寻找分类间隔最大的超平面”和“保证数据点偏差量最小”)之间的权重。

从上面这个式子我们可以看到
(1)并非所有的样本点都有一个松弛变量与其对应。实际上只有“离群点”才有,或者也可以这么看,所有没离群的点松弛变量都等于0。
(2)松弛变量的值实际上标示出了对应的点到底离群有多远,值越大,点就越远。
(3)惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。
4)惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,求解优化问题,得到一个分类器,然后用测试数据看看结果怎么样。但是如果效果不好该怎么办呢?我们可以改变C的值,重新得到一个分类器,再用测试数据看看效果如何。
用之前的方法将限制或约束条件加入到目标函数中,得到新的拉格朗日函数,如下所示:

分析方法如前,让L对w、b和松弛变量最小化,得
将w带回L化简,得到和原来一样的目标函数

不过,由于我们得到C-ai-ri=0,又有ri>=0(作为拉格朗日乘子的条件),所有有ai<=C,所以整个对偶问题写成:

相比于我们之前的对偶问题(极大求a):

可以发现,唯一区别就是a多了个上限C。现在我们再添加上核函数,就可以得到一个完整的、可以处理线性和非线性并能容忍outliers 的SVM模型(一个使用核函数的软间隔线性分类器)

下一节应该真的是写SMO算法了==

支持向量机之松弛变量与惩罚因子 (四)相关推荐

  1. SVM学习(续)核函数 松弛变量和惩罚因子

    SVM的文章可以看:http://www.cnblogs.com/charlesblc/p/6193867.html 有写的最好的文章来自:http://www.blogjava.net/zhenan ...

  2. LibSVM中的松弛变量和惩罚因子

    LibSVM中的松弛变量和惩罚因子 1.松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的.就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训 ...

  3. 支持向量机-松弛变量与惩罚因子

    1.松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的.就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了).现 ...

  4. svm松弛变量与惩罚因子

    1.松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的.就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了).现 ...

  5. SVM学习:松弛变量与惩罚因子

    1.松弛变量 现在我们已经把一个本来线性不可分的分类问题,通过映射到高维空间而变成了线性可分的.就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了).现在想 ...

  6. SVM学习(五):松弛变量与惩罚因子

    1.松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空间而变成了线性可分的.就像下图这样: 圆形和方形的点各有成千上万个(毕竟,这就是我们训练集中文档的数量嘛,当然很大了).现 ...

  7. 【机器学习】SVM学习(五):松弛变量与惩罚因子

    转载:http://blog.csdn.net/qll125596718/article/details/6910921 1.松弛变量 现在我们已经把一个本来线性不可分的文本分类问题,通过映射到高维空 ...

  8. 【机器学习-西瓜书】六、支持向量机:核技巧;软间隔;惩罚因子C;松弛变量

    推荐阅读: 核技巧:惩罚因子C 关键词:核技巧:软间隔:惩罚因子C:松弛变量 6.3核函数 关键词:核函数:核技巧 上一节讲到,SVM寻找的是使得间隔最大的那一个超平面作为分类器,这还是一个线性分类器 ...

  9. 最大概率法分词中词频惩罚因子的作用探究

    在最大概率法分词的程序中,由于每个词出现的次数分布非常不均匀,而且我们要计算每个词出现的概率,对于出现次数比较少的词概率就很小,求句子中词的概率之积的时候,需要将好多非常小的数作乘法,可能会将超出计算 ...

最新文章

  1. win7 安装apache2.2服务错误
  2. [Leetcode] Bus Routes 公交线路
  3. java 内置web服务器_Webstorm 2016内置web服务器配置
  4. 苹果首席芯片设计师离职 曾领导自A7以来所有芯片设计
  5. android动画制作方法,在Android中制作动画的推荐方法
  6. mysql中的day(0_MySQL代码执行0-day漏洞 可本地提权
  7. JS之——设置cookie 删除cookie
  8. 2. laravel 创建第一条路由
  9. 能源在线监测管理系统
  10. 首次使用计算机鼠标键盘不能用,电脑鼠标键盘都不能用如何解决 开机后鼠标键盘不能用怎么办...
  11. 想去掉抖音短视频里的水印,有没有一键去水印的方法?
  12. torch.max使用示例
  13. View UI中textarea字数统计不变问题
  14. PowerDesigner16.5破解版安装
  15. python 标准库 书籍_《Python标准库》Python语言的权威之作
  16. 1.3RK3288积累之命令1
  17. 系统首选dns服务器修改,如何在Windows系统中设置首选DNS
  18. MATLAB文件中文乱码问题
  19. 人工智能:法国浪漫之都的人工智能时代
  20. 互联网地图的“拼”图

热门文章

  1. 【路径规划】基于matlab遗传优化模拟退火算法避障路径规划【含Matlab源码 889期】
  2. 自费访问学者申请需要哪些材料?
  3. 「GoCN酷Go推荐」后现代时代远程办公网络问题的golang开源解决方案 —— PairMesh...
  4. 小米max3支持html吗,小米Max3怎么样 到底值不值得买
  5. 【VBA】 CreateObject(“wscript.network“)
  6. uniapp 微信小程序内打开腾讯导航路线规划
  7. ArcgisDestop提示修复许可问题解决
  8. 传入收据提报年月,某个时间段内哪些时间没有提报收据,传入list存入的格式(2017.01-2019.05)
  9. JAVA深度剖析之JVM的体系结构
  10. vector使用方法