9 规则化和不可分情况处理(Regularization and the non-separable case)

我们之前讨论的情况都是建立在样例线性可分的假设上,当样例线性不可分时,我们可以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后我们也不能100%保证可分。那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能够尽可能地找出分隔超平面。

看下面两张图:

可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模型对噪声非常敏感。再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了。

这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于1)。我们设计得到新的模型如下(也称软间隔):

引入非负参数后(称为松弛变量),就允许某些样本点的函数间隔小于1,即在最大间隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的就表示离群点越多,目标函数值越大,而我们要求的是尽可能小的目标函数值。这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。

模型修改后,拉格朗日公式也要修改如下:

这里的都是拉格朗日乘子,回想我们在拉格朗日对偶中提到的求法,先写出拉格朗日公式(如上),然后将其看作是变量w和b的函数,分别对其求偏导,得到w和b的表达式。然后代入公式中,求带入后公式的极大值。整个推导过程类似以前的模型,这里只写出最后结果如下:

此时,我们发现没有了参数,与之前模型唯一不同在于又多了的限制条件。需要提醒的是,b的求值公式也发生了改变,改变结果在SMO算法里面介绍。先看看KKT条件的变化:

第一个式子表明在两条间隔线外的样本点前面的系数为0,离群样本点前面的系数为C,而支持向量(也就是在超平面两边的最大间隔线上)的样本点前面系数在(0,C)上。通过KKT条件可知,某些在最大间隔线上的样本点也不是支持向量,相反也可能是离群点。

10 坐标上升法(Coordinate ascent)

在最后讨论的求解之前,我们先看看坐标上升法的基本原理。假设要求解下面的优化问题:

这里W是向量的函数。之前我们在回归中提到过两种求最优解的方法,一种是梯度下降法,另外一种是牛顿法。现在我们再讲一种方法称为坐标上升法(求解最小值问题时,称作坐标下降法,原理一样)。

方法过程:

最里面语句的意思是固定除之外的所有,这时W可看作只是关于的函数,那么直接对求导优化即可。这里我们进行最大化求导的顺序i是从1到m,可以通过更改优化顺序来使W能够更快地增加并收敛。如果W在内循环中能够很快地达到最优,那么坐标上升法会是一个很高效的求极值方法。

下面通过一张图来展示:

椭圆代表了二次函数的各个等高线,变量数为2,起始坐标是(2,-2)。图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。

出处:http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988415.html

支持向量机SVM(四)相关推荐

  1. Python,OpenCV基于支持向量机SVM的手写数字OCR

    Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...

  2. 统计学习方法|支持向量机(SVM)原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  3. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

  4. 机器学习——支持向量机SVM之线性模型

    目录 一.没有免费的午餐定理 二.支持向量机SVM(support vector machine) 1.线性模型和非线性模型 2.如何在线性模型中画出一条直线(优化过程--vplink) 1)多少条? ...

  5. python支持向量机回归_Python中支持向量机SVM的使用方法详解

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  6. 机器学习中的算法-支持向量机(SVM)基础

    机器学习中的算法-支持向量机(SVM)基础 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处 ...

  7. 支持向量机SVM算法原理及应用(R)

    支持向量机SVM算法原理及应用(R) 2016年08月17日 16:37:25 阅读数:22292更多 个人分类: 数据挖掘实战应用 版权声明:本文为博主原创文章,转载请注明来源. https://b ...

  8. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  9. MATLAB实现支持向量机SVM分类简介

    1. 支持向量机SVM 支持向量机(SVM, support vector machine)是名噪一时的机器学习方法,自20世纪末以来在模式识别领域风生水起,至今仍然活跃在各大论文期刊中.无论是和其他 ...

  10. sklearn中的支持向量机SVM(下)

    1 二分类SVC的进阶 1.1 SVC用于二分类的原理复习 sklearn中的支持向量机SVM(上) 1.2 参数C的理解进阶 有一些数据,可能是线性可分的,但在线性可分状况下训练准确率不能达到100 ...

最新文章

  1. 【Linux】9.ssh登录与scp文件拷贝
  2. 【Java13】cookiesession(登陆案例(2)),jsp(登录案例(3))
  3. jQUery中closest和parents的主要区别是
  4. python之数据库连接
  5. c# out原理 ref_移植贪吃蛇——从C#到C++
  6. eclipse报错 : One or more constraints have not been satisfied.
  7. Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
  8. 按性别分类进行描述统计(SPSS操作)
  9. win7系统修复工具_win7系统如何修复
  10. Halide学习笔记----Halide tutorial源码阅读3
  11. 计算机三级网络技术知识点大全(一)
  12. 基于DOA联合TDOA时间积累下二维平面GDOP
  13. 第二届中国Rust开发者大会(RustChinaConf 2021~2022)线上大会正式开启报名
  14. Spring学习总结(一)- Spring的核心特性之依赖注入(DI)总结
  15. 抖音账号矩阵系统源码/矩阵霸屏系统搭建部署/源码
  16. P1522 牛的旅行 Cow Tours(floyd)
  17. 小结字符集及字符编码问题
  18. linux下DNS配置及域名解析服务
  19. 拉取小米MIUI系统的framework.jar实践之旅
  20. ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿

热门文章

  1. 无法安装计算机的启动配置,“windows 无法更新计算机的启动配置。安装无法继续”这样解决...
  2. linux驱动读取文件失败怎么办,linux – 由于单个驱动器读取错误导致软件RAID-1导致内核故障...
  3. Spring Cloud Alibaba - 19 Nacos Config配置中心加载不同微服务的通用配置的两种方式
  4. Spring-方法注入lookup、方法替换MethodReplacer接口
  5. oracle 11g autotrace,ORACLE 使用AUTOTRACE功能
  6. node.js 没有转发_如何用Nodejs编写一个定时消息提醒应用?
  7. 交易系统单服务器tps,交易者必看!一文了解TPS量化交易系统
  8. python装饰器_python装饰器完全指南之一
  9. vue设置一个简单的计算器
  10. pip和conda批量导出、安装第三方依赖库(requirements.txt)