支持向量机原理及matlab实现-9页_第1页
支持向量机原理及matlab实现-9页_第2页
支持向量机原理及matlab实现-9页_第3页
支持向量机原理及matlab实现-9页_第4页
支持向量机原理及matlab实现-9页_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、1. IntroductionAbaloneAge.data数据有4177个样本,7个特征,其中rings作为预测标签,也就是年龄。对样本的一些统计数据如下表所示。NameData TypeMeas.DescriptionLengthcontinuousmmLongest shell measurementDiametercontinuousmmperpendicular to lengthHeightcontinuousmmwith meat in shellWhole weightcontinuousgramswhole abaloneShucked weightcontinuousgra

2、msweight of meatViscera weightcontinuousgramsgut weight (after bleeding)Shell weightcontinuousgramsafter being driedRingsintegerStatistics for numeric domains:LengthDiamHeightWholeShuckeVisceraShellRingsMin0.0750.0550.0000.0020.0010.0010.0021Max0.8150.6501.1302.8261.4880.7601.00529Mean0.5240.4080.14

3、00.8290.3590.1810.2399.934SD0.1200.0990.0420.4900.2220.1100.1393.224Correl0.5570.5750.5570.5400.4210.5040.6281.02. Algorithm Description考虑到数据的可分性,对年龄的预测是一个回归问题,所以采用支持向量机对数据进行回归分析。一、支持向量机的基本原理支持向量机(SVM)是Corinna和Vapnik于二十世纪末首先提出的。支持向量机方法Vapnik-Chervonenkis理论与构造风险最小理论为根底,使离超立体最接近的元素到超平面的间隔最大。通常超平面不止一个,

4、也就是说支持向量机的目标就是最大化超平面之间的间隔,也就是建立最好的分类超平面,从而来提高学习分类机器的的泛化处理能力。该方法在解决高维小样本数据、数据的非线性以及解的局部极小点等多个问题中均展示出了很多独有的优点,并进而将其推行使用到了其余相联系的机器学习问题中。支持向量机方法早已被广泛的应用到了肿瘤数据分类等领域的问题研究中。支持向量机的具体求解过程如下:(1) 设已知样本训练集:其中,为特征向量。(2) 选择适当核函数以及参数,解决优化问题:得最优解:。(3) 选取的正分量,计算样本分类阈值:。(4) 构造最优判别函数:。支持向量机内积核核函数K的主要种类有: 线性内核函数 多项式核函数

5、 高斯径向基核函数 (RBF) 双曲正切核函数 (Sigmoid核函数) 一般地,用SVM做分类预测时必须调整相关参数(特别是惩罚参数和核函数参数),这样才可以获得比较满意的预测分类精度,采用Cross Validation的思想可以获取最优的参数,并且有效防止过学习和欠学习状态的产生,从而能够对于测试集合的预测得到较佳的精度。根据输入数据的线性可分性(线性可分或近似线性可分和线性不可分),可以将支持向量机分为两大类:非线性支持向量机、线性支持向量机。(1)线性支持向量机若要介绍线性支持向量机,首先需要介绍下一个定义:线性分类器。A、B是两个不同的类别,需要在其中间加一个分类函数,这样就能够将

6、A、B样本区分开,那么则说这个数据集是线性可分,其所对应的分类器便是线性分类器。对于二维空间,显然,分类函数可以看成是一条直线。同理,三维空间里分类函数就是一个平面,忽略空间的维数,分类函数就可以统称为超平面。(2)非线性支持向量机从前一小节可以看出来,线性支持向量机是二类分类器。但是,在现实环境和问题中,往往要解决多类别的分类的问题。那么,怎么从二类分类器扩充到多类别分类器呢?就是一个值得思考探寻的方向。从二类分类器获取多类分类器的方法有很多,但在实际应用中,采用的较多的措施是通过寻找一个合适的非线性转换函数,进而能够使数据从原始的特征空间中映射到新的特征空间中,使得数据在新的特征空间中是线

7、性可分的。但是,寻找这样的非线性转换函数很难,并且即使能找到,要实现这种非线性的转换也很麻烦。因此,引入了核函数,它使得甚至可以不必知道变换函数,只要一种核函数满足Mereer定理,它就对应某一变换空间中的内积,然而内积的计算却容易的多。常用的核函数主要分为四类:核函数、核函数、核函数和核函数,不同的核函数对应不同的非线性变换函数,最后会形成不同的算法。这就使得相应的优化问题变成了凸二次规划问题,不会出现传统神经网络陷入局部极值的问题,这是SVM自提出后得到快速发展的重要原因之一。SVM的优势:(1)处理解决了样本数据较少的机器学习问题;(2)提高了学习机的泛化性能;(3) 少数支持向量决定了

8、最后的决策函数,因此,某种程度上对高维问题有很好的辅助解决作用,提高了方法的鲁棒性;(4)完善改进了对于非线性数据分类研究的问题;(5)规避了神经网络在结构抉择问题和局部极小值问题。SVM的劣势:(1)缺乏对数据缺失的判断能力;(2)解决非线性数据还没有完善的方案和措施,只能靠慎重的选择核函数来解决。另一方面,所有传统分类方法中,SVM的分类性能是最好的,所以在本文的对比实验中,从传统分类方法中选择了具有代表性的SVM分类器来进行对比实验。二、SVM回归的实验步骤导入数据,记作X,分别将数据的特征和标签赋值给矩阵matrix和rings,如图所示。利用随机数,随机选择70%的样本作为训练集,余

9、下的30%的样本作为测试集,评价模型的好坏应该从训练集和测试集两个方面考虑,使用matlab自带fitrsvm程序,对样本归一化后,训练集进行训练,得到模型Mdl。利用训练得到的模型,分别对训练集和测试集进行预测,并计算其与真实值之间的差距,评价指标选择的是均方根误差和平均绝对误差。其中result_1记录了训练集真实和预测值,result_2记录了测试集真实和预测值,abe1、mse1分别表示训练集平均绝对误差和均方根误差。可视化测试集预测与真实年龄的差距。3. Conclution支持向量机是一种基于统计学习理论的模式识别方法。在模式识别等领域获得了广泛的应用。少数支持向量决定了最后的决策

10、函数,因此,某种程度上对高维问题有很好的辅助解决作用,提高了方法的鲁棒性。随机选择70%的样本作为训练集,30%的样本作为测试集,平均绝对误差和均方根误差作为模型的评价指标,训练集预测结果与原始数据标签的的平均绝对误差(abe)为1.5723,均方根误差(mse)为2.2745,测试集平均绝对误差(abe)1.5671,均方根误差(mse)为2.3279,说明支持向量机对数据年龄的预测具有较好的结果。AppendixCode:% 清空环境变量clearclc% 导入数据X=load('AbaloneAge.txt');matrix=X(:,1:6);rings=X(:,end)

11、;% 1. 随机产生训练集和测试集n = randperm(size(matrix,1);% 2. 训练集70%的样本n1=floor(size(X,1)*0.7);p_train = matrix(n(1:n1),:);t_train = rings(n(1:n1),:);% 3. 测试集30%的个样本p_test = matrix(n(n1+1:end),:);t_test = rings(n(n1+1:end),:);% 数据归一化% 1. 训练集pn_train,inputps = mapminmax(p_train');pn_train = pn_train'pn_t

12、est = mapminmax('apply',p_test',inputps);pn_test = pn_test'% 2. 测试集tn_train,outputps = mapminmax(t_train');tn_train = tn_train'tn_test = mapminmax('apply',t_test',outputps);tn_test = tn_test'Mdl = fitrsvm(pn_train,tn_train);% yfit = predict(Mdl,pn_test);% SVM仿

13、真预测Predict_1 = predict(Mdl,pn_train);Predict_2 = predict(Mdl,pn_test);% 1. 反归一化predict_1 = mapminmax('reverse',Predict_1,outputps);predict_2 = mapminmax('reverse',Predict_2,outputps);% 2. 结果对比result_1 = t_train predict_1;result_2 = t_test predict_2;re1= result_1(:,1)-result_1(:,2);abe1 = sum(abs(re1)/size(p_train,1)mse1 = sqrt(sum(re1.2)/size(p_train,1)re2= result_2(:,1)-result_2(:,2);abe2 = sum(abs(re2)/size(p_test,1)mse2

温馨提示

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

评论

0/150

提交评论