SVM原理 (转载)
1. 线性分类SVM面临的问题
有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,比如下图,本来数据是可以按下面的实线来做超平面分离的,可以由于一个橙色和一个蓝色的异常点导致我们没法直接线性分类。
另外一种情况没有这么糟糕到不可分,但是会严重影响我们模型的泛化预测效果,比如下图,本来如果我们不考虑异常点,SVM的超平面应该是下图中的红色线所示,但是由于有一个蓝色的异常点,导致我们学习到的超平面是下图中的粗虚线所示,这样会严重影响我们的分类模型预测效果。
如何解决这些问题呢?SVM引入了软间隔最大化的方法来解决。
2. 线性分类SVM的软间隔最大化
所谓的软间隔,是相对于硬间隔说的,我们可以认为上一篇线性分类SVM的学习方法属于硬间隔最大化。
回顾下硬间隔最大化的条件:

接着我们再看如何可以软间隔最大化呢?
SVM对训练集里面的每个样本(xi,yi)(xi,yi)引入了一个松弛变量ξi≥0ξi≥0,使函数间隔加上松弛变量大于等于1,也就是说:

对比硬间隔最大化,可以看到我们对样本到超平面的函数距离的要求放松了,之前是一定要大于等于1,现在只需要加上一个大于等于0的松弛变量能大于等于1就可以了。当然,松弛变量不能白加,这是有成本的,每一个松弛变量ξiξi, 对应了一个代价ξiξi,这个就得到了我们的软间隔最大化的SVM学习条件如下:

这里,C>0C>0为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。CC越大,对误分类的惩罚越大,CC越小,对误分类的惩罚越小。
也就是说,我们希望12||w||2212||w||22尽量小,误分类的点尽可能的少。C是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。
这个目标函数的优化和上一篇的线性可分SVM的优化方式类似,我们下面就来看看怎么对线性分类SVM的软间隔最大化来进行学习优化。
3. 线性分类SVM的软间隔最大化目标函数的优化
和线性可分SVM的优化方式类似,我们首先将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:

其中 μi≥0,αi≥0μi≥0,αi≥0,均为拉格朗日系数。
也就是说,我们现在要优化的目标函数是:

这个优化目标也满足KKT条件,也就是说,我们可以通过拉格朗日对偶将我们的优化问题转化为等价的对偶问题来求解如下:

我们可以先求优化函数对于w,b,ξw,b,ξ的极小值, 接着再求拉格朗日乘子αα和 μμ的极大值。
首先我们来求优化函数对于w,b,ξw,b,ξ的极小值,这个可以通过求偏导数求得:

好了,我们可以利用上面的三个式子去消除ww和bb了。

4. 软间隔最大化时的支持向量
在硬间隔最大化时,支持向量比较简单,就是满足yi(wTxi+b)−1=0yi(wTxi+b)−1=0就可以了。根据KKT条件中的对偶互补条件α∗i(yi(wTxi+b)−1)=0αi∗(yi(wTxi+b)−1)=0,如果α∗i>0αi∗>0则有yi(wTxi+b)=1yi(wTxi+b)=1 即点在支持向量上,否则如果α∗i=0αi∗=0则有yi(wTxi+b)≥1yi(wTxi+b)≥1,即样本在支持向量上或者已经被正确分类。
5. 软间隔最大化的线性可分SVM的算法过程
SVM原理 (转载)的更多相关文章
- 机器学习之支持向量机—SVM原理代码实现
支持向量机—SVM原理代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9596898.html 1. 解决 ...
- Support Vector Machine (1) : 简单SVM原理
目录 Support Vector Machine (1) : 简单SVM原理 Support Vector Machine (2) : Sequential Minimal Optimization ...
- SVM原理以及Tensorflow 实现SVM分类(附代码)
1.1. SVM介绍 1.2. 工作原理 1.2.1. 几何间隔和函数间隔 1.2.2. 最大化间隔 - 1.2.2.0.0.1. \(L( {x}^*)\)对$ {x}^*$求导为0 - 1.2.2 ...
- SVM原理与实践
SVM迅速发展和完善,在解决小样本.非线性及高维模式识别问题中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中.从此迅速的发展起来,已经在许多领域(生物信息学,文本和手写识别等)都取 ...
- ahjesus 前端缓存原理 转载
LAMP缓存图 从图中我们可以看到网站缓存主要分为五部分 服务器缓存:主要是基于web反向代理的静态服务器nginx和squid,还有apache2的mod_proxy和mod_cache模 浏览器缓 ...
- HTML5 Geolocation API工作原理[转载]
大家都知道,HTML5 Geolocation 可以使用 IP 地址.基于 Web 的数据库.无线网络连接和三角测量或 GPS 技术来确定经度和纬度. 问题: 在一个基于地理位置服务的个人业余项目(小 ...
- 超小Web手势库AlloyFinger原理(转载)
目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看: https://github.com/AlloyTeam/AlloyF ...
- 深入浅出HTTPS工作原理(转载)
转载自: https://blog.csdn.net/wangtaomtk/article/details/80917081 深入浅出HTTPS工作原理 HTTP协议由于是明文传送,所以存在三大风险: ...
- (一)SVM原理
前言 本文开始主要介绍一下SVM的分类原理以及SVM的数学导出和SVM在Python上的实现.借鉴了许多文章,会在后面一一指出,如果有什么不对的希望能指正. 一. SVM简介 首先看到SVM是在斯坦福 ...
随机推荐
- 深入剖析Kubernetes学习笔记:容器基础(05-06)
05 :从进程说起 1.容器本身没有价值,有价值的是"容器编排" 2.什么是进程? 一旦"程序"被执行起来,它就从磁盘上的二进制文件,变成 1.计算机内存中的数 ...
- 值得一学的webpack4
初识webpack webpack是帮助我们管理复杂项目的工具. 学习webpack会极大扩充前端开发视野. webpack可以实现: Tree shaking 懒加载 代码分割 webpack4速度 ...
- Java(18) 集合框架
一.集合框架 Collectoin Map List set HashMap ArrayList LinkedList ...
- Python编程四大神兽:迭代器、生成器、闭包和装饰器
生成器 生成器是生成一个值的特殊函数,它具有这样一个特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序 ...
- 通过命令修改mysql的提示符(转)
本文转自冲出地球的博客原文链接:https://www.cnblogs.com/zhengchenhui/p/6649235.html 在cmd窗口操作mysql数据库的时候,前面的提示符永远都是my ...
- java 中final关键字
1.final变量,一旦该变量被设定,就不可以再改变该变量的值. final关键字定义的变量必须声明时赋值.一旦一个对象引用被修饰为final后,它只能恒定指向一个对象,一个既是static和fina ...
- Win10蓝屏的一些解决办法
请仔细回想这个错误是什么时候出现的: 第一次发生时你对系统做了哪些操作: 发生时正在进行什么操作: 从这些信息中找出可能的原因: 从而选择相应解决方案并尝试排除. 0x0000000A:IRQL_NO ...
- Python规范
1.命名 Django文件命名 小写+下划线 类:驼峰 2.edit 执行环境 work direction 到当前项目目录 3.类要加注释 4.去数据库找数据时需要try捕获异常,防止数据库连接断掉 ...
- 「luogu4462」[CQOI2018] 异或序列
「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连 ...
- 正则表达式匹配日期,支持闰年,格式为YYYYMMDD
年份:[\d]{4} 带31的月份:(0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])) 非2月不带31日的月份:((0[469])|11)((0[1-9])| ...