SVM分类(一)SVM的八股简介

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

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

Vapnik是统计机器学习的大牛,这想必都不用说,他出版的《Statistical Learning Theory》是一本完整阐述统计机器学习思想的名著。在该书中详细的论证了统计机器学习之因此区别于传统机器学习的本质,就在于统计机器学习可以精确的给出学习效果,可以解答须要的样本数等等一系列问题。与统计机器学习的精密思惟相比,传统的机器学习基本上属于摸着石头过河,用传统的机器学习方法构造分类系统彻底成了一种技巧,一我的作的结果可能很好,另外一我的差很少的方法作出来却不好,缺少指导和原则。
    所谓VC维是对函数类的一种度量,能够简单的理解为问题的复杂程度,VC维越高,一个问题就越复杂。正是由于SVM关注的是VC维,后面咱们能够看到,SVM解决问题的时候,和样本的维数是无关的(甚至样本是上万维的均可以,这使得SVM很适合用来解决文本分类的问题,固然,有这样的能力也由于引入了核函数)。
机器学习


    结构风险最小听上去文绉绉,其实说的也无非是下面这回事:
    机器学习本质上就是一种对问题真实模型的逼近(咱们选择一个咱们认为比较好的近似模型,这个近似模型就叫作一个假设),但毫无疑问,真实模型必定是不知道的(若是知道了,咱们干嘛还要机器学习?直接用真实模型解决问题不就能够了?对吧,哈哈)既然真实模型不知道,那么咱们选择的假设与问题真实解之间究竟有多大差距,咱们就无法得知。好比说咱们认为宇宙诞生于150亿年前的一场大爆炸,这个假设可以描述不少咱们观察到的现象,但它与真实的宇宙模型之间还相差多少?谁也说不清,由于咱们压根就不知道真实的宇宙模型究竟是什么。
    这个与问题真实解之间的偏差,就叫作风险(更严格的说,偏差的累积叫作风险)。咱们选择了一个假设以后(更直观点说,咱们获得了一个分类器之后), 真实偏差无从得知,但咱们能够用某些能够掌握的量来逼近它。最直观的想法就是使用分类器在样本数据上的分类的结果与真实结果(由于样本是已经标注过的数据,是准确的数据)之间的差值来表示。这个差值叫作经验风险Remp(w)。之前的机器学习方法都把经验风险最小化做为努力的目标,但后来发现不少分类函数可以在样本集上轻易达到100%的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的状况即是选择了一个足够复杂的分类函数(它的VC维很高),可以精确的记住每个样本,但对样本以外的数据一概分类错误。回头看看经验风险最小化原则咱们就会发现,此原则适用的大前提是经验风险要确实可以逼近真实风险才行(行话叫一致),但实际上能逼近么?答案是不能,由于样本数相对于现实世界要分类的文本数来讲简直九牛一毛,经验风险最小化原则只在这占很小比例的样本上作到没有偏差,固然不能保证在更大比例的真实文本上也没有偏差。
ide


    统计学习所以而引入了泛化偏差界的概念,就是指真实风险应该由两部份内容刻画,一是经验风险,表明了分类器在给定样本上的偏差;二是置信风险,表明了咱们在多大程度上能够信任分类器在未知文本上分类的结果。很显然,第二部分是没有办法精确计算的,所以只能给出一个估计的区间,也使得整个偏差只能计算上界,而没法计算准确的值(因此叫作泛化偏差界,而不叫泛化偏差)。
    置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,咱们的学习结果越有可能正确,此时置信风险越小;二是分类函数的VC维,显然VC维越大,推广能力越差,置信风险会变大。
    泛化偏差界的公式为:R(w)≤Remp(w)+Ф(n/h)
    公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。
SVM正是这样一种努力最小化结构风险的算法。
    
函数

SVM其余的特色就比较容易理解了。
    小样本,并非说样本的绝对数量少(实际上,对任何算法来讲,更多的样本几乎老是能带来更好的效果),而是说与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。
    非线性,是指SVM擅长应付样本数据线性不可分的状况,主要经过松弛变量(也有人叫惩罚变量)和核函数技术来实现,这一部分是SVM的精髓,之后会详细讨论。多说一句,关于文本分类这个问题到底是不是线性可分的,尚没有定论,所以不能简单的认为它是线性可分的而做简化处理,在水落石出以前,只好先当它是线性不可分的(反正线性可分也不过是线性不可分的一种特例而已,咱们向来不怕方法过于通用)。
    高维模式识别是指样本维数很高,例如文本的向量表示,若是没有通过另外一系列文章(《文本分类入门》)中提到过的降维处理,出现几万维的状况很正常, 其余算法基本就没有能力应付了,SVM却能够,主要是由于SVM 产生的分类器很简洁,用到的样本信息不多(仅仅用到那些称之为“支持向量”的样本,此为后话),使得即便样本维数很高,也不会给存储和计算带来***烦(相对照而言,kNN算法在分类时就要用到全部样本,样本数巨大,每一个样本维数再一高,这日子就无法过了……)。
学习

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


转自:http://blog.sina.com.cn/s/blog_5f853eb10100qbb9.htmlorm

相关文章
相关标签/搜索