数学建模优秀讲座之支持向量机
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mse
1 n
n
f xi
i1
yi 2
n
n
n
(n xiyi xi • yi )2
r2
i1
i1
i1
n
n i1
xi2
n i1
xi
2
n
n i1
yi2
n i1
yi
2
2015年2月3日
回归列子
X=-1:0.1:1
Y=-x.^2;
0
-0.1
-0.2
-0.3
-0.4
-0.5
[predctlabel,accuracy]=svmpredict(test datalabel,testdata,model);
2015年2月3日
data = 176 70 180 80 161 45 163 47 label = 1 1 -1 -1 testdata = 190 85 161 50 testdatalabel = 1 1 Accuracy = 50% (1/2) (classification) (无用) predctlabel = 1 -1 accuracy = 50 2015年2月3日 NaN
-0.6
-0.7
-0.8
-0.9
-1
-1 -0.8 -0.6 -0.4 -0.2
0
0.2 0.4 0.6 0.8
1
2015年2月3日
model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');
[py,mse] = svmpredict(y,x,model); figure; subplot(3,1,1) plot(x,y,'o'); title(‘原始数据'); hold on; plot(x,py,'r*'); subplot(3,1,2) plot(x,py,'r*');
► data=[178 70;180 80;161 45;163 47]; ► 在label中存入男女的类别(1,-1) ► label=[1;1;-1;-1]; ► 上面的data矩阵中,行数4代表有4个样本,列数2表示属
性(维数)有两个,label就是分类的类别。
2015年2月3日
►有了上面的属性矩阵data,和分类矩阵 label就可以利用libsvm建立分类模型了。
输出model
model= Parameters: [5x1 double]
nr_class: 2 totalSV: 4 rho: -0.1835 Label: [2x1 double] ProbA: [] ProbB: [] nSV: [2x1 double] sv_coef: [4x1 double] SVs: [4x2 double]
►train_label:分类矩阵,n*1,n表示样本数, 数据类型double
►Options:参数选项 ►model:训练得到的分类模型,是一个结构体
2015年2月3日
Svmpredict调用格式
[predict_label,accuracy/mse,dec_value]= svmpredict(test_label,test_data,model) 输入: ►test_data:预测的数据N*m,N表示预测样本数,
4个支持向量。 Model.rho是决策函数中的常数项的相反数
(-b)
2015年2月3日
注意事项:
►上面我们将男生定义为1,女生定义为-1, 那么定义成别的数有影响吗? 答曰:无影响,但定义必须是数值类型, 不可以是字符类型的。
►在预测新来的同学是一男一女,对结果的 影响!反应在程序里是testdatalabel=[1;1]; 答曰:本来就应该没有这个矩阵,否则还 预测什么?当有些时候我们想测试分类器 的效果,就需要这个矩阵。
2015年2月3日
model.Parameters
>> model.Parameters
ans =
0
2.0000
3.0000
0.1000
0 model.Parameters参数意义从上到下依次为: -s svm类型:svm设置类型(默认0) -t 核函数类型:核函数设置类型(默认2,RBF核函数) -d degree :核函数中的degree设置(针对多项式
2015年2月3日
结果分析
Mean squared error = 9.52768e-005 (regression) Squared correlation coefficient = 0.999184 (regression) 真实数据 testy = -1.2100 -1.4400 -1.6900 Mean squared error = 0.0976693 (regression) Squared correlation coefficient = 0.914542 (regression) 预测数据 ptesty = -1.1087 -1.1913 -1.2200 Elapsed time is 0.082926 seconds.
►model=svmtrain(label,data,'-s 0 -t 2 -c 1 -g 0.1')
分类预测:该班又转来两个新学生; 身高190cm,体重85kg 身高161cm,体重50kg
通过建立的model就可以预测这两人的性别 testdata=[190 85 ;161 50];
►testdatalabel=[1;1]; 然后利用libsvm来预测新来的同学 性别
►dec_value:决策值
2015年2月3日
分类例子
► 一个班级有两个男生(男生1,男生2),两个女生(女生 1,女生2)。 男生1身高:178cm体重70kg 男生2身高:180cm体重80kg 女生1身高:161cm体重45kg 女生2身高:163cm体重47kg
► 将男生定义为1,女生定义为-1,并将上面的数据放入矩 阵data中
2015年2月3日
练习
题目(蠓虫).pdf
2015年2月3日
Libsvm回归
在回归中,svmtrain函数和svmpredict函数的调用 格式大部分相同,不同在svmpredict输出:
[predict_label,accuracy/mse,dec_value]= svmpredict(test_label,test_data,model) Predict_label:预测属性矩阵,N*1,N表示预测
2015年2月3日
预测
testx = [1.1;1.2;1.3]; display(‘真实数据') testy = -testx.^2 [ptesty,tmse] = svmpredict(testy,testx,model); display(‘预测数据'); subplot(3,1,3); plot(testx,ptesty,'r*'); save deng.mat model
►Svm优点: ►1.通用性 ►2.鲁棒性(是指控制系统在一定(结构,大小)的参数摄动下,维
持其它某些性能的特性)
►3.有效性 ►4.计算简单 ►5.理论完善(统计学)
2015年2月3日
Libsvm工具箱
►Libsvm工具箱由台湾大学林智仁教授开发 设计的一款简单、易于使用和快速有效的 SVM分类与回归的软件包 。
►主要函数是svmtrain和svmpredict.
2015年2月3日
Svmtrain调用格式
►model=svmtrain(train_label,train_data,’op tions’);
►train_data:分类数据矩阵n*m,n表示样本数, m表示属性数目(维数),数据类型double
/rbf/sigmod核函数) -r coef0: 核函数中的coef0设置(针对多项式/sigmoid核 20函15年数2月)3日(默认0)
bel model.nr_class
>> bel ans =
1 -1 >> model.nr_class ans = 2 bel表示数据集中类别的标签都有什么,这 里是-1,1; model.nr_class表示数据集中有多少类别,这里是二 分类
2015年2月3日
目录
►Svm简介 ►Libsvm工具箱 ►Svm原理
2015年2月3日
Svm简介
►Svm是解决高维数据匮乏分类和回归问题 的(目前就只知道svm解决分类和回归)
支持向量
2015年2月3日
►Svm由Vapnik首先20世纪90年代提出。
►Svm主要思想:找到一个超平面,使得它能够尽 可能多的将两类数据点正确地分开,同时使分开 的两类数据点距离分类面最远。
2015年2月3日
►model.ProbA model.ProbB 关于这两个参数这里不做介绍,使用-b参数
才能用到,用于概率估计
►model.sv_coef model.SVs model.rho Model.sv_coef是一个4*1的矩阵,承装的是
4个支持向量在决策函数中的系数; model.SVs是一个4*2的稀疏矩阵,承装的是
样本数,数据类型double Accuracy:一个3*1的列向量,第一个数表示分类准
确率(分类问题使用),第二个数mse(均方根 误差,回归问题使用,趋近于0),第三个数表示 平方相关系数(回归问题使用,趋近于1); Dec_value:决策值
2015年2月3日
Mse(均方根误差) r^2相关系数
modelnrclass表示数据集中有多少类别这里是二分类modelprobamodelprobb关于这两个参数这里不做介绍使用b参数才能用到用于概率估计modelsvcoefmodelsvsmodelrhomodelsvcoef是一个41的矩阵承装的是4个支持向量在决策函数中的系数
支持支向持量向量机机 (svm) Support Vector Machines.SVM
2015年2月3日
Libsvm主要参数说明
► -t 核函数类型:核函数设置类型(默仁2)
- 0 线性核函数:(u’*v)
-1 -2
多项式核函数
ห้องสมุดไป่ตู้
RBF核函数
u v 2
e 22
-3 sigmold核函数
-4 预定义核函数(指定核矩阵)
-s 0(分类常用)
-s 3 (回归常用)
…………….
2015年2月3日
Svm原理(线性可分)
看文章31第三十一章 支持向量机.pdf 线性不可分? Matlab运用中的小技巧分享 1,设置 2,F5 3,F9
2015年2月3日
m表示属性数目(维数),数据类型为double ►test_label:预测的类别N*1,N表示样本数,数据
类型为double(注意) ►model:模型
2015年2月3日
输出
►predict_label:预测属性矩阵,N*1,N表 示预测样本数,数据类型double
►accuracy:一个3*1的列向量,第一个数表 示分类准确率(分类问题使用),第二个 数mse(回归问题使用),第三个数表示 平方相关系数(回归问题使用);