今天我们来看一个机器学习中最基础、也是最重要的算法——支持向量机。为什么SVM叫SVM,到底向量是谁?SMO又是哪位话事人?支持不支持,咱们往下瞧。

1. 支持向量

1.1 线性可分

首先我们先来了解下什么是线性可分。

在二维空间上,两类点被一条直线完全分开叫做线性可分。

严格的数学定义是:

1.2 最大间隔超平面

从二维扩展到多维空间中时,将 d0 和 d1 完全正确地划分开的 y = wx + b 就成了一个超平面。

为了使这个超平面更具鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开的超平面,也称之为最大间隔超平面。

  • 两类样本分别分割在该超平面的两侧;
  • 两侧距离超平面最近的样本点到超平面的距离被最大化了。

1.3 支持向量

样本中距离超平面最近的一些点,这些点叫做支持向量。

1.4 SVM 最优化问题

SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:

如图所示,根据支持向量的定义我们知道,支持向量到超平面的距离为 d,其他点到超平面的距离大于 d。

至此我们就可以得到最大间隔超平面的上下两个超平面:

2. 对偶问题

2.1 拉格朗日乘数法

2.1.1 等式约束优化问题

本科高等数学学的拉格朗日程数法是等式约束优化问题:

2.1.2 不等式约束优化问题

而我们现在面对的是不等式优化问题,针对这种情况其主要思想是将不等式约束条件转变为等式约束条件,引入松弛变量,将松弛变量也是为优化变量。

2.2 强对偶性

对偶问题其实就是将:

3. SVM 优化

我们已知 SVM 优化的主问题是:

我们可以看出来这是一个二次规划问题,问题规模正比于训练样本数,我们常用 SMO(Sequential Minimal Optimization) 算法求解。

SMO(Sequential Minimal Optimization),序列最小优化算法,其核心思想非常简单:每次只优化一个参数,其他参数先固定住,仅求当前这个优化参数的极值。我们来看一下 SMO 算法在 SVM 中的应用。

我们刚说了 SMO 算法每次只优化一个参数,但我们的优化目标有约束条件:

没法一次只变动一个参数。所以我们选择了一次选择两个参数。具体步骤为:

4. 软间隔

4.1 解决问题

在实际应用中,完全线性可分的样本是很少的,如果遇到了不能够完全线性可分的样本,我们应该怎么办?比如下面这个:

于是我们就有了软间隔,相比于硬间隔的苛刻条件,我们允许个别样本点出现在间隔带里面,比如:

4.2 优化目标及求解

增加软间隔后我们的优化目标变成了:

5. 核函数

5.1 线性不可分

我们刚刚讨论的硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。

但我们可能会碰到的一种情况是样本点不是线性可分的,比如:

这种情况的解决方法就是:将二维线性不可分样本映射到高维空间中,让样本点在高维空间线性可分,比如:

5.2 核函数的作用

我们不禁有个疑问:只是做个内积运算,为什么要有核函数的呢?

这是因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了。

然后在进行内积计算,才能与多项式核函数达到相同的效果。

可见核函数的引入一方面减少了我们计算量,另一方面也减少了我们存储数据的内存使用量。

5.3 常见核函数

我们常用核函数有:

6. 优缺点

6.1 优点

  • 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
  • 能找出对任务至关重要的关键样本(即:支持向量);
  • 采用核技巧之后,可以处理非线性分类/回归任务;
  • 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

6.2 缺点

  • 训练时间长。当采用 SMO 算法时,由于每次都需要挑选一对参数,因此时间复杂度为 O(N^2) ,其中 N 为训练样本的数量;
  • 当采用核技巧时,如果需要存储核矩阵,则空间复杂度为 O(N^2) ;
  • 模型预测时,预测时间与支持向量的个数成正比。当支持向量的数量较大时,预测计算复杂度较高。

因此支持向量机目前只适合小批量样本的任务,无法适应百万甚至上亿样本的任务。

实战项目

为了加深对SVM的理解,下一篇我们利用python搭建SVM支持向量机,来预测蓝瘦香菇到底有没有毒,大家别忘了敲一敲代码哦。「15」支持向量机Python实战篇——蓝瘦香菇到底有没有毒?

参考文献

  1. 《机器学习》 周志华
  2. 最优化问题的KKT条件
  3. 一文理解拉格朗日对偶和KKT条件
  4. 支持向量机通俗导论(理解SVM的三层境界)

「14」支持向量机——我话说完,谁支持?谁反对?相关推荐

  1. 「15」支持向量机Python实战篇——蓝瘦香菇到底有没有毒?

    上一篇文章:「14」支持向量机--我话说完,谁支持?谁反对?,我们通过SVM的数学原理讲解了这个最常见的机器学习算法.这一篇我们用一个非常简单的python实战项目来练习一下SVM并加深理解. 复习 ...

  2. 数据追加用什么函数_RL用算法发现算法:DeepMind 数据驱动「价值函数」自我更新,14款Atari游戏完虐人类!...

    [新智元导读]击败卡斯帕罗夫的「深蓝」并不是真正的人工智能,它过度依赖了人类设计的规则,而最近DeepMind的一项深度强化学习新研究表明,不用人工介入,完全数据驱动,算法自己就能发现算法. 「深蓝」 ...

  3. 图像、视频生成大一统!MSRA+北大全华班「女娲」模型怒刷8项SOTA,完虐OpenAI DALL-E...

      视学算法报道   编辑:好困 小咸鱼 LRS [新智元导读]微软亚洲研究院.北京大学强强联合提出了一个可以同时覆盖语言.图像和视频的统一多模态预训练模型--NÜWA(女娲),直接包揽8项SOTA. ...

  4. 计算机科学与技术专业为什么要学物理,「物理」一定要好的14个大学专业

    原标题:「物理」一定要好的14个大学专业 在大学里,有不少专业的课程和大学物理紧密相连.可以说大学物理学得好不好,在很大程度上决定了一个人专业课能否学得相对轻松,成绩能否排到专业内中等及以上. 举几个 ...

  5. 云原生软件交付服务商「KodeRover」完成 100% 开源,同时宣布完成数千万元天使+轮融资

    36氪获悉,云原生软件数字化交付服务商「KodeRover」已于 7 月中旬完成其核心产品 Zadig 100% 开源,同时也宣布完成数千万元人民币天使+轮融资,本轮融资由经纬中国领投,⽼股东盈动资本 ...

  6. 教科书级「时间轴」画法,看完我服了!

    上次给大家分享PPT时间轴绘制技巧后,我们在后台众多"涨知识了"的夸夸声中,发现了一条(不太和谐)颇有见地的提问,"如果时间节点特别多,比如历史时间轴这种,该怎么画更方便 ...

  7. ECShop 商城小程序「weeshop 」- 基于 ECShop 3.6 版本开发的完整版商城小程序

    weeshop ECShop 微信小程序商城,基于3.6版本 appserver 接口,100% 兼容原有程序. 注意:本项目开发基本完善,如用于商业用途,请务必去往博客文章留言备注. 项目内容基于 ...

  8. 从 iOS 14 到 Android 12,桌面小组件是怎么「文艺复兴」的

    本文转载自 极客公园 时尚界一直以来有一个著名的理论:在某一时代流行的时尚元素,在经过一段时间的沉寂之后,会被人们再次拿出来利用. 这便是「弗莱定律」,它解释了为什么在长期的历史中,为什么很多曾经时尚 ...

  9. 全封闭主动侧倾「智能」电动车「坐骑科技」完成数千万元天使投资

    国内首创,主动侧倾「智能」三轮窄体电动车「坐骑科技」获得由海贝资本领投,AC资本.元航资本跟投的数千万元天使轮投资.并将在安徽铜陵落地产线,助力我国智能电动摩托车产业发展,本轮融资主要用于整车研发与量 ...

  10. 新年「开门红」| 送你 108 份开工牛气能量!

    人勤春来早 牛年向前 "犇"!  正月初七,迎来新年第一个工作日 祝大家开工大吉! 小楼为你送上 108 门免费项目课程,愿你新年第一天,元气加满,更上一层楼! 具体课程如下,如果 ...

最新文章

  1. 基于android的设备故障诊断终端
  2. 蓝牙L2CAP剖析(二)
  3. ubuntu 16.04 安装 python2.7 以及 cv2, dist-package 和 site-package 的区别, import cv2 出问题解答
  4. C#面向对象--命名空间
  5. P2550 [AHOI2001]彩票摇奖
  6. 经验:Library Cache Lock之异常分析-云和恩墨技术通讯精选
  7. linux c 守护线程,关于守护线程
  8. QT样式表(QStyleSheet)
  9. Android 2019最新面试实战总结
  10. 7 -- Spring的基本用法 -- 6... Spring 3.0 提供的Java配置管理
  11. 看完这一篇,运维误删后再也不用跑路了
  12. 计算机二级java难吗_计算机二级上机-计算机二级难吗?二级高级语言:分笔试和上机考试笔试90分钟, 爱问知识人...
  13. 利用git进行word文档的版本管理
  14. 车联网TBOX国六OBD排放终端远程在线监控系统
  15. 章文嵩坐镇淘宝双11流量作战室
  16. HC32L110(一) HC32L110 芯片介绍和Win10下DAP-Link, ST-Link, J-Link方式的烧录
  17. 融云发送图片消息_融云开发者文档
  18. 华硕顽石第四代FL5900u拆机换电池
  19. html css 布局_创建有吸引力HTML CSS动漫主题网站布局
  20. 学习笔记:Docker

热门文章

  1. 收藏:常用的广告代码的表达式
  2. CMake中include指令介绍
  3. SpringCloud 中使用 Ribbon(默认轮询规则 + 自定义规则)
  4. 【转】Oracle查询用户所有表
  5. asp.net 中http协议及相关知识(零碎知识记录)
  6. UAC在注册表中的对应位置
  7. 本地图片预览代码(支持 IE6、IE7)
  8. 万字长文带你从头构建文本分类器
  9. 一位寒门博士的致谢,女友回复...
  10. 【Linux】详解Linux中3个文件查找相关命令