一文解析支持向量机(附公式)
来源:机器学习算法与自然语言处理
本文图文结合,建议阅读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,我们可以得到:
一文解析支持向量机(附公式)相关推荐
- 历经一个月,终于搞定了SVM(支持向量机)-附源代码解析
历经一个月,终于搞定了SVM(支持向量机)-附源代码解析 前言 其实整体算下来,断断续续的也得有快两个月了(原谅博主比较笨).中间也有好几次放弃,不想写这篇总结了,但是之前立下的誓言,要将学习到的每一 ...
- 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)
华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...
- 华为19级工程师三年心血终成趣谈网络协议文档(附清华大牛视频讲解和课件)
前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ,非常复杂.学的时候就浑浑噩噩,真正到了实践中更是糊里糊涂,一旦工作中遇到了网络问题,除了会简单地 ping 几下 ,基 ...
- 如何用软件测试交易系统的胜率,无未来测试胜率99.78%的交易系统附公式 飞狐交易系统胜率指标 源码...
无未来测试胜率99.78%的交易系统附公式 飞狐交易系统胜率指标 源码详细说明 第一股票公式网(www.chnmoney.com)告诉您:当前正要下载:无未来测试胜率99.78%的交易系统附公式 飞狐 ...
- 开课吧:一文解析Nexus是什么
Nexus是Sonatype公司发布的一款仓库(Repository)管理软件,常用来搭建Maven私服,所以也有人将Nexus称为"Maven仓库管理器". 一文解析Nexus是 ...
- word文档中插入公式的技巧--利用表格
word文档中插入公式的技巧--利用表格 本人愚笨之前在word中加公式的时候,由于需要公式的编号右对齐,且公式居中.我就会在插入了公式之后打上一堆的空格,这样既费事儿,又弄的公式参差不齐,不是十分的 ...
- js解析数学运算公式
js解析数学运算公式 已上传到npm,NPM包地址:https://www.npmjs.com/package/exec-mathexpress 示例demo //运行democonst execMa ...
- 给Word文档中的公式自动编号的方法
最近在做毕业设计,然后需要翻译一篇英文文献,我在翻译英文文献的时候,需要对公式进行编号,而且需要使编号显示在最右侧,而公式居中,像下图这样: 如果一个个手动添加空格,不仅慢而且还会使公式左移,因此研究 ...
- 【神经网络】(12) MobileNetV2 代码复现,网络解析,附Tensorflow完整代码
各位同学好,今天和大家分享一下如何使用 Tensorflow 复现谷歌轻量化神经网络 MobileNetV2. 在上一篇中我介绍了MobileNetV1,探讨了深度可分离卷积,感兴趣的可以看一下:ht ...
最新文章
- 100.X86的寻址方式
- C++编程思想:模板
- hadoop2.0以后不需要借助cywin运行在Windows上
- LeetCode 1520. 最多的不重叠子字符串(贪心)
- poj Balanced Lineup RMQ
- Java中文件路径的写法
- Tensor flow 实战Google深度学习框架 笔记摘要Pfour
- JAVA系统性能优化
- matlab 卷积神经网络 图像去噪 对抗样本修复
- 处理word 多级标题编号不联动的问题
- IDA Pro使用技巧及大杂烩
- C#中利用网口与安捷伦电源进行通信
- linux mint更改锁屏壁纸
- R485集线器定协议有多少种能否抗干扰?
- iOS 图片引起的崩溃
- 手机号码/身份证号码中间几位的隐藏
- Mapped Statements collection already contains value for
- 《十》浏览器基础及渲染引擎解析一个网页的过程、JavaScript 引擎解析 JavaScript 代码的过程
- K8S DiskPressure造成pod被驱逐——筑梦之路
- 数据库入门教程(SQL Server 2005)----数据库是如何存储数据的
热门文章
- OkHttpClient源码分析(一)—— 同步、异步请求分析和Dispatcher的任务调度
- 关于API文档浏览神器Dash
- 从共享租车成绿色消费首选,看共享经济未来
- 知识O2O:数字与文明的交汇点?
- CSS样式学习-CSS 背景
- 使用mysql_fetch_row()以数组的形式返回查询结果
- 用大顶堆实现最大优先队列
- String,StringBuffer,StringBuilder三者的异同
- tokenizer.encode() 与 tokenizer.tokenize()对比,言简意赅 转 高人讲学
- 图解VMWARE内存机制