SVM通俗讲解.docx
- 文档编号:5646146
- 上传时间:2022-12-30
- 格式:DOCX
- 页数:14
- 大小:61.44KB
SVM通俗讲解.docx
《SVM通俗讲解.docx》由会员分享,可在线阅读,更多相关《SVM通俗讲解.docx(14页珍藏版)》请在冰豆网上搜索。
SVM通俗讲解
SVM(SupportVectorMachine)
支持向量机相关理论介绍
基于数据的机器学习是现代智能技术中的重要方面,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测。
迄今为止,关于机器学习还没有一种被共同接受的理论框架,关于其实现方法大致可以分为三种[3]:
第一种是经典的(参数)统计估计方法。
包括模式识别、神经网络等在内,现有机器学习方法共同的重要理论基础之一是统计学。
参数方法正是基于传统统计学的,在这种方法中,参数的相关形式是已知的,训练样本用来估计参数的值。
这种方法有很大的局限性。
首先,它需要已知样本分布形式,这需要花费很大代价,还有,传统统计学研究的是样本数目趋于无穷大时的渐近理论,现有学习方法也多是基于此假设。
但在实际问题中,样本数往往是有限的,因此一些理论上很优秀的学习方法实际中表现却可能不尽人意。
第二种方法是经验非线性方法,如人工神经网络(ANN)。
这种方法利用已知样本建立非线性模型,克服了传统参数估计方法的困难。
但是,这种方法缺乏一种统一的数学理论。
与传统统计学相比,统计学习理论(StatisticalLearningTheory或SLT)是一种专门研究小样本情况下机器学习规律的理论。
该理论针对小样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。
V.Vapnik等人从六、七十年代开始致力于此方面研究,到九十年代中期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。
统计学习理论的一个核心概念就是VC维(VCDimension)概念,它是描述函数集或学习机器的复杂性或者说是学习能力(Capacityofthemachine)的一个重要指标,在此概念基础上发展出了一系列关于统计学习的一致性(Consistency)、收敛速度、推广性能(GeneralizationPerformance)等的重要结论。
统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。
它能将很多现有方法纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构选择问题、局部极小点问题等);
同时,这一理论基础上发展了一种新的通用学习方法──支持向量机(SupportVectorMachine或SVM),已初步表现出很多优于已有方法的性能。
一些学者认为,SLT和SVM正在成为继神经网络研究之后新的研究热点,并将推动机器学习理论和技术有重大的发展。
支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(GeneralizatinAbility)。
支持向量机方法的几个主要优点有:
1.它是专门针对有限样本情况的,其目标是得到现有信息下的最优解而不仅仅是样本数趋于无穷大时的最优值;
2.算法最终将转化成为一个二次型寻优问题,从理论上说,得到的将是全局最优点,解决了在神经网络方法中无法避免的局部极值问题;
3.算法将实际问题通过非线性变换转换到高维的特征空间(FeatureSpace),在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,特殊性质能保证机器有较好的推广能力,同时它巧妙地解决了维数问题,其算法复杂度与样本维数无关;
在SVM方法中,只要定义不同的内积函数,就可以实现多项式逼近、贝叶斯分类器、径向基函数(RadialBasicFunction或RBF)方法、多层感知器网络等许多现有学习算法。
统计学习理论从七十年代末诞生,到九十年代之前都处在初级研究和理论准备阶段,近几年才逐渐得到重视,其本身也趋向完善,并产生了支持向量机这一将这种理论付诸实现的有效的机器学习方法。
目前,SVM算法在模式识别、回归估计、概率密度函数估计等方面都有应用。
例如,在模式识别方面,对于手写数字识别、语音识别、人脸图像识别、文章分类等问题,SVM算法在精度上已经超过传统的学习算法或与之不相上下。
目前,国际上对这一理论的讨论和进一步研究逐渐广泛,而我国国内尚未在此领域开展研究,因此我们需要及时学习掌握有关理论,开展有效的研究工作,使我们在这一有着重要意义的领域中能够尽快赶上国际先进水平。
由于SLT理论和SVM方法尚处在发展阶段,很多方面尚不完善,比如:
许多理论目前还只有理论上的意义,尚不能在实际算法中实现;而有关SVM算法某些理论解释也并非完美(J.C.Burges在[2]中就曾提到结构风险最小原理并不能严格证明SVM为什么有好的推广能力);此外,对于一个实际的学习机器的VC维的分析尚没有通用的方法;SVM方法中如何根据具体问题选择适当的内积函数也没有理论依据。
因此,在这方面我们可做的事情是很多的。
相关资源
SVM的英文主站,
http:
//www.kernel-machines.org/
SupportVectorMachine作者的站点
http:
//www.support-
piaip的(lib)SVM簡易入門
http:
//ntu.csie.org/~piaip/svm/svm_tutorial.html
林智仁(cjlin)老師的libsvmformatlab
LIBSVM—ALibraryforSupportVectorMachines
Chih-ChungChangandChih-JenLin
1.SVM的优势
(1)可以解决小样本情况下的机器学习问题
(2)可以提高泛化性能
(3)可以解决高维问题
(4)可以解决非线性问题
(5)可以避免神经网络结构选择和局部极小点问题
2.SVM的研究热点
(1)模式识别
(2)回归估计
(3)概率密度估计
3.SVM的主要核函数
(1)多项式核函数
(2)径向基核函数
(3)Sigmoid核函数
4.SVM的应用
(1)文本分类
(2)人脸识别
(3)三维物体识别
(4)遥感图像分析
(5)函数逼近
(6)时间序列预测
(7)数据压缩
(8)优化SVM算法
(9)SVM改进方法
(10)SVM硬件实现
5.SVM的难点
(1)如何在非监督模式识别问题中应用统计学习理论(SLT)
(2)如何用理论或实验的方法计算VC维
(3)经验风险和实际风险之间的关系称之为推广性的界,但是当(h/n)>0.37时(h—VC维,n—样本数),推广性的界是松弛的,如何寻找一个更好地反映学习机器能力的参数和得到更紧的界
(4)实现结构风险最小化(SRM)时,如何选择函数子集结构
vc维的本质和结构风险最小化
VC维在有限的训练样本情况下,当样本数n固定时,此时学习机器的VC维越高学习机器的复杂性越高。
VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大)。
所谓的结构风险最小化就是在保证分类精度(经验风险)的同时,降低学习机器的VC维,可以使学习机器在整个样本集上的期望风险得到控制。
推广的界(经验风险和实际风险之间的关系,注意引入这个原因是什么?
因为训练误差再小也就是在这个训练集合上,实际的推广能力不行就会引起过拟合问题还。
所以说要引入置信范围也就是经验误差和实际期望误差之间的关系):
期望误差
。
注意
是经验误差也就是训练误差(线性中使得所有的都训练正确),
是置信范围,它是和样本数和VC维有关的。
上式中置信范围
随
增加,单调下降。
即当
较小时,置信范围
较大,用经验风险近似实际风险就存在较大的误差,因此,用采用经验风险最小化准则,取得的最优解可能具有较差的推广性;如果样本数较多,
较大,则置信范围就会很小,采用经验风险最小化准则,求得的最优解就接近实际的最优解。
可知:
影响期望风险上界的因子有两个方面:
首先是训练集的规模
,其次是VC维
。
可见,在保证分类精度(经验风险)的同时,降低学习机器的VC维,可以使学习机器在整个样本集上的期望风险得到控制,这就是结构风险最小化(StructureRiskMinimization,简称SRM)的由来。
在有限的训练样本情况下,当样本数
固定时,此时学习机器的VC维越高(学习机器的复杂性越高),则置信范围就越大,此时,真实风险与经验风险之间的差别就越大,这就是为什么会出现过学习现象的原因。
机器学习过程不但要使经验风险最小,还要使其VC维尽量小,以缩小置信范围,才能取得较小的实际风险,即对未来样本有较好的推广性,它与学习机器的VC维及训练样本数有关。
线性可分的问题就是满足最优分类面的面要求分类面不但能将两类样本正确分开(训练错误率为0),而且要使两类的分类间隔最大(这个是怎么回事呢?
原来是有根据的,这个让俺郁闷了好久呢。
在
间隔下,超平面集合的VC维
满足下面关系:
其中,
是单调增函数,即
与
的平方成反比关系。
因此,当训练样本给定时,分类间隔越大,则对应的分类超平面集合的VC维就越小。
)。
根据结构风险最小化原则,前者是保证经验风险(经验风险和期望风险依赖于学习机器函数族的选择)最小,而后者使分类间隔最大,导致VC维最小,实际上就是使推广性的界中的置信范围最小,从而达到使真实风险最小。
注意:
置信范围大说明真实风险和经验风险的差别较大。
解释到这里了,终于有点眉目了,原来就是这么回事啊,真是的。
总结一下就是训练样本在线性可分的情况下,全部样本能被正确地分类(这个不就是传说中的
的条件吗),即经验风险
为0的前提下,通过对分类间隔最大化(这个就是
嘛),使分类器获得最好的推广性能。
那么解释完线性可分了,我们知道其实很多时候是线性不可分的啊,那么有什么区别没有啊?
废话区别当然会有啦,嘿嘿那么什么是本质的区别啊?
本质的区别就是不知道是否线性可分但是允许有错分的样本存在(这个咋回事还是没明白hoho)但是正是由于允许存在错分样本,此时的软间隔分类超平面表示在剔除那些错分样本后最大分类间隔的超平面。
这里就出现了新词松驰因子,干吗用滴?
就是用来控制错分样本的啊。
这样的话经验风险就要跟松驰因子联系在一起了。
而
就是松驰因子前面的系数,
是一个自定义的惩罚因子,它控制对错分样本惩罚的程度,用来控制样本偏差与机器推广能力之间的折衷。
越小,惩罚越小,那么训练误差就越大,使得结构风险也变大,而
越大呢,惩罚就越大,对错分样本的约束程度就越大,但是这样会使得第二项置信范围的权重变大那么分类间隔的权重就相对变小了,系统的泛化能力就变差了。
所以选择合适的
还是很有必要的。
选择核函数。
核函数有很多种,如线性核、多项式核、Sigmoid核和RBF(RadialBasisfunction)核。
本文选定RBF核为SVM的核函数(RBF核
,
)。
因为RBF核可以将样本映射到一个更高维的空间,可以处理当类标签(ClassLabels)和特征之间的关系是非线性时的样例。
Keerthi等[25]证明了一个有惩罚参数
的线性核同有参数
(其中
为惩罚因子,
为核参数)的RBF核具有相同的性能。
对某些参数,Sigmoid核同RBF核具有相似的性能[26]。
另外,RBF核与多项式核相比具有参数少的优点。
因为参数的个数直接影响到模型选择的复杂性。
非常重要的一点是
与多项式核相反,核值可能趋向无限(
)或者(
),跨度非常大。
而且,必须注意的是Sigmoid核在某些参数下是不正确的(例如,没有两个向量的内积)。
(4)用交叉验证找到最好的参数
和
。
使用RBF核时,要考虑两个参数
和
。
因为参数的选择并没有一定的先验知识,必须做某种类型的模型选择(参数搜索)。
目的是确定好的
使得分类器能正确的预测未知数据(即测试集数据),有较高的分类精确率。
值得注意的是得到高的训练正确率即是分类器预测类标签已知的训练数据的正确率)不能保证在测试集上具有高的预测精度。
因此,通常采用交叉验证方法提高预测精度。
折交叉验证(k-foldcrossvalidation)
是将训练集合分成
个大小相同的子集。
其中一个子集用于测试,其它
个子集用于对分类器进行训练。
这样,整个训练集中的每一个子集被预测一次,交叉验证的正确率是
次正确分类数据百分比的平均值。
它可以防止过拟合的问题。
支持向量机的基本原理
对于很多分类问题,例如最简单的,一个平面上的两类不同的点,如何将它用一条直线分开?
在平面上我们可能无法实现,但是如果通过某种映射,将这些点映射到其它空间(比如说球面上等),我们有可能在另外一个空间中很容易找到这样一条所谓的“分隔线”,将这些点分开。
SVM基本上就是这样的原理,但是SVM本身比较复杂,因为它不仅仅是应用于平面内点的分类问题。
SVM的一般做法是:
将所有待分类的点映射到“高维空间”,然后在高维空间中找到一个能将这些点分开的“超平面”,这在理论上是被完全证明了是成立的,而且在实际计算中也是可行的。
但是仅仅找到超平面是不够的,因为在通常的情况下,满足条件的“超平面”的个数不是唯一的。
SVM需要的是利用这些超平面,找到这两类点之间的“最大间隔”。
为什么要找到最大间隔呢?
我想这与SVM的“推广能力”有关,因为分类间隔越大,对于未知点的判断会越准确,也可以说是“最大分类间隔”决定了“期望风险”,总结起来就是:
SVM要求分类间隔最大,实际上是对推广能力的控制。
我想说到SVM的基本原理,有两个概念不能不提到,一个就是上面说到的“最大分类间隔面”,另一个是关于“VC”的概念。
最大分类间隔面比较好懂,从字面上也能知道它的大致含义。
但是VC维的概念,我有必要在这里着重说一下。
VC维(Vapnik-ChervonenkisDimension)的概念是为了研究学习过程一致收敛的速度和推广性,由统计学习理论定义的有关函数集学习性能的一个重要指标。
传统的定义是:
对一个指标函数集,如果存在H个样本能够被函数集中的函数按所有可能的2的K次方种形式分开,则称函数集能够把H个样本打散;函数集的VC维就是它能打散的最大样本数目H。
若对任意数目的样本都有函数能将它们打散,则函数集的VC维是无穷大,有界实函数的VC维可以通过用一定的阀值将它转化成指示函数来定义。
VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大),遗憾的是,目前尚没有通用的关于任意函数集VC维计算的理论,只对一些特殊的函数集知道其VC维。
例如在N维空间中线形分类器和线形实函数的VC维是n+1。
SVM学习之一:
libsvm中的数据预处理
(1)SVM(SupportVectorMachine)是从瓦普尼克(Vapnik)的统计学习理论发展而来的,主要针对小样本数据进行学习、分类和预测(有时也叫回归)的一种方法,能解决神经网络不能解决的过学习问题。
作者以为,类似的根据样本进行学习的方法还有基于案例的推理(Case-BasedReasoning),决策树归纳算法C4.5等。
(2)过学习问题:
训练误差过小导致推广能力下降,即真实风险的增加。
(3)推广能力:
generalizationability,也可以说是泛化能力,就是对未知样本进行预测时的精确度。
原文:
Apracticalguidetosupportvectorclassification。
libsvm中的样本预处理的原则有2个:
1非数值属性(CategoricalFeature)
由于SVM要求被处理的数据都是实数,因此对于属性值为类别的属性要进行转换。
例如{red,green,blue},可以转换成3个属性
red(1,0,0)
green(0,1,0)
blue(0,0,1)
来表示。
经验表明当这样的非数值属性的取值不是太多(这个具体数字不明确)的时候,这种编码比用一个数字来表示属性的类别要稳定的多,比如用1,2,3来分别表示red,green,blue就不太合适了。
目前,这个过程没有实现自动处理,需要使用者根据属性取值的多少自己动手去修改。
2缩放(scaling)
进行缩放的原因和使用神经网络时的考虑是一样的,由于RBF网络中采用样本数据的欧式距离来计算。
主要优点就是避免数值范围较大的属性控制数值范围较小的属性。
另一个优点就是避免计算时的numericaldifficulties。
因为核值通常依赖特征向量的内积(innerproduct),而较大的属性值可能导致numerical问题。
因此推荐把每个属性缩放到[-1,1]或者[0,1]之间,而且前一个范围要比后一个好,即对列向量进行规范化,其详细解释和计算公式见http:
//www.faqs.org/faqs/ai-faq/neural-nets/part2/中的“ShouldIstandardizetheinputvariables(columnvectors)?
”。
libsvm中没有考虑属性的类型(效益、成本、固定、偏离、区间、偏离区间6种不同的属性类型的规范化计算公式是不一样的,详见:
徐泽水,《不确定多属性决策方法及应用》,清华大学出版社,2004。
)而采用了统一的线性缩放,作者以为此处可以改进一下。
需要注意的是,在进行测试之前,要对测试数据进行同样的缩放操作。
其实在libsvm中有程序(svmscale.exe)来进行缩放操作,也可以不用手工缩放,只要用easy.py来对(经过非数值的归一化处理之后的)原始数据直接操作即可。
上面这两种方法基本上可以完成所有的样本的预处理了。
其实只有原则1是需要自己手工改动的,其他工作在libsvm中的tool文件夹下都由现成的python程序处理
SVM学习之二——“推广能力”
“推广能力”是分类问题(classification,也称为模式识别问题,在概率统计中则称为判别分析问题)的一个指标。
所谓推广就是在求得决策函数f(x)后,对一个新的输入x,按照y=f(x)推断出x相应的输出y。
“推广能力”就是描述推广优劣的一种度量。
那么,决策函数f(x)是怎么回事?
这要从分类问题的(数学语言描述的)定义说起,参见(邓乃扬等人的《数据挖掘中的新方法——支持向量机》,科学出版社,2005)。
通俗的讲。
就是一个表示x,y之间关系的函数,而x,y就是样本中的一对数据。
其中x代表输入,y代表类别。
分类问题就是找到这个决策函数f(x),而对于新的输入x,能够判断其所属类别y则是个预测(回归)问题。
SVM学习之三——简单世界和复杂世界
统计学习理论(VapnikVN,许建华张学工译,电子工业出版社,2004)是SVM的坚实的理论基础,其作者指出,在可以只用几个变量描述的简单世界中,传统的科学哲学的目标是“发现普遍的自然规律”。
但是,这一目标在需要用很多变量描述的复杂世界中不一定可行。
因此,在一个复杂世界中,我们需要放弃寻找一般规律的目标,而考虑其他目标。
在Vapnik的Thenatureofstatisticallearningtheory(1995年)一书中,作者对复杂世界的推理提出了如下法则:
“在解决一个感兴趣的问题时,不要把解决一个更一般的问题作为一个中间步骤。
要试图得到所需要的答案,而不是更一般的答案。
很可能你拥有足够的信息来很好地解决一个感兴趣的特定问题,但却没有足够的信息来解决一个一般性的问题。
”
东亚人就是这种理论的坚决执行者,“他们注重在其所处环境中的对象,很少关心类别和普适规则,基于在特定时刻施加于对象个体上的各种作用来解释其行为。
没有太多地采用形式逻辑,而常常采用各种辩证推理规则,包括综合、超越和归一。
”而西方人则注重对象及其特性(即一般性规律),并且用这种假定的基于分类的规则来预测和解释对象的行为(这样经常是错误的)。
形式逻辑就是西方人的“法宝”,在推理、分类和规则验证中发挥了作用。
SVM学习之四——从机器学习到支持向量机
机器学习(MachineLearning,ML)的目的是根据给定的训练样本求对某系统输入输出之间依赖关系的估计,使它(这种关系)能够对未知输出做出尽可能准确地预测。
机器学习至今没有一个精确的公认的定义。
作为人工智能(ArtificialIntelligence,AI)的一个重要研究领域,ML的研究工作主要围绕学习机理、学习方法和面向任务这三个基本方面进行研究。
模式识别、函数逼近和概率密度估计是三类基本的ML问题。
从数学的角度来考虑,机器学习问题就是已知n个独立同分布的观测样本,在同一组预测函数中求一个最优的函数对依赖关系进行估计,使期望风险R[f]最小。
损失函数是评价预测准确程度的一种度量,它与预测函数f(x)密切相关。
而f(x)的期望风险依赖于概率分布和损失函数,前者是客观存在的,后者是根据具体问题选定的,带有(主观的)人为的或偏好色彩。
期望风险的大小直观上可以理解为,当我们用f(x)进行预测时,“平均”的损失程度,或“平均”犯错误的程度。
但是,只有样本却无法计算期望风险,因此,传统的学习方法用样本定义经验风险Remp[f]作为对期望风险的估计,并设计学习算法使之最小化。
即所谓的经验风险最小化(EmpiricalRiskMinimization,ERM)归纳原则。
经验风险是用损失函数来计算的。
对于模式识别问题的损失函数来说,经验风险就是训练样本错误率;对于函数逼近问题的损失函数来说,就是平方训练误差;而对于概率密度估计问题的损失函数来说,ERM准则就等价于最大似然法。
事实上,用ERM准则代替期望风险最小化并没有经过充分的理论论证,只是直观上合理的想当然做法。
也就是说,经验风险最小不一定意味着期望风险最小。
其实,只有样本数目趋近于无穷大时,经验风险才有可能趋近于期望风险。
但是很多问题中样本数目离无穷大很远,那么在有限样本下ERM准则就不一定能使真实风险较小啦。
ERM准则不成功的一个例子就是神经网络的过学习问题(某些情况下,训练误差过小反而导致推广能力下降,或者说是训练误差过小导致了预测错误率的增加,即真实风险的增加)。
统计学习理论(StatisticalLearningTheory,SLT)和支持向量机(SupportVectorMachine,SVM)建立了一套较好的有限训练样本下机器学习的理论框架和通用方法,既有严格的理论基础,又能较好地解决小样本、非线性、高维数和局部极小点等实际问题,其核心思想就是学习机器(又叫预测函数,或学习函数,或学习模型)F要与有限的训练样本相适应。
在学习算法中需要选择恰当的F,这里的关键因素是F的大小,或者F的丰富程度,或者说F的“表达能力”,VC维(Vapnik-ChervonenkisDimension)就是对这种“表达能力”的一种描述。
VC维的定义如下:
对于一个指示函数集,如果存在h个样本能够被函数集中的函数按所有可能的2的h次幂种形式分开,则称函数集能够把h个样本都打散,h的最大值就是函数集的VC维。
VC维是SLT中的一个重要概念,它是函数集学习性能的重要指标。
目前尚没有通用的关于任意函数集VC维计算的理论,只知道一些特殊的函数集的VC维。
比如,在n维空间中线性分类器和线性实函数的VC维是n+1,而f(x,a)=sin(ax)的VC维则为无穷大。
对于给定的学习函数集,如何(用理论或实验的方法)计算其VC维是当前统计学习理论中有待研究的一个问题。
由上文可知,在有限样本情况下,仅仅用E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SVM 通俗 讲解