前言

在深度学习流行之前,SVM是传统机器学习领域的一个经典算法。趁着最近回顾总结机器学习知识的劲头,准备写下这篇关于SVM的文章。大多数关于介绍SVM的文章都会花很大的篇幅进行大量的数学公式的推导以及证明,但是在这篇文章中我会更加偏重于我个人关于SVM原理以及思想的总结和感悟(好吧我承认只是懒得打公式…)

好的,话不多说,我们进入正题。

SVM的基本思想

考虑一个二分类问题,在假设线性可分的情况,我们可以使用感知机(Perceptron)得到一个完美分割训练集的分类边界。但是一个问题就是,我们得到的分类边界可能是不唯一的,试想我们可以将我们的线性分类边界稍微转动一个很小的角度,得到的新的分类边界依然可以解决我们训练集的分类任务。那么我们接下来就会会很自然的去思考:面对多个可选的分类边界(对应着多个分类器), 哪一个是最优的呢,或者说有最强的泛化性能?一个很自然的想法就是让分类边界分别到两类别数据中离自己最近的点的距离尽可能大。因为当一个数据点离我们的分类边界的距离越远时,我们可以理解为这个点被正确分类的可信度(置信程度)越高,而一个点离分类边界越近时,这个点被分类正确的可信度就越低,因为分类边界的得到仅仅依靠有限的样本(训练集), 因此即使我们选择的模型结构和真实的数据产生机制完全吻合,也可能因为样本数量过少或者样本偏差(不足以代表整体)而导致训练得到的模型参数与真实存在不同,也就会导致得到的分类边界很有可能会对靠近的一些数据点进行错误的分类。在这种情况下得到的分类结果自然可信度会低一些。关于上面我所说的分类置信度的问题,一个最直观的例子就是逻辑回归。在逻辑回归中,分类边界就是Xbeta=0,严谨的说是一个超平面,那么在它的上方,离它越远(Xbeta>>0), 得到的输出越接近于1,被分类为正类别的概率越高,同理在它下方的点,离它越远(X*beta<<0),得到的输出越接近于0,被分类为负类别的概率越高。总结来说,当数据点离分类超平面的距离越远,分类准确的置信度就越高。

好,有点扯远了,我们回到SVM。对于SVM而言,我们要找到一个分类边界到两类数据都尽可能远,也就是同时保证对于两个类别分类准确的置信程度,那么选择自然就是居于中间的那条线了。我们把它记为 betaX+b=0,然后假设到两边最近点的距离为L,因此穿过上方点和分类边界平行的表达式为 betaX+b=||beta||L, 同理穿过下方点和分类边界平行的表达式为betaX+b=-||beta||L。 那么我们的目标就是要最大化 2L, 也就是所谓的margin。为了表达上的方便,我们将这两条线的表达式左右两边分别除以||beta||L, 然后得到margin的上边界为
wX+c=1,下边界为wX+c=-1, 分类边界就是wX+c=0。

对于正样本我们有wX+c>=1,而对于负样本我们有wX+c<=-1, 为了方便起见,这里的正负标签用y=1或-1来表示,这样,对于所有样本如果我们均分类正确,就有对于任意的yi,yi(wXi+c)>=1。我们再回过头看一下我们的优化目标,因为w=beta/(||beta||L), 因此||w||=1/L, 最大化2L等价于最大化2/||w||, 又等价于最小化0.5||w||^2

总结,所以我们的目标就是在对于任意的yi均有yi(wXi+c)>=1的情况下,min{ 0.5||w||^2}。

线性不可分1

上面我讲到的都是基于线性可分的情况下,来寻找最优的超平面来进行分类。但是在真实的情况下,几乎不存在完全线性可分的例子,也就是说不存在这样一个分类边界满足上面的条件。因此从实际角度来看,上面的讨论几乎没有意义。那么我们需要做什么呢?自然就是放松条件。对于非线性可分的情况,SVM采用的是引入一个slack variable

解读支持向量机SVM相关推荐

  1. 【直观详解】支持向量机SVM

    [阅读时间] 13min - 19min [内容简介] 详解解读什么是支持向量机,如何解支持向量以及涉及的拉普拉斯乘子法,还有核方法的解读. 1 什么是支持向量机-SVM 支持向量机-SVM(Supp ...

  2. Python,OpenCV基于支持向量机SVM的手写数字OCR

    Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...

  3. Udacity机器人软件工程师课程笔记(二十二) - 物体识别 - 色彩直方图,支持向量机SVM

    物体识别 1.HSV色彩空间 如果要进行颜色检测,HSV颜色空间是当前最常用的. HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一 ...

  4. 支持向量机(SVM)简介

    支持向量机(support vector machine, SVM):是监督学习中最有影响力的方法之一.类似于逻辑回归,这个模型也是基于线性函数wTx+b的.不同于逻辑回归的是,支持向量机不输出概率, ...

  5. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  6. R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现

    R语言e1071包中的支持向量机:构建nu-classification类型的支持向量机SVM并分析不同nu值惩罚下模型分类螺旋线型(sprials)线性不可分数据集的表现 目录

  7. R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集)、简单线性核的支持向量机SVM(模型在测试集上的表现、可视化模型预测的结果、添加超平面区域与原始数据标签进行对比分析)、如何改进核函数

    R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集).简单线性核的支持向量机SVM(模型在测试集上的表现.可视化模型预测的结果.添加超平面区域与原始数据标签进行对比分析).如何改进核函数 ...

  8. 支持向量机SVM模型中C和gamma参数分别是什么?对模型有什么影响?

    支持向量机SVM模型中C和gamma参数分别是什么?对模型有什么影响? SVM模型有两个非常重要的参数C与gamma. C的本质是正则化系数. C值是惩罚系数或者叫惩罚因子,表征的是模型对于误差的容忍 ...

  9. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...

最新文章

  1. 如何学好机器学习数据挖掘?这本《数据分析数学基础》图文并茂带你学习入门...
  2. java web日期_java-web——第十一课 时间类
  3. java 中映射关系_java – 在Hibernate中映射一对多的关系?
  4. python大学什么专业学校_好学校的差专业和一般大学的好专业,该怎么选?我来说真话……...
  5. NVelocity系列:NVelocity配置详解
  6. flex布局 - justify-content: space-evenly
  7. 软件共享文件服务器,服务器共享文件软件
  8. 《Android软件安全与逆向分析》— Android 书籍
  9. 兄弟连视频教程下载地址汇总-2014
  10. php起点小说小偷程序,PHP小偷程序的简单示例
  11. mysql建立唯一索引升序_MySQL数据库SQL优化技巧六之唯一索引
  12. 现代密码学之对称加密-DES及AES算法
  13. MT【306】圆与椭圆公切线段
  14. android 功能页面设计,50个优秀用户体验的手机界面设计(APP UI DESIGN)
  15. Open source licenses
  16. 系统日志及数据库日志
  17. 游戏原画之女性角色绘画技巧-张聪-专题视频课程
  18. 多校官宣:第二轮“双一流”,新增这些学科!
  19. 药品计算机系统培训试题,药品经营质量管理规范培训测试题
  20. macOS pyinstaller打包python程序, subprocess无法运行

热门文章

  1. d3js mysql_使用d3js画K线图 - ObjectNotFoundException - OSCHINA - 中文开源技术交流社区
  2. 乔布斯去世衍生多种周边产品(支持乔布斯请顶)
  3. 【逻辑思维】马粪争夺案
  4. 开发跨端微信小程序框架选型指南
  5. termux文件导入导出
  6. vue项目ide(vue项目环境搭建)
  7. XView小程序开源组件库
  8. SDL入门教程(一):2、Visual C++ 下的安装与设置
  9. Twisted基本模型
  10. selenium和Python3.6实现招聘狗网站自动识别验证码登录、列表页、详情页爬取