整理支持向量机原理及matlab实现.docx

上传人:b****9 文档编号:26003235 上传时间:2023-06-17 格式:DOCX 页数:13 大小:269.65KB
下载 相关 举报
整理支持向量机原理及matlab实现.docx_第1页
第1页 / 共13页
整理支持向量机原理及matlab实现.docx_第2页
第2页 / 共13页
整理支持向量机原理及matlab实现.docx_第3页
第3页 / 共13页
整理支持向量机原理及matlab实现.docx_第4页
第4页 / 共13页
整理支持向量机原理及matlab实现.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

整理支持向量机原理及matlab实现.docx

《整理支持向量机原理及matlab实现.docx》由会员分享,可在线阅读,更多相关《整理支持向量机原理及matlab实现.docx(13页珍藏版)》请在冰豆网上搜索。

整理支持向量机原理及matlab实现.docx

整理支持向量机原理及matlab实现

支持向量机原理及matlab实现

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(支持向量机原理及matlab实现)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为支持向量机原理及matlab实现的全部内容。

1.Introduction

AbaloneAge。

data数据有4177个样本,7个特征,其中rings作为预测标签,也就是年龄。

对样本的一些统计数据如下表所示。

Name

DataType

Meas。

Description

Length

continuous

mm

Longestshellmeasurement

Diameter

continuous

mm

perpendiculartolength

Height

continuous

mm

withmeatinshell

Wholeweight

continuous

grams

wholeabalone

Shuckedweight

continuous

grams

weightofmeat

Visceraweight

continuous

grams

gutweight(afterbleeding)

Shellweight

continuous

grams

afterbeingdried

Rings

integer

Statisticsfornumericdomains:

Length

Diam

Height

Whole

Shucke

Viscera

Shell

Rings

Min

0。

075

0.055

0.000

0。

002

0.001

0.001

0。

002

1

Max

0。

815

0.650

1.130

2.826

1.488

0.760

1。

005

29

Mean

0。

524

0.408

0.140

0.829

0.359

0。

181

0。

239

9.934

SD

0.120

0.099

0。

042

0.490

0。

222

0。

110

0.139

3.224

Correl

0.557

0。

575

0。

557

0。

540

0.421

0。

504

0.628

1.0

 

2.AlgorithmDescription

考虑到数据的可分性,对年龄的预测是一个回归问题,所以采用支持向量机对数据进行回归分析。

一、支持向量机的基本原理

支持向量机(SVM)是Corinna和Vapnik于二十世纪末首先提出的。

支持向量机方法Vapnik—Chervonenkis理论与构造风险最小理论为根底,使离超立体最接近的元素到超平面的间隔最大。

通常超平面不止一个,也就是说支持向量机的目标就是最大化超平面之间的间隔,也就是建立最好的分类超平面,从而来提高学习分类机器的的泛化处理能力。

该方法在解决高维小样本数据、数据的非线性以及解的局部极小点等多个问题中均展示出了很多独有的优点,并进而将其推行使用到了其余相联系的机器学习问题中。

支持向量机方法早已被广泛的应用到了肿瘤数据分类等领域的问题研究中。

支持向量机的具体求解过程如下:

(1)设已知样本训练集:

其中,

为特征向量。

(2)选择适当核函数

以及参数

,解决优化问题:

得最优解:

(3)选取

的正分量,计算样本分类阈值:

(4)构造最优判别函数:

支持向量机内积核核函数K的主要种类有:

①线性内核函数

②多项式核函数

③高斯径向基核函数(RBF)

④双曲正切核函数(Sigmoid核函数)

一般地,用SVM做分类预测时必须调整相关参数(特别是惩罚参数

和核函数参数

),这样才可以获得比较满意的预测分类精度,采用CrossValidation的思想可以获取最优的参数,并且有效防止过学习和欠学习状态的产生,从而能够对于测试集合的预测得到较佳的精度。

根据输入数据的线性可分性(线性可分或近似线性可分和线性不可分),可以将支持向量机分为两大类:

非线性支持向量机、线性支持向量机.

(1)线性支持向量机

若要介绍线性支持向量机,首先需要介绍下一个定义:

线性分类器。

A、B是两个不同的类别,需要在其中间加一个分类函数,这样就能够将A、B样本区分开,那么则说这个数据集是线性可分,其所对应的分类器便是线性分类器。

对于二维空间,显然,分类函数可以看成是一条直线。

同理,三维空间里分类函数就是一个平面,忽略空间的维数,分类函数就可以统称为超平面.

(2)非线性支持向量机

从前一小节可以看出来,线性支持向量机是二类分类器。

但是,在现实环境和问题中,往往要解决多类别的分类的问题。

那么,怎么从二类分类器扩充到多类别分类器呢?

就是一个值得思考探寻的方向。

从二类分类器获取多类分类器的方法有很多,但在实际应用中,采用的较多的措施是通过寻找一个合适的非线性转换函数,进而能够使数据从原始的特征空间中映射到新的特征空间中,使得数据在新的特征空间中是线性可分的。

但是,寻找这样的非线性转换函数很难,并且即使能找到,要实现这种非线性的转换也很麻烦.

因此,引入了核函数,它使得甚至可以不必知道变换函数,只要一种核函数满足Mereer定理,它就对应某一变换空间中的内积,然而内积的计算却容易的多。

常用的核函数主要分为四类:

核函数、

核函数、

核函数和

核函数,不同的核函数对应不同的非线性变换函数,最后会形成不同的算法。

这就使得相应的优化问题变成了凸二次规划问题,不会出现传统神经网络陷入局部极值的问题,这是SVM自提出后得到快速发展的重要原因之一。

SVM的优势:

(1)处理解决了样本数据较少的机器学习问题;

(2)提高了学习机的泛化性能;(3)少数支持向量决定了最后的决策函数,因此,某种程度上对高维问题有很好的辅助解决作用,提高了方法的鲁棒性;(4)完善改进了对于非线性数据分类研究的问题;(5)规避了神经网络在结构抉择问题和局部极小值问题.

SVM的劣势:

(1)缺乏对数据缺失的判断能力;

(2)解决非线性数据还没有完善的方案和措施,只能靠慎重的选择核函数来解决。

另一方面,所有传统分类方法中,SVM的分类性能是最好的,所以在本文的对比实验中,从传统分类方法中选择了具有代表性的SVM分类器来进行对比实验。

二、SVM回归的实验步骤

①导入数据,记作X,分别将数据的特征和标签赋值给矩阵matrix和rings,如图所示。

②利用随机数,随机选择70%的样本作为训练集,余下的30%的样本作为测试集,评价模型的好坏应该从训练集和测试集两个方面考虑,使用matlab自带fitrsvm程序,对样本归一化后,训练集进行训练,得到模型Mdl。

③利用训练得到的模型,分别对训练集和测试集进行预测,并计算其与真实值之间的差距,评价指标选择的是均方根误差和平均绝对误差。

其中result_1记录了训练集真实和预测值,result_2记录了测试集真实和预测值,abe1、mse1分别表示训练集平均绝对误差和均方根误差。

④可视化测试集预测与真实年龄的差距。

 

3。

Conclution

支持向量机是一种基于统计学习理论的模式识别方法。

在模式识别等领域获得了广泛的应用。

少数支持向量决定了最后的决策函数,因此,某种程度上对高维问题有很好的辅助解决作用,提高了方法的鲁棒性.

随机选择70%的样本作为训练集,30%的样本作为测试集,平均绝对误差和均方根误差作为模型的评价指标,训练集预测结果与原始数据标签的的平均绝对误差(abe)为1。

5723,均方根误差(mse)为2.2745,测试集平均绝对误差(abe)1。

5671,均方根误差(mse)为2。

3279,说明支持向量机对数据年龄的预测具有较好的结果。

Appendix

Code:

%%清空环境变量

clear

clc

%%导入数据

X=load(’AbaloneAge。

txt');

matrix=X(:

,1:

6);

rings=X(:

,end);

%%

%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_test=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仿真预测

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_trainpredict_1];

result_2=[t_testpredict_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=sqrt(sum(re2.^2)/size(p_test,1))

 

figure

(1)

plot(1:

length(t_test),t_test,'r—*',1:

length(t_test),predict_2,'b:

o’)

gridon

legend('真实值','预测值')

xlabel(’样本编号')

ylabel('age’)

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1