有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结。

1.线性分SVM面临的问题

有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的学习方法来求解,但是却因为混入了异常点,导致不能线性可分,比如下图,本来数据是可以按下面的实线来做超平面分离的,可以由于一个橙色和一个蓝色的异常点导致我们没法按照上一篇线性支持向量机中的方法来分类。

另外一种情况没有这么糟糕到不可分,但是会严重影响我们模型的泛化预测效果,比如下图,本来如果我们不考虑异常点,SVM的超平面应该是下图中的红色线所示,但是由于有一个蓝色的异常点,导致我们学习到的超平面是下图中的粗虚线所示,这样会严重影响我们的分类模型预测效果。

如何解决这些问题呢?SVM引入了软间隔最大化的方法来解决。

2. 线性分类SVM的软间隔最大化

所谓的软间隔,是相对于硬间隔说的,我们可以认为上一篇线性分类SVM的学习方法属于硬间隔最大化。

回顾下硬间隔最大化的条件:

接着我们再看如何可以软间隔最大化呢?

SVM对训练集里面的每个样本(xi,yi)引入了一个松弛变量ξi≥0,使函数间隔加上松弛变量大于等于1,也就是说:

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

这里,C>0为惩罚参数,可以理解为我们一般回归和分类问题正则化时候的参数。C越大,对误分类的惩罚越大,C越小,对误分类的惩罚越小。

也就是说,我们希望12||w||22尽量小,误分类的点尽可能的少。C是协调两者关系的正则化惩罚系数。在实际应用中,需要调参来选择。

这个目标函数的优化和上一篇的线性可分SVM的优化方式类似,我们下面就来看看怎么对线性分类SVM的软间隔最大化来进行学习优化。

3. 线性分类SVM的软间隔最大化目标函数的优化

和线性可分SVM的优化方式类似,我们首先将软间隔最大化的约束问题用拉格朗日函数转化为无约束问题如下:

其中 μi≥0,αi≥0,均为拉格朗日系数。

也就是说,我们现在要优化的目标函数是:

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

我们可以先求优化函数对于w,b,ξ的极小值, 接着再求拉格朗日乘子α和 μ的极大值。

首先我们来求优化函数对于w,b,ξ的极小值,这个可以通过求偏导数求得:

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

仔细观察可以发现,这个式子和我们上一篇线性可分SVM的一样。唯一不一样的是约束条件。现在我们看看我们的优化目标的数学形式:

对于C−αi−μi=0,αi≥0,μi≥0这3个式子,我们可以消去μi,只留下αi,也就是说0≤αi≤C。 同时将优化目标函数变号,求极小值,如下:

这就是软间隔最大化时的线性可分SVM的优化目标形式,和上一篇的硬间隔最大化的线性可分SVM相比,我们仅仅是多了一个约束条件0≤αi≤C。我们依然可以通过SMO算法来求上式极小化时对应的α向量就可以求出w和b了

4. 软间隔最大化时的支持向量

在硬间隔最大化时,支持向量比较简单,就是满足yi(wTxi+b)−1=0就可以了。根据KKT条件中的对偶互补条件α∗i(yi(wTxi+b)−1)=0,如果α∗i>0则有yi(wTxi+b)=1 即点在支持向量上,否则如果α∗i=0则有yi(wTxi+b)≥1,即样本在支持向量上或者已经被正确分类。

在软间隔最大化时,则稍微复杂一些,因为我们对每个样本(xi,yi)引入了松弛变量ξi。我们从下图来研究软间隔最大化时支持向量的情况,第i个点到对应类别支持向量的距离为ξi||w||2。根据软间隔最大化时KKT条件中的对偶互补条件α∗i(yi(wTxi+b)−1+ξ∗i)=0我们有:

a) 如果α=0,那么yi(wTxi+b)−1≥0,即样本在支持向量上或者已经被正确分类。如图中所有远离支持向量的点

b) 如果0<α<C,那么ξi=0,yi(wTxi+b)−1=0,即点在支持向量上。如图中在虚线支持向量上的点。

c) 如果α=C,说明这是一个可能比较异常的点,需要检查此时ξi

  i)如果0≤ξi≤1,那么点被正确分类,但是却在超平面和自己类别的支持向量之间。如图中的样本2和4.
       ii)如果ξi=1,那么点在分离超平面上,无法被正确分类。
       iii)如果ξi>1,那么点在超平面的另一侧,也就是说,这个点不能被正常分类。如图中的样本1和3.

5.软间隔最大化的线性可分SVM算法流程

这里我们对软间隔最大化时的线性可分SVM的算法过程做一个总结。

输入是线性可分的m个样本(x1,y1),(x2,y2),...,(xm,ym),,其中x为n维特征向量。y为二元输出,值为1,或者-1.

输出是分离超平面的参数w∗和b∗和分类决策函数。

算法过程如下:

6.合页损失函数

线性支持向量机还有另外一种解释如下:

几种常见损失函数:

线性可分SVM通过软间隔最大化,可以解决线性数据集带有异常点时的分类处理,但是现实生活中的确有很多数据不是线性可分的,这些线性不可分的数据也不是去掉异常点就能处理这么简单。那么SVM怎么能处理中这样的情况呢?我们在下一篇就来讨论线性不可分SVM和核函数的原理。

支持原创:支持向量机原理(二) 线性支持向量机的软间隔最大化模型

机器学习算法总结之支持向量机(二)相关推荐

  1. 机器学习算法总结之支持向量机(五)

    在前四篇里面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法.这些都关注与SVM的分类问题.实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结.重点关注SVM分类 ...

  2. 机器学习算法总结之支持向量机(三)

    在前面两篇我们讲到了线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,但是对完全线性不可分的数据没有办法.本文我们就来探讨SVM如何处理线性不可分的数据,重点讲述核函 ...

  3. 机器学习算法SVM(支持向量机)

    ①线性模型 现在来让我们做一个二分类任务假定在样本空间中可以找到一个超平面把不同类别的样本分开 //横轴是 x 1 x_1 x1​,纵轴是 x 2 x_2 x2​. x 1 x_1 x1​, x 2 ...

  4. 机器学习算法总结之支持向量机(一)

    1.回顾感知机模型 在感知机原理小结中,我们讲到了感知机的分类原理,感知机的模型就是尝试找到一条直线,能够把二元数据隔离开.放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够把所有 ...

  5. 机器学习算法实战项目—支持向量机(2)—完整版的SMO算法

    2.完整版的SMO算法 在几百个点组成的小规模数据集上,简化版SMO算法的运行是没有什么问题的,但是在更大的数据集上的运行速度就会变慢. 刚才已经讨论了简化版SMO算法,下面我们就讨论完整版的Plat ...

  6. 机器学习算法总结之支持向量机(四)

    在SVM的前三篇里,我们优化的目标函数最终都是一个关于α向量的函数.而怎么极小化这个函数,求出对应的α向量,进而求出分离超平面我们没有讲.本篇就对优化这个关于α向量的函数的SMO算法做一个总结. 1. ...

  7. 机器学习算法之SVM(二)概述

    前面的初识部分我们说了,在划分的时候要求margin最大化 如下图,红线用W*X=0表示,则红线左上方的区域可以用W*X>0表示,右下方的区域可以用W*X<0表示 同理,红线左侧的虚线用W ...

  8. [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  9. python决策树 value_机器学习 | 算法笔记(四)- 决策树算法以及代码实现

    概述 上一篇讲述了<机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现>,本篇讲述机器学习算法决策树,内容包括模型介绍及代码实现. 决策树 决策树(Decision Tree)在机 ...

最新文章

  1. Windows下FFmpeg高速入门
  2. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)...
  3. 如何解决实际错误:配置IIS使其支持SSL加密的HTTPS,并且要求浏览器客户端证书
  4. 中传计算机学院考研笔记,中传考研 新闻编辑重点笔记 整理版.doc
  5. empty()、isset()、is_null()的区别
  6. TextView属性的静态使用与动态使用
  7. python异步io协程读文件_Python协程中的并行异步IO
  8. linux下nginx和redis安装笔记
  9. 百胜中国供应链管理中心正式开工落户上海嘉定;百度发布第六代量产无人车 | 美通企业日报...
  10. VScode中快速生成vue模板
  11. android闹钟设置功能吗,Android编程闹钟设置方法详解
  12. c语言报告收获,c语言学习心得体会(最新整理)
  13. KP26--输入成本中心的标准作业量(活动类型价格)
  14. 不吹不黑!逛 GitHub 没看过这 10 个开源项目,绝对血亏...
  15. 如何优化一个网站的完整方案-SEO
  16. ubuntu 16.04 nivida显卡驱动更新步骤
  17. android获取系统使用的字体,android - 我如何获取已安装的Android系统字体列表并将其应用于自定义键盘 - 堆栈内存溢出...
  18. Warframe漫谈:Ballas
  19. 瀑布模型(waterfall model)一种线性的软件开发模型,文档驱动
  20. [Ahoi2008] Meet 紧急集合 (LCA+倍增+rmq-st)

热门文章

  1. 暑假周进度总结报告4
  2. gevent的同步与异步
  3. truncate,delete,drop的异同点
  4. 140303 命令行选项 ccf
  5. 数据库开发这点事 中文PDF下载
  6. IDEA破解(破解补丁)
  7. 前端单页面拆分多个单页面
  8. ELK日志系统之使用Rsyslog快速方便的收集Nginx日志
  9. jquery选择器通配符
  10. .htaccess跳转https