一、EMD及SVM简介

1 引言
时间序列预测是将预测目标的历史数据按照时间的顺序排列成为时间序列,然后分析它随时间的变化趋势,外推预测值。时间序列预测,尤其是非平稳、非线性时间序列的预测在
经济、金融、工业、生物医学等领域中有着重要的应用。目前常用于时间序列预测的有回归模型和神经网络等方法,但是这些传统的单一预测方法难以在信息贫乏和不确定性条件下做出准确有效的预测?,这就使得必须根据时间序列波动趋势变化的规律和特点,找到一个鲁棒性强、预测精度高且实用的预测方法。
经验模式分解(Empirical Mode Decomposition, EMD) 可以根据信号自身的内在特性,将信息自适应地分解到不同的基本模式分量(Intrinsic Mode Function, IMF) 中, 是一种有效的非平稳、非线性信号分析方法。本文基于EMD和支持向量回归(Support Vector Regression, SVR) 方法, 提出一种新的混合智能预测模型,为非平稳、非线性时间序列的预测问题提供了很好的解决方法。纺织材料价格的预测实例充分表明该模型的准确性和有效性。

2 理论基础
2.1 经验模式分解

EMD可将任意信号分解为若干个IMF和一个余项的和34。所谓IMF就是满足如下两个条件的函数或信号:(1) 在整个数据序列中,极值点的数量(包括极大值点和极小值点)与过零
点的数量必须相等,或最多相差不多于一个;(2)任何一点,信号局部极大值确定的上包络线和局部极小值确定的下包络线的均值为零。EMD分解的具体步骤如下:
(1)假设信号为x(t),取其上下包络局部均值组成的序列为m(t),则:
h(t)=x(t)-m(t)(1)
对非线性、非平稳数据而言,一般一次处理不足以形成IMF, 一些非对称波仍然存在。把h(t) 看作待处理数据重复上述操作k次,得到:

(2)当hg(t) 满足IMF的条件时, 就获得了第一个IMF, 记做斤(t)=hg(t)。
(2) 将第一个IMF从信号中分离出来, 得到剩余信号r, () 为:
r(t)=x(t)-f(t) (3)

2.2 支持向量回归
SVR是由Vapnik等人于1995年提出的闯。该算法具有小样本学习、全局最优和推广能力强等突出优点,已成功应用于交通流量及风速预测等许多领域,并表现出比多层感知器等传统人工神经网络优越的预测性能。


3 混合智能预测模型
在采用单一SVR进行预测时,相同的时间序列采用不同的核函数会得到差别较大的预测结果。因此本文提出一种基于 EMD 和 SVR 的混合智能预测模型,很好地改善了预测效果。混合智能预测模型的基本计算流程如下:

二、部分源代码

%% 清空环境变量
tic;
close all;
clear;
clc;
format compact;
%% 数据的提取和预处理
tsx=xlsread('001.xlsx','A1:H406');
ts=xlsread('001.xlsx','J1:J406');
ts = ts';
tsx = tsx';
[TS,TSps] = mapminmax(ts,1,2); [TSX,TSXps] = mapminmax(tsx,1,2);
% 对数据进行转置,以符合格式要求
rand('seed',0)
[m n]=sort(rand(1,length(TS)));
m=350;
TSX1 = TSX(:,n(1:m))';
TS1 = TS(:,n(1:m))';
TSX2 = TSX(:,n(m+1:end))';
TS2 = TS(:,n(m+1:end))';%% 选择回归预测分析最佳的SVM参数c&g
kerneltype=1;%kerneltype=0(线性核) 1(多项式核) 2(rbf核函数) 3(sigmoid核函数)
[bestmse,bestc,bestg] = SVMcgForRegress(TS1,TSX1,-4,4,-4,4,3,0.5,0.5,0.05,kerneltype);
disp('打印选择结果');
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg);
disp(str);%% 利用回归预测分析最佳的参数进行SVM网络训练
cmd = ['-c ', num2str(bestc), ' -g ', num2str(bestg) , ' -s 3 -p 0.01 -d 1'];
model = svmtrain(TS1,TSX1,cmd);function [mse,bestc,bestg] = SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep,kerneltype) %v,cstep这些不写的话就是默认值
%
% 利用网格搜索与交叉验证进行核参数与惩罚参数选择
% cmin cmax c的取值范围
% gmin gmax g的取值范围
% v 就是交叉验证参数  一般是5折交叉验证
% cstep gstep 网格取值的步长
% msestep 误差的步长  只是为了最后画等高线图用一用,这样比较好看
% kerneltype=0(线性核) 1(多项式核) 2(rbf核函数) 3(sigmoid核函数)[X,Y] = meshgrid(cmin:cstep:cmax,gmin:gstep:gmax);
[m,n] = size(X);
cg = zeros(m,n);eps = 10^(-4);bestc = 0;
bestg = 0;
mse = Inf;
basenum = 2;
for i = 1:m  %每更改一组c g值,跑5折交叉验证  最终选择精度最高的那一组c g for j = 1:ncmd = ['-v ',num2str(v),' -c ',num2str( basenum^X(i,j) ),' -g ',num2str( basenum^Y(i,j) ),' -s 3 -t ',num2str(kerneltype),' -p 0.1 -d 1'];cg(i,j) = svmtrain(train_label, train, cmd);if cg(i,j) < msemse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);endif abs( cg(i,j)-mse )<=eps && bestc > basenum^X(i,j)mse = cg(i,j);bestc = basenum^X(i,j);bestg = basenum^Y(i,j);end

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.
[6]王巍,赵宏,梁朝晖,马涛.基于EMD和SVR的混合智能预测模型及实证研究[J].计算机工程与应用. 2012,48(04)

【优化预测】基于matlab EMD优化SVR数据预测【含Matlab源码 1403期】相关推荐

  1. 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】

    一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...

  2. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  5. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  6. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  7. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  8. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  9. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  10. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

最新文章

  1. Android PullToZoomListView实现放大回弹效果
  2. 服务幂等以及常用实现方式
  3. boost::type_erasure模块实现了支持多个签名的 Boost.Function 扩展
  4. c++ 预处理命令 #define用法
  5. P2469 [SDOI2010]星际竞速
  6. HTML5怎样设置站点,我是怎样让网站用上HTML5 Manifest
  7. DVWA系列之23 medium级别上传漏洞分析与利用
  8. Vb6 Modbus TCP通讯示例源代码
  9. ubuntu中耳机声音小的解决方案
  10. xpath 爬取51job,存于excel
  11. ubuntu下载速度慢的解决办法--修改下载源
  12. php工作p7,广告服务端PHP高级工程师(P6-P7)职位描述与岗位职责任职要求
  13. Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)
  14. 记一次服务后端502 Bad Gateway解决办法
  15. python第三方包国内镜像网址
  16. cad缩小_CAD图纸输出或打印后的尺寸为什么比实际小几毫米?【AutoCAD教程】
  17. 《这个杀手不太冷》豆瓣9.4评分的电影
  18. 使用frp内网穿透,内网穿透远程控制windows电脑,p2p远程桌面
  19. jsp初学者必备知识
  20. Icons8 Pichon Crack,超链接或快捷方式的功能

热门文章

  1. CF1151div2(Round 553)
  2. webpack插件配置(二)- HtmlWebpackPlugin
  3. 详解JavaScript中的Url编码/解码,表单提交中网址编码
  4. Python迭代器(Iterator)
  5. 《图解算法》第10章之 k最近邻算法
  6. HTC vive手柄在三维空间画线
  7. 结构体做函数参数的进阶:嵌套一二级指针
  8. Unity让物体以弧线的形式运动到规定的坐标
  9. 181007扇贝有道每日一句
  10. Atitit 存储引擎核心技术 总结目录1. 表的存储有三个文件:结构+数据+索引 12. 页式管理