来源:机器学习算法与自然语言处理

本文图文结合,建议阅读7分钟

本文为你详细描述SVM产生的过程。


前言


众所周知 SVM 是非常强大的一种分类算法,有着媲美神经网络的分类效果,实现过程却简单得多。受限于我的能力,这篇文章不会系统地介绍 SVM(因为我并不是线性代数、凸优化等方面的专家),而是以一个学习者的角度描述 SVM 产生的过程,由于内容较长,计划分成三到四篇

一个好的分类是怎么样的


图中的两组数据,显然它们是线性可分(linear separable)的,图里给出的三条分界线都可以准确区分这两类数据,它们是不是一样好?如果不是,哪一条看起来更加合适?

直觉告诉我们是 a。相比之下,b 和 c 离个别点太近了,我们很难拍着胸脯说“这个点在分界线下面,所以绝对是 X",因为分界线稍微挪一挪就可以改变这些点的属性,我们想要的是一个相对自信的分界线,使靠近分界线的点与分界线的距离足够大,上图中的分界线 a 就符合我们的需求。

ps. 这里所说的分界线严格来说是 decision boundary,decision boundary 在二维空间是一条线,在三维空间是一个平面,更高维的空间里称作超平面,为了方便本文都用分界线来代表 decision boundary。

进入向量的世界

你或许已经注意到 SVM 的全称是 Support Vector Machine(支持向量机),在推导 SVM 公式过程中,我们几乎都是在和向量打交道。刚接触 SVM 的时候我对这个名字非常诧异,SVM 很强是没错,但是名字也太「随意」了吧?希望写完这篇文章以后我能理解为什么这种算法叫做支持向量机。

如果你之前没有接触过向量,建议花一个小时左右的时间熟悉一下向量的概念和基本性质。我们先把空间上的点用向量来表示(以原点为起点的向量):

虽然写成了向量的形式,其实并没有什么大不了的,我们可以把它和初中时候学过的直线表达式联系起来:

对于 SVM 来说仅仅这样是不够的,还记得吗我们要修一条路出来,我们得确保在一条足够宽的路里面没有数据点:

这样前面的式子就可以写成更为简洁的形式:

什么是支持向量

这是一个基于 KKT 条件的二次规划问题,优化原理的内容超出了这篇文章的范畴,在这里我们只要知道拉格朗日乘数法可以求得这个最优解,引入新的系数αi :

令以上两式为0,我们可以得到:

一文解析支持向量机(附公式)相关推荐

  1. 历经一个月,终于搞定了SVM(支持向量机)-附源代码解析

    历经一个月,终于搞定了SVM(支持向量机)-附源代码解析 前言 其实整体算下来,断断续续的也得有快两个月了(原谅博主比较笨).中间也有好几次放弃,不想写这篇总结了,但是之前立下的誓言,要将学习到的每一 ...

  2. 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

    华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...

  3. 华为19级工程师三年心血终成趣谈网络协议文档(附清华大牛视频讲解和课件)

    前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ,非常复杂.学的时候就浑浑噩噩,真正到了实践中更是糊里糊涂,一旦工作中遇到了网络问题,除了会简单地 ping 几下 ,基 ...

  4. 如何用软件测试交易系统的胜率,无未来测试胜率99.78%的交易系统附公式 飞狐交易系统胜率指标 源码...

    无未来测试胜率99.78%的交易系统附公式 飞狐交易系统胜率指标 源码详细说明 第一股票公式网(www.chnmoney.com)告诉您:当前正要下载:无未来测试胜率99.78%的交易系统附公式 飞狐 ...

  5. 开课吧:一文解析Nexus是什么

    Nexus是Sonatype公司发布的一款仓库(Repository)管理软件,常用来搭建Maven私服,所以也有人将Nexus称为"Maven仓库管理器". 一文解析Nexus是 ...

  6. word文档中插入公式的技巧--利用表格

    word文档中插入公式的技巧--利用表格 本人愚笨之前在word中加公式的时候,由于需要公式的编号右对齐,且公式居中.我就会在插入了公式之后打上一堆的空格,这样既费事儿,又弄的公式参差不齐,不是十分的 ...

  7. js解析数学运算公式

    js解析数学运算公式 已上传到npm,NPM包地址:https://www.npmjs.com/package/exec-mathexpress 示例demo //运行democonst execMa ...

  8. 给Word文档中的公式自动编号的方法

    最近在做毕业设计,然后需要翻译一篇英文文献,我在翻译英文文献的时候,需要对公式进行编号,而且需要使编号显示在最右侧,而公式居中,像下图这样: 如果一个个手动添加空格,不仅慢而且还会使公式左移,因此研究 ...

  9. 【神经网络】(12) MobileNetV2 代码复现,网络解析,附Tensorflow完整代码

    各位同学好,今天和大家分享一下如何使用 Tensorflow 复现谷歌轻量化神经网络 MobileNetV2. 在上一篇中我介绍了MobileNetV1,探讨了深度可分离卷积,感兴趣的可以看一下:ht ...

最新文章

  1. 100.X86的寻址方式
  2. C++编程思想:模板
  3. hadoop2.0以后不需要借助cywin运行在Windows上
  4. LeetCode 1520. 最多的不重叠子字符串(贪心)
  5. poj Balanced Lineup RMQ
  6. Java中文件路径的写法
  7. Tensor flow 实战Google深度学习框架 笔记摘要Pfour
  8. JAVA系统性能优化
  9. matlab 卷积神经网络 图像去噪 对抗样本修复
  10. 处理word 多级标题编号不联动的问题
  11. IDA Pro使用技巧及大杂烩
  12. C#中利用网口与安捷伦电源进行通信
  13. linux mint更改锁屏壁纸
  14. R485集线器定协议有多少种能否抗干扰?
  15. iOS 图片引起的崩溃
  16. 手机号码/身份证号码中间几位的隐藏
  17. Mapped Statements collection already contains value for
  18. 《十》浏览器基础及渲染引擎解析一个网页的过程、JavaScript 引擎解析 JavaScript 代码的过程
  19. K8S DiskPressure造成pod被驱逐——筑梦之路
  20. 数据库入门教程(SQL Server 2005)----数据库是如何存储数据的

热门文章

  1. OkHttpClient源码分析(一)—— 同步、异步请求分析和Dispatcher的任务调度
  2. 关于API文档浏览神器Dash
  3. 从共享租车成绿色消费首选,看共享经济未来
  4. 知识O2O:数字与文明的交汇点?
  5. CSS样式学习-CSS 背景
  6. 使用mysql_fetch_row()以数组的形式返回查询结果
  7. 用大顶堆实现最大优先队列
  8. String,StringBuffer,StringBuilder三者的异同
  9. tokenizer.encode() 与 tokenizer.tokenize()对比,言简意赅 转 高人讲学
  10. 图解VMWARE内存机制