【MATLAB第12期】基于LSTM长短期记忆网络的多输入多输出回归预测模型思路框架,含滑动窗口, 预测未来,单步预测与多步预测对比,多步预测步数对预测结果影响分析

2023-11-08

【MATLAB第12期】基于LSTM(RNN作为对比)长短期记忆网络的多输入多输出回归预测模型思路框架,含滑动窗口, 预测未来,单步预测与多步预测对比,多步预测步数对预测结果影响分析

更新:2022.11.5更新RNN模型,预测结果附后

一、数据说明

本文总共1400个数据 。滑动窗口为12,预测步数为100(预测1301-1400数据). 多步预测值为3 。

训练集输入样本数据格式: 128612 // 128612 输入 1286 *3输出
即: 样本1: 1-12 个数据 → 预测 13-15
样本2:2-13 个数据 →预测 14-16
样本1286:1286-1297 个数据 →预测1298:1300

测试集输入样本格式 10012 // 10012 输入 100*3输出
即: 样本1: 1289-1300 个数据 → 预测 1301-1303
样本2:1290-1301 个数据 → 预测 1302-1304
样本100:1388-1399 个数据 → 预测 1400-1402

%% 建立神经网络层
layers = [
    sequenceInputLayer(1,"Name","input")             % 输入特征数
    lstmLayer(20,"Name","lstm",'OutputMode','last')  % 隐藏单元
    dropoutLayer(0.1,"Name","drop")                  % 遗忘门
    fullyConnectedLayer(duobuyuce,"Name","fc")       % 全连接层
    regressionLayer("Name","regressionputput")];     % 回归输出
%% 定义训练参数
options = trainingOptions('adam', ...
    'MaxEpochs',200, ...                             % 迭代轮数
    'GradientThreshold',1, ...                       % 梯度阈值
    'InitialLearnRate',0.01, ...                     % 学习率
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',125, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',0, ...
    'MiniBatchSize',32,...                          % BatchSize批数量
    'Plots','training-progress');

二、多步预测分析

研究多步预测分别为1 / 2 /3时对应的预测效果
(解释说明:若为1时,前12个数据预测后第13步数据;若为2时,前12个数据预测后第14步数据;若为3时,前12个数据预测后第15步数据)

**单步逐步预测:**YPred_1:取测试集预测结果中,100个样本中每个样本分别预测的第一个值即 (1289-1399)→1301-1400(第100次预测时,样本100:1388-1399 个数据 → 预测 1400)

**双步逐步预测:**YPred_2:取测试集预测结果中,100个样本中每个样本分别预测的第二个值即 (1289-1399)→1302-1401(删去预测的第1401值) +YPred_1预测的第一个值 1301(第100次预测时,样本100:1388-1399 个数据 → 预测 1401)

**三步逐步预测:**YPred_3:取测试集预测结果中,100个样本中每个样本分别预测的第三个值即(1289-1399)→ 1303-1402 (删去预测的第1401-1402值)+YPred_1预测的前两个值 1301-1302(第100次预测时,样本100:1388-1399 个数据 → 预测 1402)

三、预测结果分析

YPred_1预测结果
MAE = 0.0659
RMSE = 0.0813
MAPE = 0.0073
R = 0.9779

在这里插入图片描述
用训练集最后的12个值预测未来100个值

YPred_2预测结果
MAE = 0.1013
RMSE = 0.1246
MAPE = 0.0112
R = 0.9483

在这里插入图片描述
用训练集最后的12个值预测未来100个值

YPred_3预测结果
MAE = 0.1452
RMSE = 0.1770
MAPE = 0.0161
R = 0.8956


在这里插入图片描述

四、结论

通过以上可以看出, 单步预测效果要比多步(间隔)预测好。

五、预测未来思路

*(目前这部分源码还没有案例,后期会更新)
*
我们可以增大多步预测数值,来预测未来结果 ,如前面所说 ,多步预测参数为3,滑动窗口为12时,可以通过输入1388-1399预测1400-1402 。那么输入1389-1400就可以预测到1403数据了 。

有两种思路:

第一种思路预测结果会较差,即用未来预测结果预测未来 ,即我用1390-1401(此时1401为预测结果)预测1402-1404, 1391-1402预测1403-1404…… 这种思路缺点是会造成误差积累, 影响数据特征处理,最后会逐步趋于一条直线。

第二种思路预测结果,即调大多步预测值,一般适合数据量足够,且呈周期性变化,且数据趋势没有明显异常情况。如要预测未来20个值,除了调整滑动窗口,还可以增大多步预测值,如滑动窗口保持不变,多步预测设置为10 ,即我用1389-1400预测 1401-1420 ,一步到位。
第二种思路优点是短期预测结果会更接近现实,缺点是调参困难,如滑动窗口设置合理性, 以及无法预测超长期数据 ,比如总共1400数据,你想预测未来1000个数据,如果历史数据基本保持一个趋势还好, 但如果数据曲线比较复杂,就会导致训练样本数不够,或者说不具备代表性。

六、RNN预测模型

RNN参数基本与LSTM保持一致
在这里插入图片描述
YPred_1预测结果:
在这里插入图片描述
YPred_2预测结果:
在这里插入图片描述
YPred_3预测结果:
在这里插入图片描述

七、获取方式

后台私信回复“12期”可获取下载方式
有偿望理解。
后续将在此链接永久更新预测未来的案例代码,以及自己调试参数的心得,拭目以待吧!
如果觉得本文对你有帮助的话,麻烦点个关注收藏,后期会出视频操作,对数据处理这块儿进行讲解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MATLAB第12期】基于LSTM长短期记忆网络的多输入多输出回归预测模型思路框架,含滑动窗口, 预测未来,单步预测与多步预测对比,多步预测步数对预测结果影响分析 的相关文章

  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • Tensorflow 的 LSTM 输入

    I m trying to create an LSTM network in Tensorflow and I m lost in terminology basics I have n time series examples so X
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 定义自定义 Mupad 程序的一般相对搜索路径

    假设我有一个 mupad 笔记本myMupadNotebook mn在路径上 C projectFolder ABC abc 它调用程序MyMupadProcedure mu它位于 C DEF GHI 现在我有一个 Matlab 脚本mai
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • getappdata 在 MATLAB 中返回空矩阵

    我有一段代码 我在其中使用setappdata然后我使用以下方式调用数据getappdata即使它不为空 它也会返回一个空矩阵 我的一段简化代码如下 function edit1 Callback hObject eventdata han
  • Caffe 的 LSTM 模块

    有谁知道 Caffe 是否有一个不错的 LSTM 模块 我从 russel91 的 github 帐户中找到了一个 但显然包含示例和解释的网页消失了 以前是http apollo deepmatter io http apollo deep
  • 将 Pytorch LSTM 的状态参数转换为 Keras LSTM

    我试图将现有的经过训练的 PyTorch 模型移植到 Keras 中 在移植过程中 我陷入了LSTM层 LSTM 网络的 Keras 实现似乎具有三种状态类型的状态矩阵 而 Pytorch 实现则具有四种状态矩阵 例如 对于hidden l
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • 以 2 为底的矩阵对数

    Logm 取矩阵对数 并且log2 取矩阵每个元素以 2 为底的对数 我正在尝试计算冯 诺依曼熵 它涉及以 2 为底的矩阵对数 我该怎么做呢 如果将 以 2 为底 的矩阵指数定义为B expm log 2 A 或者如果您类似地通过特征分解直
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • MATLAB:将当前文件夹设置为脚本位置

    我在不同的文件夹中有一些脚本和数据 我使用addpath和相对路径经常 我的问题是 只有当我的当前文件夹是我执行的脚本所在的位置时 这才有效 例如 如果我执行添加路径 X 的脚本 A 然后执行位于路径 X 中的脚本 B 则 Matlab 不

随机推荐

  • 地平线 AI 芯片工具链 - 03 自定义模型转换

    地平线 AI 芯片工具链 03 自定义模型转换 1 前提条件 2 文件目录 3 模型可视化 4 模型校验 5 模型编译 1 前提条件 地平线 AI 芯片工具链 01 配置安装 待转换模型 onnx 模型 其他类型可转为 onnx 模型 2
  • springboot项目如何开启热部署

    1 添加依赖
  • bert简单介绍和实践

    bert模型是Google在2018年10月发布的语言表示模型 在NLP领域横扫了11项任务的最优结果 可以说是现今最近NLP中最重要的突破 Bert模型的全称是Bidirectional Encoder Representations f
  • Scala下载及IDEA安装Scala插件(保姆级教程超详细)

    一 Scala的下载与安装 Scala语言可以在Windows Linux Mac OS等系统上编译运行 由于Scala是运行在JVM平台上的 所以安装Scala之前必须配置好JDK环境 JDK版本要求不低于1 5 本博客为基于Window
  • 使用Python批量修改文件名

    使用os rename fold newfilename 对文件重命名 coding utf 8 import os filename list os listdir for filename in filename list str re
  • 防火墙简介

    1 什么是防火墙 防火墙也被称为防护墙 它是一种位于内部网络与外部网络之间的网络安全系统 通常 防火墙可以保护内部 私有局域网免受外部攻击 并防止重要数据泄露 它实际上是一种隔离技术 在没有防火墙的情况下 路由器会在内部网络和外部网络之间盲
  • Free MyBatis plugin插件搜不到

    Free MyBatis plugin IntelliJ IDEs Plugin Marketplacehttps plugins jetbrains com plugin 8321 free mybatis plugin versions
  • AXIS2+Myeclipse 开发 Webservices

    一 准备工作 1 安装JDK 我使用的是版本是JDK1 6 下载地址 http java sun com javase downloads index jsp 下载那个rpm的bin包 即jdk 6u1 linux i586 rpm bin
  • 域名与服务器如何绑定?

    新手如何快速搭建自己的云服务器 来源 https www cnblogs com yspace p 10050452 html 相信很多小白对于服务器这个概念可能理解得很模糊 其实服务器说白了就是一台供你远端使用且可以一直开机的电脑而已 说
  • es设置数据备份--新建仓库

    前言 设置es备份首先要新建仓库 然后在kibana中配置 备份策略 多长时间备份一次等 存储库的安装 创建存储库 必须先注册快照存储库 才能执行快照和还原的操作 如果多个集群同时注册同一个快照存储库 只有一个可以有写权限 其余集群设置为r
  • centos6.5 MySQL安全模式修改Root 密码

    错误情况描述 mysql u root p ERROR 1045 28000 Access denied for user root localhost using password YES 解决办法 第一步 关闭MySQL服务 servi
  • 使用Python对Excel文件进行处理的小技巧

    Excel文件是一个常用的电子表格文件格式 它可以包含大量的数据和公式 Python有很多库可以用来处理Excel文件 下面介绍其中一些常用的库和技巧 目录 1 使用pandas库读取Excel文件 2 使用openpyxl库进行Excel
  • 内存管理分配,连续分配、分页存储、分段存储、段页式

    目录 1 连续分配管理 1 1 固定分区分配 1 2 动态分区分配 2 非连续分配方式 2 1 基本分页式内存分配管理 2 1 1 基本分页式内存思想与方法 2 1 2 进程逻辑地址与内存物理地址如何转换 2 1 3 页面在内存中的起始地址
  • typescript对与axios的封装

    import Modal message from antd import axios AxiosError AxiosRequestConfig AxiosResponse from axios import AdminConfig fr
  • 一篇搞懂java、javac版本不匹配发生的原因

    问题描述 当我们使用IDE或cmd进行java编译时 有时会发生这样的错误 Error A JNI error has occurred please check your installation and try again 异常部分描述
  • 前端面试的性能优化部分(6)每天10个小知识点

    目录 系列文章目录 前端面试的性能优化部分 1 每天10个小知识点 前端面试的性能优化部分 2 每天10个小知识点 前端面试的性能优化部分 3 每天10个小知识点 前端面试的性能优化部分 4 每天10个小知识点 前端面试的性能优化部分 5
  • sql-libs——less5(盲注)

    首先打开页面 输入 id 1 发现没有任何数据爆出这时把ID换成一个不存在数据 1试一下 发现连 you are in 都没有了 这就是典型的盲注 正确时显示you are in 不正确时什么也不显示 http 192 168 0 5 90
  • Wolfram Mathematica 动手实践

    特点 Mathematica 的介绍 目标是提供介绍 Mathematica 广度的实践经验 重点是易用性 内容 完整概述 基础知识 Mathematica 中的示例项目 输入和输出 文字处理和排版 幻灯片演示 Wolfram 语言基础 使
  • QT信号槽失效的原因

    转载自 https blog csdn net luolaihua2018 article details 110388411 信号槽失效的原因 用Qt进行信号与信号槽连接后 会出现信号槽不响应信号的情况 原因可能是以下的情况 1 类没有声
  • 【MATLAB第12期】基于LSTM长短期记忆网络的多输入多输出回归预测模型思路框架,含滑动窗口, 预测未来,单步预测与多步预测对比,多步预测步数对预测结果影响分析

    MATLAB第12期 基于LSTM RNN作为对比 长短期记忆网络的多输入多输出回归预测模型思路框架 含滑动窗口 预测未来 单步预测与多步预测对比 多步预测步数对预测结果影响分析 更新 2022 11 5更新RNN模型 预测结果附后 一 数