LS-SVM相关教程.doc_第1页
LS-SVM相关教程.doc_第2页
LS-SVM相关教程.doc_第3页
LS-SVM相关教程.doc_第4页
LS-SVM相关教程.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四种支持向量机用于函数拟合与模式识别的Matlab示例程序/Matlab/support_vector_machine_SVM_matlab_toolbox.htm陆振波点这里下载:四种支持向量机用于函数拟合与模式识别的Matlab示例程序使用要点:应研学论坛人工智能与模式识别版主magic_217之约,写一个关于针对初学者的四种支持向量机工具箱的详细使用说明。同时也不断有网友向我反映看不懂我的源代码,以及询问如何将该工具箱应用到实际数据分析等问题,其中有相当一部分网友并不了解模式识别的基本概念,就急于使用这个工具箱。本文从模式识别的基本概念谈起,过渡到神经网络模式识别,逐步引入到这四种支持向量机工具箱的使用。本文适合没有模式识别基础,而又急于上手的初学者。作者水平有限,欢迎同行批评指正!1模式识别基本概念模式识别的方法有很多,常用有:贝叶斯决策、神经网络、支持向量机等等。特别说明的是,本文所谈及的模式识别是指“有师分类”,即事先知道训练样本所属的类别,然后设计分类器,再用该分类器对测试样本进行识别,比较测试样本的实际所属类别与分类器输出的类别,进而统计正确识别率。正确识别率是反映分类器性能的主要指标。分类器的设计虽然是模式识别重要一环,但是样本的特征提取才是模式识别最关键的环节。试想如果特征矢量不能有效地描述原样本,那么即使分类设计得再好也无法实现正确分类。工程中我们所遇到的样本一般是一维矢量,如:语音信号,或者是二维矩阵,如:图片等。特征提取就是将一维矢量或二维矩阵转化成一个维数比较低的特征矢量,该特征矢量用于分类器的输入。关于特征提取,在各专业领域中也是一个重要的研究方向,如语音信号的谐振峰特征提取,图片的PCA特征提取等等。2神经网络模式识别神经网络模式识别的基本原理是,神经网络可以任意逼近一个多维输入输出函数。以三类分类:I、II、III为例,神经网络输入是样本的特征矢量,三类样本的神经网络输出可以是1;0;0、0;1;0、0;0;1,也可以是1;-1;-1、-1;1;-1、-1;-1;1。将所有样本中一部分用来训练网络,另外一部分用于测试输出。通常情况下,正确分类的第I类样本的测试输出并不是1;0;0或是1;-1;-1,而是如0.1;0;-0.2的输出。也是就说,认为输出矢量中最大的一个分量是1,其它分量是0或是-1就可以了。3支持向量机的多类分类支持向量机的基本理论是从二类分类问题提出的。我想绝大部分网友仅着重于理解二类分类问题上了,我当初也是这样,认识事物都有一个过程。二类分类的基本原理固然重要,我在这里也不再赘述,很多文章和书籍都有提及。我觉得对于工具箱的使用而言,理解如何实现从二类分类到多类分类的过渡才是最核心的内容。下面我仅以1-a-r算法为例,解释如何由二类分类器构造多类分类器。二类支持向量机分类器的输出为1,-1,当面对多类情况时,就需要把多类分类器分解成多个二类分类器。在第一种工具箱LS_SVMlab中,文件Classification_LS_SVMlab.m中实现了三类分类。训练与测试样本分别为n1、n2,它们是3 x 15的矩阵,即特征矢量是三维,训练与测试样本数目均是15;由于是三类分类,所以训练与测试目标x1、x2的每一分量可以是1、2或是3,分别对应三类,如下所示:n1 = rand(3,5),rand(3,5)+1,rand(3,5)+2;x1 = 1*ones(1,5),2*ones(1,5),3*ones(1,5); n2 = rand(3,5),rand(3,5)+1,rand(3,5)+2;x2 = 1*ones(1,5),2*ones(1,5),3*ones(1,5); 1-a-r算法定义:对于N类问题,构造N个两类分类器,第i个分类器用第i类训练样本作为正的训练样本,将其它类的训练样本作为负的训练样本,此时分类器的判决函数不取符号函数sign,最后的输出是N个两类分类器输出中最大的那一类。在文件Classification_LS_SVMlab.m的第42行:codefct = code_MOC,就是设置由二类到多类编码参数。当第42行改写成codefct =code_OneVsAll,再去掉第53行最后的引号,按F5运行该文件,命令窗口输出有:codebook =1 -1 -1-1 1 -1-1 -1 1old_codebook =1 2 3比较上面的old_codebook与codebook输出,注意到对于第i类,将第i类训练样本做为正的训练样本,其它的训练样本作为负的训练样本,这就是1-a-r算法定义。这样通过设置codefct =code_OneVsAll就实现了支持向量机的1-a-r多类算法。其它多类算法也与之雷同,这里不再赘述。值得注意的是:对于同一组样本,不同的编码方案得到的训练效果不尽相同,实际中应结合实际数据,选择训练效果最好的编码方案。4核函数及参数选择常用的核函数有:多项式、径向基、Sigmoid型。对于同一组数据选择不同的核函数,基本上都可以得到相近的训练效果。所以核函数的选择应该具有任意性。对训练效果影响最大是相关参数的选择,如:控制对错分样本惩罚的程度的可调参数,以及核函数中的待定参数,这些参数在不同工具箱中的变量名称是不一样的。这里仍以Classification_LS_SVMlab.m为例,在第38、39行分别设定了gam、sig2的值,这两个参数是第63行trainlssvm函数的输入参数。在工具箱文件夹的trainlssvm.m文件的第96、97行有这两个参数的定义:% gam : Regularization parameter% sig2 : Kernel parameter (bandwidth in the case of the RBF_kernel)这里gam是控制对错分样本惩罚的程度的可调参数,sig2是径向基核函数的参数。所以在充分理解基本概念的基础上,将这些概念与工具箱中的函数说明相结合,就可以自如地运用这个工具箱了,因此所以最好的教科书是函数自带的函数说明。最佳参数选择目前没有十分好的方法,在Regression_LS_SVMlab.m的第46至49行的代码是演示了交叉验证优化参数方法,可这种方法相当费时。实践中可以采用网格搜索的方法:如gam=0:0.2:1,sig2=0:0.2:1,那么gam与sig2的组合就有6x6=36种,对这36种组合训练支持向量机,然后选择正确识别率最大的一组参数作为最优的gam与sig2,如果结果均不理想,就需要重新考虑gam与sig2的范围与采样间隔了。5由分类到回归的过渡LS_SVMlab、SVM_SteveGunn这两个工具箱实现了支持向量机的函数拟合功能。从工具箱的使用角度来看,分类与回归的最大区别是训练目标不同。回归的训练目标是实际需要拟合的函数值;而分类的训练目标是1,2,N(分成N类),再通过适当的编码方案将N类分类转换成多个二类分类。比较文件Regression_LS_SVMlab.m与Classification_LS_SVMlab.m的前几行就可以注意到这一点。另外,分类算法以正确分类率来作为性能指标,在回归算法中通常采用拟合的均方误差(mean square error, MSE)来作为性能指标。LSSVM在分类、回归中的实例整理/bbs/ShowPost.asp?ThreadID=132有了LS-SVMlab的matlab软件包,比我之前用libsvm手动去调好用多了(上一篇教程里有讲到让libsvm自动调节参数的功能,那涉及太多工具包,后来也没去试。希望有同学有时间尝试一下)。以下以一个实例实验来说明一下用法。先是LS-SVMlab的各种功能介绍,主要是让初学者快点上手,不需要再走我的弯路,尽快引起你的学习兴趣,不论是做研究还是写作业,能帮上你的忙就是我的最大心愿。LS-SVMlab1.5bw.tar 一般用法(分类用法)首先下载了LS-SVMlab1.5bw,以及它的使用方法导读LS-SVMlab Toolbox Users Guide.pdf,免费的,地址是:http:/www.esat.kuleuven.ac.be/sista/lssvmlab/就得点“toolbox”:http:/www.esat.kuleuven.ac.be/sista/lssvmlab/toolbox.html下载的LS-SVMlab1.5bw是压缩文件,解压缩,记住路径,如:e:LS-SVMlab1.5bw。这个目录下59个文件。成功一半了。下来打开matlab(最好6.1以上版本的),current directory的路径设置为e:LS-SVMlab1.5bw,下来就用拉。怎么用呢,有的朋友对matlab还不太熟悉,我简单说一下,在matlab打开的窗口中有一个叫command window,在这里面输入命令就可以了。其中符号%会被matlab识别,后面的文字是说明性的,不会参与程序计算。ok,开始介绍LS-SVMlab的分类用法在命令窗口(command window)中敲入(注凡是前面带说明是你敲进去的,没有的则是系统运行的结果): X = 2.*rand(30,2)-1; Y = sign(sin(X(:,1)+X(:,2); X会出现(有些数据在excel里,可以选定行列,在等号后粘进来)X =0.9003 -0.9695-0.5377 0.49360.2137 -0.1098-0.0280 0.86360.7826 -0.06800.5242 -0.1627. .-0.4556 0.7073-0.6024 0.1871敲入 Y出现Y =-1-11111.1-1以上是编辑一组训练样本,有两个自变量(每个训练样本有两维)和一个因变量(每个训练样本的输出)。 gam = 10; %可能是惩罚参数吧,我猜的,谁知道跟贴说一下吧,谢啦。 sig2 = 0.2;%RBF核函数的参数 type = classification;%用于分类,简称c alpha,b = trainlssvm(X,Y,type,gam,sig2,RBF_kernel);(这里注意那个符号好像是中文的引号,要改成英文的,这是那个导读里面的问题)然后自动给出alpha,b的值,拉格朗日乘子alpha是数组,偏置b是单值,是构造的函数里面的参数值。 alpha,b = trainlssvm(X,Y,type,gam,sig2,RBF_kernel,original);original表示保持数据原始状态不变。 alpha,b = trainlssvm(X,Y,type,gam,sig2,RBF_kernel,preprocess);preprocess表示对原始数据进行预处理。具体怎么处理,谁知道? Xt = 2.*rand(10,2)-1; Ytest = simlssvm(X,Y,type,gam,sig2,RBF_kernel,alpha,b,Xt);以上构造检验样本。Ytest是计算出来的检验值, plotlssvm(X,Y,type,gam,sig2,RBF_kernel,alpha,b);这个画图的(仅限于两维)(回归用法): X=5.00 0.31 10.00 0.27 5.00 0.53 10.00 0.33 15.00 0.24 5.00 1.01 10.00 0.52 20.00 0.30 10.00 0.96 20.00 0.53 50.00 0.32 41.00 0.50 90.00 0.24 120.00 0.22 92.00 0.50 70.00 0.96 90.00 1.03 Y=0.70 0.78 0.73 0.85 0.83 0.84 0.85 0.85 0.85 0.91 0.94 0.94 0.92 0.94 0.96 0.95 0.95 %以上是样本数据(x为降雨历时和降雨强度两个参数,实验测量得到,y是径流系数,也是实测得到)gam = 50; sig2 = 0.2;type = function approximation;%这个引号里面的内容说明了用于回归运算,还有另一种查手册吧,下载地址跟上面一样。alpha,b = trainlssvm(X,Y,type,gam,sig2,RBF_kernel);以上算出了模型参数取值Xt= 10 0.2910 0.4642 0.2650 0.96;预测自变量XtYt = simlssvm(X,Y,type,gam,sig2,RBF_kernel,preprocess,alpha,b,Xt);预测因变量计算值Yt如果想看拟合/模拟结果 将上面这个命令的最后的Xt改为X,得出和Y相对应的训练模型的计算值。实测即输入Yx = simlssvm(X,Y,type,gam,sig2,RBF_kernel,preprocess,alpha,b,X);Yx=0.81 0.91 0.89 0.95不断调整参数值对比一下看看。这是实验测得的数据,仅用于说明测量精度高。画图最后可以利用画图函数,直观地了解拟合的情况,如:plotlssvm(X,Y,type,gam,sig2,RBF_kernel,preprocess,alpha,b,X);svm的多类分类方法还没找到。/bbs/read.php?tid=9167最近也在学lssvm,下面网址有下载及简单说明,程序内附LS-SVMlab Toolbox Users Guide.pdf,英文的,/Matlab/support_vector_machine_SVM_matlab_toolbox.htm,把LS_SVMlab文件夹的文件拷贝到Regression_LS_SVMlab.m相同目录下,运行Regression_LS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论