matlab解决svr代码
更新时间:2024-01-02 13:01:02 阅读量: 教育文库 文档下载
多元线性回归和BP神经网络及决策向量机之间的比较,个人理解:
多元线性回归:就是多个属性的线性组合,在组合时,通过不断调节每个属性的权重来使多元线性回归函数更多的适用于多个样本。
BP神经网络:通过使用最快速下降法,通过反向传播来不断调整网络中的权值和阈值,使网络的误差平方和最小。 决策向量机:它仍是对每个样本操作,使得所有样本距离最终生成的拟合曲线的间隔最小化。 算法比较:
pmm1BP目标函数: J?(?j)22j?1j
?yd权值调整:
k?1?wij????Jk?1?wij决策向量机目标函数:min1/2w^2
支持向量机(Support vector machines,SVM)与神经网络类似,都是学习型的机制,但与神经网络不同的是SVM使用的是数学方法和优化技术。
学习效率的比较:
导入数据: File->import data
参数优化常用方法:
[train_pca,test_pca] = pcaForSVM(train_data,test_data,97);//主元分析
[bestCVmse,bestc,bestg,ga_option]=gaSVMcgForRegress(train_label,train_pca); [bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -p 0.01'];
train_label=data(1:50,1); train_data=data(1:50,2:14);
model=svmtrain(train_label,train_data,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01'); test_label=data(51:100,1); test_data=data(51:100,2:14);
[predict_label,mse,dec_value]=svmpredict(test_label,test_data,model); [bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -p 0.01'];
代码整理:
Part1:从核函数的角度出发,当选取不同核函数类型时,模型的效率是否有所提高 1.核函数为RBF核函数时:
优化前:
train_label=data(1:50,1); train_data=data(1:50,2:14);
model=svmtrain(train_label,train_data,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01'); [predict_label,mse,dec_value]=svmpredict(train_label,train_data,model);
%上一行利用自身的值和预测值进行比较,求得模型实际结果和预测结果的均方值 test_label=data(51:100,1); test_data=data(51:100,2:14);
[predict_label,mse,dec_value]=svmpredict(test_label,test_data,model);
优化后:
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data)%优化方法暂定为网格寻优 cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model);
figure;%画图比较预测值和实际值 subplot(2,1,1);
plot(train_label,'-o'); hold on;
plot(ptrain,'r-s'); grid on;
legend('original','predict');
title('Train Set Regression Predict by SVM');
2.核函数为多项式核函数时 train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data); cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -t 1 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse]=svmpredict(train_label,train_data,model); figure;%画图比较预测值和实际值
subplot(2,1,1);
plot(train_label,'-o'); hold on;
plot(ptrain,'r-s'); grid on;
legend('original','predict');
title('Train Set Regression Predict by SVM');
Mean squared error = 14505.6 (regression)
Squared correlation coefficient = 0.349393 (regression)
3.核函数为线性乘积0 -- linear: u'*v train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data); cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -t 0 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse]=svmpredict(train_label,train_data,model); figure;%画图比较预测值和实际值 subplot(2,1,1);
plot(train_label,'-o'); hold on;
plot(ptrain,'r-s'); grid on;
legend('original','predict');
title('Train Set Regression Predict by SVM');
Mean squared error = 14537 (regression)
Squared correlation coefficient = 0.389757 (regression)
4.核函数为sigmoid: tanh(gamma*u'*v + coef0) 神经元的非线性作用函数
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data); cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 -t 3 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse]=svmpredict(train_label,train_data,model); figure;%画图比较预测值和实际值 subplot(2,1,1);
plot(train_label,'-o'); hold on;
plot(ptrain,'r-s'); grid on;
legend('original','predict');
title('Train Set Regression Predict by SVM');
Mean squared error = 24326.5 (regression)
Squared correlation coefficient = 0.271859 (regression) 下图为江良学长的测试成本-因素结果
注意:第一部分在建模时仅采用的是前50组数据生成的测试效率-因素模型,当选取的训练集越多(接近100)时,他的效果是越差的,举例说明如下:核函数为RBF
Mean squared error = 20424.8 (regression)
Squared correlation coefficient = 0.527831 (regression)
选取的样本越多,得到的MSE越大(虽然mse增加,但对样本的预测效果肯定会更好,因为随着样本数增加,学习能力肯定提高),而相关系数反而有所提高(接近于1最佳); 问题提出:为什么bestmse =2.3162e+004与实际训练出来的Mean squared error = 20424.8 (regression)相距甚选????
Part2:从参数优化方法选取不同上比较那种参数选取更优 此比较基于RBF核函数而言 1.基于网格寻优方法 代码:
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_data)%优化方法暂定为网格寻优 cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model); 结果: bestmse =
1.5542e+004 bestc = 27.8576 bestg = 0.0039
Mean squared error = 14107.4 (regression)
Squared correlation coefficient = 0.386814 (regression)
2.基于遗传算法寻优
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestCVmse,bestc,bestg,ga_option]=gaSVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model); 结果:
bestCVmse = 1.8944e+004 bestc = 59.5370 bestg = 778.3573 ga_option =
maxgen: 200 sizepop: 20
ggap: 0.9000 cbound: [0 100] gbound: [0 1000] v: 5
Mean squared error = 10426.1 (regression)
Squared correlation coefficient = 0.622133 (regression)
3.基于pso寻优(在这里使用启发式算法PSO来进行参数寻优,用网格划分(grid search)来寻找最佳的参数c和g,虽然采用网格搜索能够找到在CV意义下的最高的分类准确率,即全局最优解,但有时候如果想在更大的范围内寻找最佳的参数c和g会很费时,采用启发式算法就可以不必遍历网格内的所有的参数点,也能找到全局最优解) 代码:
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestCVmse,bestc,bestg,pso_option]=psoSVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model); 结果:
bestCVmse = 1.5761e+004 bestc = 49.4305 bestg = 0.0100 pso_option =
c1: 1.5000 c2: 1.7000 maxgen: 200 sizepop: 20
k: 0.6000 wV: 1 wP: 1 v: 5 popcmax: 100 popcmin: 0.1000 popgmax: 1000 popgmin: 0.0100
Mean squared error = 12480.9 (regression)
Squared correlation coefficient = 0.434221 (regression) 注意:仍是以前50组样本为例
Part3:主元分析
仍然以RBF为核函数,进行主元分析之后参数优化,最终得到MSE 代码:
train_label=data(1:50,1); train_data=data(1:50,2:14); test_label=data(51:100,1); test_data=data(51:100,2:14);
[train_pca,test_pca] = pcaForSVM(train_data,test_data,97);%主元分析 [bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_pca) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 1 -p 0.01']; [ptrain,mse,dec_value]=svmpredict(train_label,train_pca,model); 结果:
Mean squared error = 12555.9 (regression)
Squared correlation coefficient = 0.552186 (regression)
正在阅读:
matlab解决svr代码01-02
发动机原理与汽车理论期末试卷A及答案12-22
PVC_ABS合金耐热机理_张凯舟05-15
建设工程合同管理 - 2012年考试真题 - 2013年版06-10
人教版七年级语文下册一至六单元作文范文及教师点评16篇04-25
第2章 CATIA V5草绘07-28
水平井地质分析软件网络版 操作手册201-09
2015.2.21黄历术语03-28
16.1从永磁体谈起(沪粤)公开课05-22
有机固体废物干法厌氧发酵技术研究综述04-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 代码
- 解决
- matlab
- svr
- 课程设计说明书3
- 2014年广西自治区钦州市中考数学试题含答案
- 2018年新疆中考数学试卷及答案
- 三叶型转子泵厂家十大品牌-上海阳光泵业
- 2011海淀区一模英语试题 - 图文
- 社区治理网上形考答案解析
- 常州市专业技术人员继续教育 低碳经济 考试90分
- 中国电子警察行业市场调研与投资策略研究报告(2014-2019)
- 如何分析所给材料中对立问题的1道经典例题
- 深宫谍影剧情介绍
- PCB板电磁兼容分析(化二点评) - 图文
- 河南省业主大会和业主委员会指导规则
- 2015年江苏省无锡市东林中学七年级下学期数学期末试卷及解析答案
- 电子商务 期末总复习
- SCI论文的三点注意-美辑编译
- 小学语文教师校本研修工作总结
- 中小企业制度建设的工作设想-精品文档
- 2008年小学毕业班模拟考试(之六)
- 泛读UNIT2
- 《计算机基础教程》考试模拟试题