(一)SVM的八股简介

支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。
支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。

以上是经常被有关SVM 的学术文献引用的介绍,有点八股,我来逐一分解并解释一下。

Vapnik是统计机器学习的大牛,这想必都不用说,他出版的《Statistical Learning Theory》是一本完整阐述统计机器学习思想的名著。在该书中详细的论证了统计机器学习之所以区别于传统机器学习的本质,就在于统计机器学习能够精确的给出学习效果,能够解答需要的样本数等等一系列问题。与统计机器学习的精密思维相比,传统的机器学习基本上属于摸着石头过河,用传统的机器学习方法构造分类系统完全成了一种技巧,一个人做的结果可能很好,另一个人差不多的方法做出来却很差,缺乏指导和原则。

所谓VC维是对函数类的一种度量,可以简单的理解为问题的复杂程度,VC维越高,一个问题就越复杂。正是因为SVM关注的是VC维,后面我们可以看到,SVM解决问题的时候,和样本的维数是无关的(甚至样本是上万维的都可以,这使得SVM很适合用来解决文本分类的问题,当然,有这样的能力也因为引入了核函数)。

结构风险最小听上去文绉绉,其实说的也无非是下面这回事。

机器学习本质上就是一种对问题真实模型的逼近(我们选择一个我们认为比较好的近似模型,这个近似模型就叫做一个假设),但毫无疑问,真实模型一定是不知道的(如果知道了,我们干吗还要机器学习?直接用真实模型解决问题不就可以了?对吧,哈哈)既然真实模型不知道,那么我们选择的假设与问题真实解之间究竟有多大差距,我们就没法得知。比如说我们认为宇宙诞生于150亿年前的一场大爆炸,这个假设能够描述很多我们观察到的现象,但它与真实的宇宙模型之间还相差多少?谁也说不清,因为我们压根就不知道真实的宇宙模型到底是什么。

这个与问题真实解之间的误差,就叫做风险(更严格的说,误差的累积叫做风险)。我们选择了一个假设之后(更直观点说,我们得到了一个分类器以后),真实误差无从得知,但我们可以用某些可以掌握的量来逼近它。最直观的想法就是使用分类器在样本数据上的分类的结果与真实结果(因为样本是已经标注过的数据,是准确的数据)之间的差值来表示。这个差值叫做经验风险Remp(w)。以前的机器学习方法都把经验风险最小化作为努力的目标,但后来发现很多分类函数能够在样本集上轻易达到100%的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的情况便是选择了一个足够复杂的分类函数(它的VC维很高),能够精确的记住每一个样本,但对样本之外的数据一律分类错误。回头看看经验风险最小化原则我们就会发现,此原则适用的大前提是经验风险要确实能够逼近真实风险才行(行话叫一致),但实际上能逼近么?答案是不能,因为样本数相对于现实世界要分类的文本数来说简直九牛一毛,经验风险最小化原则只在这占很小比例的样本上做到没有误差,当然不能保证在更大比例的真实文本上也没有误差。

统计学习因此而引入了泛化误差界的概念,就是指真实风险应该由两部分内容刻画,一是经验风险,代表了分类器在给定样本上的误差;二是置信风险,代表了我们在多大程度上可以信任分类器在未知文本上分类的结果。很显然,第二部分是没有办法精确计算的,因此只能给出一个估计的区间,也使得整个误差只能计算上界,而无法计算准确的值(所以叫做泛化误差界,而不叫泛化误差)。

置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,我们的学习结果越有可能正确,此时置信风险越小;二是分类函数的VC维,显然VC维越大,推广能力越差,置信风险会变大。

泛化误差界的公式为:

R(w)≤Remp(w)+Ф(n/h)

公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。

SVM正是这样一种努力最小化结构风险的算法。

SVM其他的特点就比较容易理解了。

小样本,并不是说样本的绝对数量少(实际上,对任何算法来说,更多的样本几乎总是能带来更好的效果),而是说与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。

非线性,是指SVM擅长应付样本数据线性不可分的情况,主要通过松弛变量(也有人叫惩罚变量)和核函数技术来实现,这一部分是SVM的精髓,以后会详细讨论。多说一句,关于文本分类这个问题究竟是不是线性可分的,尚没有定论,因此不能简单的认为它是线性可分的而作简化处理,在水落石出之前,只好先当它是线性不可分的(反正线性可分也不过是线性不可分的一种特例而已,我们向来不怕方法过于通用)。

高维模式识别是指样本维数很高,例如文本的向量表示,如果没有经过另一系列文章(《文本分类入门》)中提到过的降维处理,出现几万维的情况很正常,其他算法基本就没有能力应付了,SVM却可以,主要是因为SVM 产生的分类器很简洁,用到的样本信息很少(仅仅用到那些称之为“支持向量”的样本,此为后话),使得即使样本维数很高,也不会给存储和计算带来大麻烦(相对照而言,kNN算法在分类时就要用到所有样本,样本数巨大,每个样本维数再一高,这日子就没法过了……)。

下一节开始正式讨论SVM。别嫌我说得太详细哦。

(一)SVM的八股简介相关推荐

  1. 【转】SVM入门(一)SVM的八股简介

    (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  2. ML之SVM:SVM算法的简介、应用、经典案例之详细攻略

    ML之SVM:SVM算法的简介.应用.经典案例之详细攻略 目录 SVM算法的简介 1.SVM模型分类-线性可分.线性.非线性 2.SVM的决策边界 3.SVM中的核函数 4.SVM算法推导 1.1.S ...

  3. 支持向量机(SVM)算法简介

    支持向量机(Support Vector Machine):SVM算法既可以处理分类问题,也可以处理回归问题.SVM算法要解决的问题就是找到最好的决策边界,以对问题进行分类和求解. 我们用这张图来理解 ...

  4. svm通俗易懂的理解

    (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  5. SVM入门(一)至(三)(转)

    按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于 ...

  6. 机器学习笔记:支持向量机(SVM)详细推导以及sklearn.svm.SVC的简单简介

    线性可分支持向量机: 举一个简单的例子: 我们需要将下面的圆圈和叉分开 这里存在无数多条线可以将圆圈和叉分开,因此,我们要规定一个性能指标,对于每一条线,都有对应的一个性能指标. 我们将每一条可以分开 ...

  7. opencv神经网络库之SVM和ANN_MLP的使用【 OpenCV 技能树评测】

    opencv神经网络库之SVM和ANN_MLP 简介 SVM MLP 数据读取 SVM训练和预测 训练 python版SVM预测 C++版SVM训练 C++版SVM预测 MLP训练和预测 MLP训练 ...

  8. matlab中的知识点SVM算法

    SVM算法的简介 SVM(Support Vector Machine)中文名为支持向量机,是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析. 相关 ...

  9. SVM-支持向量机算法(一)

    (一)SVM的背景简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够 ...

  10. 磐创AI - 专注机器学习技术分享

    微信公众号推荐 磐创AI 编辑 安可 今天给大家推荐一个微信公众号「磐创AI」,是一个从三大深度学习框架Tensorflow.Keras与PyTorch的角度剖析AI行业最新动态,机器学习干货文章,深 ...

最新文章

  1. arkit与现实世界距离比_如何使用ARKit和Pusher构建实时增强现实测量应用程序
  2. 艾伟:FCKeditor 配置、扩展
  3. 英文文献中的一些单词
  4. Lucene第一篇【介绍Lucene、快速入门】
  5. 方正ceb阅读器手机版_海信阅读手机A5Pro 经典版评测:体验和阅读完美平衡
  6. 阿里粗排技术体系与最新进展
  7. php里为什么要用ds,为什么选择DSBridge
  8. python_vlc 播放http流
  9. Search Insert Position - LeetCode
  10. HTML之一天学会html(常用标签+网页架构)
  11. 电子书下载:Pro ASP.NET MVC2 Framework 2nd
  12. python django文档_python Django中文文档下载
  13. 用Java实现圆锥的体积公式_圆锥的体积公式及其推导
  14. 移动智能终端安全防护 笔记
  15. 知识图谱导论----相关笔记
  16. excel使用教程_Excel筛选和高级筛选怎么使用?筛选最全教程
  17. python中sklearn.datasets.make_blobs()函数用法
  18. 在安装虚拟机时,”intel vt-x 处于禁用状态“ 如何解决
  19. 大数据开发和大数据分析应该怎么选择?
  20. java double 赋值语句_Java中float、double、long类型变量赋值添加f、d、L尾缀问题

热门文章

  1. springboot 项目maven 打包错误
  2. node csrf 防御 待续
  3. 【转】VC6.0+icc编译STLPort5.2
  4. 【转】计算机键盘功能键作用
  5. HDU6464 (权值线段树)-(查找区间第k1小于第k2小之间的和)
  6. KInect检测到第一个人进入,然后锁定
  7. 快速部署简单私有云CloudStack(下)
  8. iframe嵌套微信网页,图片无法显示问题
  9. 我愿意为你在城里的月光下温暖冷冷的爱情
  10. Linux系统--CentOS 7.6.1810 安装 nginx 1.16.0