SVM简介

本文摘自:SVM(support vector machine 支持向量机) 简介

基于数据的机器学习是现代智能技术中的重要方面,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测。迄今为止,关于机器学习还没有一种被共同接受的理论框架,关于其实现方法大致可以分为三种:
第一种是经典的(参数)统计估计方法。包括模式识别、神经网络等在内,现有机器学习方法共同的重要理论基础之一是统计学。参数方法正是基于传统统计学的,在这种方法中,参数的相关形式是已知的,训练样本用来估计参数的值。这种方法有很大的局限性.首先,它需要已知样本分布形式,这需要花费很大代价,还有,传统统计学研究的是样本数目趋于无穷大时的渐近理论,现有学习方法也多是基于此假设。但在实际问题中,样本数往往是有限的,因此一些理论上很优秀的学习方法实际中表现却可能不尽人意。
第二种方法是经验非线性方法,如人工神经网络(ANN)。这种方法利用已知样本建立非线性模型,克服了传统参数估计方法的困难。但是,这种方法缺乏一种统一的数学理论。与传统统计学相比,统计学习理论(Statistical Learning Theory或SLT)是一种专门研究小样本情况下机器学习规律的理论。该理论针对小样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。V. Vapnik等人从六、七十年代开始致力于此方面研究,到九十年代中期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。
统计学习理论的一个核心概念就是VC维(VC Dimension)概念,它是描述函数集或学习机器的复杂性或者说是学习能力(Capacity of the machine)的一个重要指标,在此概念基础上发展出了一系列关于统计学习的一致性(Consistency)、收敛速度、推广性能(Generalization Performance)等的重要结论。
统计学习理论是建立在一套较坚实的理论基础之上的,为解决有限样本学习问题提供了一个统一的框架。它能将很多现有方法纳入其中,有望帮助解决许多原来难以解决的问题(比如神经网络结构选择问题、局部极小点问题等);
同时,这一理论基础上发展了一种新的通用学习方法──支持向量机(Support Vector Machine或SVM),已初步表现出很多优于已有方法的性能。一些学者认为,SLT和SVM正在成为继神经网络研究之后新的研究热点,并将推动机器学习理论和技术有重大的发展。
支持向量机方法是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(Generalizatin Ability)。支持向量机方法的几个主要优点有:
1. 它是专门针对有限样本情况的,其目标是得到现有信息下的最优解而不仅仅是样本数趋于无穷大时的最优值;
2. 算法最终将转化成为一个二次型寻优问题,从理论上说,得到的将是全局最优点,解决了在神经网络方法中无法避免的局部极值问题;
3. 算法将实际问题通过非线性变换转换到高维的特征空间(Feature Space),在高维空间中构造线性判别函数来实现原空间中的非线性判别函数,特殊性质能保证机器有较好的推广能力,同时它巧妙地解决了维数问题,其算法复杂度与样本维数无关;
在SVM方法中,只要定义不同的内积函数,就可以实现多项式逼近、贝叶斯分类器、径向基函数(Radial Basic Function或RBF)方法、多层感知器网络等许多现有学习算法。
统计学习理论从七十年代末诞生,到九十年代之前都处在初级研究和理论准备阶段,近几年才逐渐得到重视,其本身也趋向完善,并产生了支持向量机这一将这种理论付诸实现的有效的机器学习方法。
目前,SVM算法在模式识别、回归估计、概率密度函数估计等方面都有应用。
例如,在模式识别方面,对于手写数字识别、语音识别、人脸图像识别、文章分类等问题,SVM算法在精度上已经超过传统的学习算法或与之不相上下。
目前,国际上对这一理论的讨论和进一步研究逐渐广泛,而我国国内尚未在此领域开展研究,因此我们需要及时学习掌握有关理论,开展有效的研究工作,使我们在这一有着重要意义的领域中能够尽快赶上国际先进水平。由于SLT理论和SVM方法尚处在发展阶段,很多方面尚不完善,比如:许多理论目前还只有理论上的意义,尚不能在实际算法中实现;而有关SVM算法某些理论解释也并非完美(J.C.Burges在[2]中就曾提到结构风险最小原理并不能严格证明SVM为什么有好的推广能力);此外,对于一个实际的学习机器的VC维的分析尚没有通用的方法;SVM方法中如何根据具体问题选择适当的内积函数也没有理论依据。因此,在这方面我们可做的事情是很多的。

相关资源:
SVM的英文主站:
http://www.kernel-machines.org/
Support Vector Machine 作者的站点:http://www.support-vector.net
piaip 的(lib)SVM 簡易入門:http://ntu.csie.org/~piaip/svm/svm_tutorial.html
林智仁(cjlin)老師的libsvm for matlab
http://www.csie.ntu.edu.tw/~cjlin/libsvm/

机器学习之支持向量机简介

       支持向量机(Support Vector Machine,SVM)是AT&TBell 实验室的V.Vapnik等人提出的一种新型机器学习算法。到目前为止,支持向量机已应用于孤立手写字符识别6&7、网页或文本自动分类、说话人识别、人脸检测、性别分类、计算机入侵检测、基因分类、遥感图象分析、目标识别、函数回归、估计、函数逼近、密度估计、时间序列预测及数据压缩、文本过滤、数据挖掘、非线性系统控制等各个领域的实际问题中。

       SVM的主要思想是针对两类分类问题,寻找一个超平面作为两类训练样本点的分割,以保证最小的分类错误率。在线性可分的情况下,存在一个或多个超平面使得训练样本完全分开,SVM的目标是找到其中的最优超平面,最优超平面是使得每一类数据与超平面距离最近的向量与超平面之间的距离最大的这样的平面,如下图所示,超平面W是h值最大的最优超平面;对于线性不可分的情况,通过使用核函数(一种非线性映射算法)将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分。

        SVM的基本模型设输入模式集合{ x[i]} ∈ Rn 由两类点组成, 如果x[i]属于第1类, 则y[i] = 1 , 如果x[i]属于第2类, 则y[i] = -1 , 那么有训练样本集合{ x[i] , y[i]} , i = 1 ,2,3 , ⋯, n ,求最优分类面wx-b=0,满足:y[i](w·x[i] - b) >= 1;并使2*h= 2/‖w‖最大,即min‖w‖*‖w‖/2;根据对偶理论,可以通过解该问题的对偶问得到最优解,对偶问题为:

      max∑α[i] – 1/2 ∑α[i]*α[j]*y[i]*y[j]*x[i]*x[j]

      0≤α[i]≤C*∑α[i]*y[i]=0

其中x[i] ·x[j]表示这两个向量的内积,当对于线性不可分的情况,用核内积K(x[i], x[j])(通过核函数映射到高维空间中对应向量的内积)代替x[i] ·x[j]。根据对偶问题的解α,求得w,b ,得到最优分类面

       SVM模型求解:当训练样本向量很多、向量维数很大时,解上面的对偶问题是一个解大型矩阵的问题,采用传统的矩阵求逆无论在空间复杂度上还是在时间复杂度上都是不可取的。序贯最小优化(sequential minimal optimization,简称SMO)算法是目前解决大量数据下支持向量机训练问题的一种十分有效的方法。

       SMO的基本思想是每次只选择违法KTT条件最严重的两个拉格朗日乘子,通过求解只有两个变量的二次规划问题,更新选取的拉格朗日乘子,此时保持其他拉格朗日乘子,通过不断的迭代,最终得到问题的最优解。SMO的基本步骤为:

       1、将a向量分成两个集合,工作集aB,固定集aN,即:a = {aB, aN }。初始化时,aB为a全部的分量,aN为空集;

       2、每次对aB解决一个小的二次规划问题,保持aN中的值不变;

       3、每次迭代选择不同的aB和aN ,每解决一个小规模优化问题,都在原来的基础上向最终的解集前进一步;

       4、每次迭代检查当前结果,满足优化条件,则找到了优化问题的解,算法结束。

推荐书籍:《数据挖掘中的新方法:支持向量机》

 

  支持向量机作为一种可训练的机器学习方法,依靠小样本学习后的模型参数进行导航星提取,可以得到分布均匀且恒星数量大为减少的导航星表。Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机。SVM的主要思想可以概括为两点:

       (1) 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为 高维 特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;例如,将1维的“线性不可分”上升到2维后就成为线性可分了。
  (2) 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面, 使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定 上界
  在学习这种方法时,首先要弄清楚这种方法考虑问题的特点,这就要从线性可分的最简单情况讨论起,在没有弄懂其原理之前,不要急于学习线性不可分等较复杂的情况,支持向量机在设计时,需要用到条件极值问题的求解,因此需用 拉格朗日 乘子理论,但对多数人来说,以前学到的或常用的是约束条件为等式表示的方式,但在此要用到以不等式作为必须满足的条件,此时只要了解拉格朗日理论的有关结论就行。

       SVM的一般特征:

    (1)SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和 人工神经网络 )都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。
    (2)SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此,用户必须提供其他参数,如使用核函数类型和引入松弛变量等。
    (3)通过对数据中每个分类属性引入一个哑变量,SVM可以应用与分类数据。
    (4)SVM一般只能用在二类问题,对于多类问题效果不好。

  SVM方法是通过一个非线性映射p,把样本空间映射到一个高维乃至无穷维的特征空间中(Hilbert空间),使得在原来的样本空间中非线性可分的问题转化为在特征空间中的线性可分的问题.简单地说,就是升维和线性化.升维,就是把样本向高维空间做映射,一般情况下这会增加计算的复杂性,甚至会引起“维数灾难”,因而人们很少问津.但是作为分类、回归等问题来说,很可能在低维样本空间无法线性处理的样本集,在高维特征空间中却可以通过一个线性超平面实现线性划分(或回归).一般的升维都会带来计算的复杂化,SVM方法巧妙地解决了这个难题:应用核函数的展开定理,就不需要知道非线性映射的显式表达式;由于是在高维特征空间中建立线性学习机,所以与线性模型相比,不但几乎不增加计算的复杂性,而且在某种程度上避免了“维数灾难”.这一切要归功于核函数的展开和计算理论.

  选择不同的核函数,可以生成不同的SVM,常用的核函数有以下4种:
  (1)线性核函数K(x,y)=x·y
  (2)多项式核函数K(x,y)=[(x·y)+1]d
  (3)径向基函数K(x,y)=exp(-|x-y|^2/d^2)
  (4)二层神经网络核函数K(x,y)=tanh(a(x·y)+b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SVM(支持向量机)是一种常用的机器学习算法,在高光谱图像分类中也有广泛的应用。下面简要介绍一下SVM高光谱图像分类的代码流程。 1. 数据预处理:首先,对高光谱图像进行数据预处理,包括去除噪声、校正图像、降维等。这一步骤旨在提高分类的准确性和泛化能力。 2. 特征提取:从预处理后的高光谱图像中提取有代表性的特征。常用的特征提取方法有光谱角、主成分分析(PCA)、线性判别分析(LDA)等。这些特征能够反映图像不同区域的光谱特性。 3. 数据划分:将提取到的特征按照一定的比例划分为训练集和测试集。训练集用于训练SVM分类器,而测试集用于评估分类器的准确性和性能。 4. 模型训练:调用支持向量机算法进行模型训练。在训练过程中,SVM根据训练集的特征和标签,学习出一个能够最佳划分不同类别的超平面。 5. 模型评估:利用训练好的SVM模型对测试集进行分类,并计算分类的准确率、精确率、召回率等指标以评估模型的性能。 6. 结果分析:分析模型分类结果,可以使用混淆矩阵来直观地表示分类的结果。通过观察混淆矩阵,可以了解模型对不同类别的分类准确性。 以上就是SVM高光谱图像分类的代码流程简介。当然,具体的实现过程还需要根据具体的编程语言和库进行细化。在实际应用中,还可以通过优化超参数、采用交叉验证等方法进一步提高分类器的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值