【SVR预测】基于matlab EMD优化SVR预测【含Matlab源码 1403期】
⛄一、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:n
cmd = [‘-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]王巍,赵宏,梁朝晖,马涛.基于EMD和SVR的混合智能预测模型及实证研究[J].计算机工程与应用. 2012,48(04)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
【SVR预测】基于matlab EMD优化SVR预测【含Matlab源码 1403期】相关推荐
- 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】
一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...
- 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】
一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...
- 【Matlab心音信号】EMD心音信号特征提取【含GUI源码 1735期】
一.代码运行视频(哔哩哔哩) [Matlab心音信号]EMD心音信号特征提取[含GUI源码 1735期] 二.matlab版本及参考文献 1 matlab版本 2014a *2 参考文献 [1] 沈再 ...
- 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】
一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...
- 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】
一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...
- 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】
一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
- 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】
一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...
- 【Matlab语音分析】语音信号分析【含GUI源码 1718期】
一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...
- 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】
一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...
最新文章
- HTML5与CSS3权威指南之CSS3学习记录
- 记账本小程序7天开发记录(第二天)
- html网页 table布局实例,HTML用Table表格对网页布局
- php连接excel表格数据类型,TP5 中使用PHPExcel 导出导入数据到excel表格
- 雷林鹏分享:jQuery EasyUI 拖放 - 基本的拖动和放置
- EasyMock的原理及使用方法
- “父亲项目”走进澳洲校园 助父子建立联系
- 23种设计模式(七)对象创建之工厂方法
- 使用reportlab生成条码
- CCCardinalSplineBy概念
- Word页眉本来有但不可见 前后相连时
- lammps教程:minimize命令使用详解
- 如何选择物业管理软件,五大误区需要避免
- 二叉树的前中后序遍历(非递归实现)
- widnows下lua开发环境luadist LuaRocks搭建
- [虚树模板] 洛谷P2495 消耗战
- 如何做公司网站设计,有哪些步骤?
- HTML——前端实时可视化开发工具
- 躁!DJ 风格 Java 桌面音乐播放器
- oracle:sql 判断时间段重叠
热门文章
- 信息系统项目管理师速记 - 十大知识领域
- 交换原理-QOS TD与WRED
- Redis学习之zscore命令
- 区块链BaaS云服务(23)网易天玄区块链
- android FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
- 数据库领域中最常用的逻辑模型有哪些?请比较各种模型的优缺点并详述。
- unity之Matrix4x4.TRS(Vector3 pos, Quaternion q, Vector3 s)的原理
- ZYNQ裸机LWIP双网口实现
- 华硕主板禁用UEFI安全启动(Disable Secure Boot for ASUS Motherboard)
- 神经网络之梯度下降法及其实现