一、EMD优化BP神经网络简介

1 经验模态分解算法
基于经验模态分解(empirical mode decomposition, EMD)的分析方法较多运用于非线性、非平稳信号的分析。在短时交通流预测中,将非线性、非平稳的交通流信号转化为线性、平稳的交通流信号更能反映其物理意义。由于实质是通过特征时间尺度来识别交通流信号中所含的所有振动模态,与其他信号处理方法相比,经验模态分解方法具有直观、间接、自适应等特点。EMD分解方法基于以下假设条件:

  1. 数据至少有2个极值、1个最大值和1个最小值;若没有极值点,只有拐点,再对数据求1次或多次微分便可以得到极值。

  2. 极值点间的时间尺度唯一决定交通流信号随时间变化的趋势。

经EMD处理后的原始交通流信号可根据其自身特点自适应分解为有限个经验模态分量(IMF)和残余量(RES),使原始交通流信号不同时间尺度的局部特征信号包含在各个分量中,进而使非平稳数据平稳化。其中每个IMF须同时满足2个条件[17]:① 在整个时间范围内,函数具有相同数目的局部极值点和过零点,或两者最多相差1个;② 由局部最大值形成的上包络线和局部最小值形成的下包络线的平均值必须为0。其分解过程如下:

步骤1 首先求原始交通流信号X(t)的所有极值点,并用3次样条插值函数拟合出原始交通流信号的上、下包络线e1(t)、e2(t),计算上、下包络线的平均值e(t):

将原信号X(t)与包络线平均值e(t)作差,得到c(t):

步骤2 判断c(t)是否满足IMF的条件,如果满足,将c(t)作为第1个IMF,记为f1(t);如果不满足,则把c(t)当作新的原始交通流信号,重复步骤1,至满足IMF为止。

步骤3 将f1(t)从X(t)中分离出来,再把残余量RESn(t)=X(t)-f1(t)作为新的原始交通流信号,重复上述步骤得到n个IMF,直到X(t)变成一个单调函数时,停止分解,将得到的n个IMF和1个残余量RESn(t)叠加为原始交通流信号X(t):

短时交通流受各种因素的干扰,如自身因素和未知的外界因素,各个因素对交通流的趋势变化起着不同的影响因素,因而交通流是一种典型的非平稳信号。利用EMD分解交通流之后,所得的各分量不仅趋于平稳化,且各个分量更能体现交通流的本性和特质。

2 基于BPNN的预测模型
典型的BPNN是由输入层、隐藏层和输出层组成,其中输入层和隐含层之间通过权值连接,隐含层和输出层则通过阈值相连,其输入层包含n个节点,中间层包含m个节点,输出层为1个节点。在预测过程中,基本执行过程是由输入信息的正向传播和误差的逆向传播2个过程组成,如图1和图2所示。

图1 单神经元结构示意图

图2 神经网络结构示意图
每个神经模型的激活函数为:

其中: θ为阈值;权值ωi的范围为[-1,1];n为输入层神经元数;y为输出层。激活函数为:

神经元训练是反复迭代的过程。使用来自训练数据集的新数据修改权重,误差的总和定义为:

其中yˆ为期望输出值。

模型通过调整权重来减少误差,调整权重的等式为:

其中: η 为学习率;l为迭代次数; ωlij是神经元i和神经元j之间的权重值;∂fj(e)∂e为神经元j的神经激活函数的导数;δi(δi=yi−yˆi)是神经元i的输出值和期望值之间的差值。

传统的BPNN学习算法采用梯度下降法。首先,对神经网络的权值和阈值进行随机初始化,然后利用一部分样本数据进行神经网络模型的训练,以网络输出值与实际值之间的均方误差为标准来调整网络的权值和阈值,当达到设定的误差标准时,即完成网络的训练过程,得到神经网络的初始权值和阈值。该算法的缺点是初始权值和阈值易导致训练结果陷入局部极小值而不是全局最优值,使得网络的预测精度达不到很高的水平。针对该问题,引入差分进化算法对BPNN的参数进行优化,该算法收敛速度快且易实现,能够弥补采用神经网络模型预测短时交通流的不足,提高交通流预测的精度。

二、部分源代码

clc;close all;clear
%%
bp=load('bp.mat');
disp('BP的结果分析')
rmse=sqrt(mean((bp.true_value-bp.predict_value).^2));
disp(['根均方差(RMSE):',num2str(rmse)])mae=mean(abs(bp.true_value-bp.predict_value));
disp(['平均绝对误差(MAE):',num2str(mae)])mape=mean(abs(bp.true_value-bp.predict_value)/bp.true_value);
disp(['平均相对百分误差(MAPE):',num2str(mape*100),'%'])%%
emdbp=load('emd_bp.mat');
disp('EMD-BP的结果分析')
rmse=sqrt(mean((emdbp.true_sum-emdbp.predict_sum).^2));
disp(['根均方差(RMSE):',num2str(rmse)])mae=mean(abs(emdbp.true_sum-emdbp.predict_sum));
disp(['平均绝对误差(MAE):',num2str(mae)])mape=mean(abs(emdbp.true_sum-emdbp.predict_sum)/emdbp.true_sum);
disp(['平均相对百分误差(MAPE):',num2str(mape*100),'%'])figure
plot(bp.true_value,'-*','linewidth',3)
hold on
plot(bp.predict_value,'-s','linewidth',3)
plot(emdbp.predict_sum,'-p','linewidth',3)
legend('实际值','BP预测值','EMD-BP预测值')
grid on
ylabel('汇率最高价')
xlabel('最后136天的最高价')
title('BP VS EMD-BP')

三、运行结果


四、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和DE-BPNN组合优化的短时交通流预测方法[M].重庆理工大学学报(自然科学). 2021,35(12)

【时间序列预测】基于matlab EMD优化BP神经网络汇率预测【含Matlab源码 1742期】相关推荐

  1. 【BP预测】基于布谷鸟算法优化BP神经网络数据回归预测含Matlab源码

    1 简介 锂电池健康状态(SOH)的预测是电动汽车锂电池管理系统的最重要的关键技术之一;传统的误差逆向传播(BP)神经网络容易使权值和阈值陷入局部最优,从而导致预测结果不精确;结合布谷鸟搜索算法(CS ...

  2. 基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测

    基于粒子群优化BP神经网络的预测 采用PSO算法优化bp网络实现预测,源码注释详细,matlab实现,直接运行即可. ID:72100632211160748韩雅涵122

  3. 【ELM分类】基于matlab遗传算法优化ELM神经网络数据分类【含Matlab源码 2138期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[ELM分类]基于matlab遗传算法优化ELM神经网络数据分类[含Matlab源码 2138期] 点击上面蓝色字体,直接付费下载,即可. ...

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

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

  5. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

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

  6. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  7. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  8. 【BP分类】基于鸟群算法优化BP神经网络实现数据分类附matlab代码

    1 简介 ​BSA 算法优化 BP 神经网络的基本思想是: 利 用 BSA 算法的全局搜索能力, 优化 BP 神经网络初始的权值和阈值, 也就是决策变量, 其中每一组决策变量均包含在鸟群个体所处的空间 ...

  9. 【BP数据预测】布谷鸟算法优化BP神经网络数据预测【含Matlab源码 1121期】

    ⛄一.布谷鸟算法简介 布谷鸟算法,英文叫做Cuckoo search (CS algorithm).首先还是同样,介绍一下这个算法的英文含义, Cuckoo是布谷鸟的意思,啥是布谷鸟呢,是一种叫做布谷 ...

  10. 【预测模型-BP分类】基于蝙蝠算法优化BP神经网络实现数据分类附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. Python说“万能钥匙”不可见密码,立马写了个脚本解决了
  2. html选择和按钮间距,html - 想要在按钮之间添加间距
  3. 微服务注册中心如何承载大型系统的千万级访问?
  4. mysql中describe怎么用_MySQL中describe命令的使用方法小结
  5. Scala数组的mkString()方法
  6. php用空格分隔的字符串对比,探讨各种PHP字符串函数的总结分析
  7. Intel Core Enhanced Core架构/微架构/流水线 (1) - 特性概述
  8. java long类型赋值_Java语言编程第22讲——如何理解“Java是强类型语言”
  9. UmiJS介绍--路由(三)
  10. Kali-简易的Linux系统Dos网站压力测试(攻击)
  11. 关于 Linux 中 signal 函数信号处理的讨论
  12. 新知实验室基于腾讯云实时音视频WEB端实验
  13. MCU6050陀螺仪快速入门资料分享
  14. Restful API 接口规范
  15. python研究生导师_导师想要什么样的心理学研究生?
  16. QQ2009SP5和SP6后台会疯狂的访问qqlogo.qq.com:80
  17. 双语矩阵论课程笔记(2)—— 【chapter 1】 Vector Spaces (Linear Spaces)
  18. win7 两台PC网线直连创建家庭组局域网分享文件
  19. 特征重要性计算方法及神经网络的特征重要性
  20. 【数据库原理与SQL Server应用】Part13——数据库设计

热门文章

  1. Quartz-第二篇 使用quartz框架定时推送邮件
  2. 博弈论 -- 巴什博弈
  3. Swift5.1 语言指南(十七) 反初始化
  4. 全网最详细的hive-site.xml配置文件里如何添加达到Hive与HBase的集成,即Hive通过这些参数去连接HBase(图文详解)...
  5. sklearn学习笔记之开始
  6. CUDA: 共享内存与同步
  7. 为什么有int 和integer
  8. 保存/读取图片到数据库
  9. 190729每日一句
  10. 190314每日一句