基于双向长短时记忆神经网络(Bi-LSTM)的数据回归预测

代码原理

1.循环神经网络

循环神经网络(Recurrent Neural Network, RNN) 是深度学习领域一类具有内部自连接的神经网络能够学习复杂的矢量到矢量的映射。一个简单的循环神经网络结构,其结构包含三部分,分别为输入层、隐藏层和输出层,如图1所示。

图1 循环神经网络结构

RNN虽然能够处理时间序列数据,但是大量的实践也表明,标准的RNN往往很难实现信息的长期保存。

2 .长短期记忆神经网络

1997 年Hochreiter 等[75]提出长短期记忆 (Long-Short Time Memory,LSTM)网络,该网络特别适用于处理前后存在关联的超长数据序列,例如长期实测温度序列和长期实测位移序列等。LSTM神经网络包含输入层、LSTM层(隐含层)和输出层,其神经网络的结构如图2所示。

图2 LSTM神经网络结构

LSTM层作为神经网络结构的核心,由多个LSTM单元串联而成,如图2所示,每个LSTM单元包含三个关键功能模块:遗忘门、更新门和输出门。LSTM单元的计算过程如式(1)至式(6)所示。

3 .双向长短期记忆神经网络

LSTM网络虽然能防止RNN网络的梯度消失或者爆炸情况的出现,但是神经网络训练中,LSTM网络的单向传播结构限制了对时序数据的充分利用。为了克服这一限制,有学者对 LSTM 神经网络的结构进行了改进,并提出了双向长短时记忆(Bi-directional Long Short-Term Memory, BiLSTM)神经网络[76]以同时考虑当前时刻前后输入对当前输出的影响。Bi-LSTM不仅继承了LSTM对时序特征数据处理的优势,同时具备更强的鲁棒性和泛化能力。相较于传统的单向LSTM,BiLSTM的双向结构能够有效地提高数据利用率,弥补了传统LSTM在处理时序数据时的局限性。因此,在时序数据处理领域,BiLSTM通常表现更为高效和智能,其网络结构如图3所示。

图3 BiLSTM神经网络结构

综上所述, BiLSTM网络通过双向的LSTM结构和时间流向的双向性质,进一步整合了未来数据信息。这种双向结构不仅充分发挥了LSTM在时序建模方面的优势,同时也弥补了单向LSTM无法利用上下文信息的不足。

3 .双向长短期记忆神经网络(Bi-LSTM)的数据回归预测简单步骤

基于双向长短时记忆神经网络(Bi-LSTM)的数据回归预测是一种常见的机器学习方法,特别适用于处理时间序列数据或具有时间依赖性的数据预测任务。Bi-LSTM结合了LSTM(长短时记忆网络)的能力,能够捕捉时间序列中复杂的长期依赖关系。在数据回归预测中,Bi-LSTM的工作原理通常如下:

  1. 双向结构:Bi-LSTM包含两个方向的LSTM网络,分别沿时间序列正向和反向进行处理。这使得网络可以同时从过去和未来的信息中学习,更全面地理解时间序列的模式。

  2. 特征提取与学习:Bi-LSTM通过学习输入数据中的特征和模式,自动提取与预测任务相关的重要特征。LSTM单元内部的门控机制有助于处理和记忆长期依赖性,使得网络能够有效地处理时间序列中的数据。

  3. 回归预测:通过在训练过程中优化模型参数,Bi-LSTM可以预测时间序列中下一个时间步的数值,或者进行更长期的预测。这使得它在股票市场预测、天气预报、销售预测等领域中有广泛的应用。

  4. 调优与应用:在实际应用中,调整Bi-LSTM的网络结构、超参数和训练策略对预测性能至关重要。通常需要通过交叉验证和调参技术来优化模型,以达到最佳的预测效果。

部分代码

%%  清空环境变量
warning off             % 关闭报警信息
close all               % 关闭开启的图窗
clear                   % 清空变量
clc  
%% 导入数据
data =  readmatrix('回归数据集.xlsx');
data = data(:,1:14);
res=data(randperm(size(data,1)),:);    %此行代码用于打乱原始样本,使训练集测试集随机被抽取,有助于更新预测结果。
num_samples = size(res,1);   %样本个数
% 训练集和测试集划分
outdim = 1;                                  % 最后一列为输出
num_size = 0.7;                              % 训练集占数据集比例
num_train_s = round(num_size * num_samples); % 训练集样本个数
f_ = size(res, 2) - outdim;                  % 输入特征维度
P_train = res(1: num_train_s, 1: f_)';
T_train = res(1: num_train_s, f_ + 1: end)';
M = size(P_train, 2);
P_test = res(num_train_s + 1: end, 1: f_)';
T_test = res(num_train_s + 1: end, f_ + 1: end)';
N = size(P_test, 2);
%  数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
p_test = mapminmax('apply', P_test, ps_input);
[t_train, ps_output] = mapminmax(T_train, 0, 1);
t_test = mapminmax('apply', T_test, ps_output);
%  格式转换
for i = 1 : M 
    vp_train{i, 1} = p_train(:, i);
    vt_train{i, 1} = t_train(:, i);
end
for i = 1 : N 
    vp_test{i, 1} = p_test(:, i);
    vt_test{i, 1} = t_test(:, i);
end
%  创建BiLSTM网络,
layers = [ ...
    sequenceInputLayer(f_)              % 输入层
    bilstmLayer(35)                      
    reluLayer                           
    fullyConnectedLayer(outdim)         % 回归层
    regressionLayer];

代码效果图

获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复数据回归预测本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/799790.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

元器件基础学习笔记——磁珠

一、磁珠的作用及构造 1.1 磁珠的作用 磁珠是一种用于抑制高频噪声的被动电子组件,通常由铁氧体材料制成,这种材料具有高电阻率和高磁导率,使其能够在高频下有效地将干扰信号以热能的形式消耗掉。在电路设计中,磁珠被广泛用于信号…

红豆Cat 1开源|项目四: 从0-1设计一款TCP版本DTU产品的软硬件全过程

TCP版本DTU产品项目概述 远程终端单元( Remote Terminal Unit,DTU),一种针对通信距离较长和工业现场环境恶劣而设计的具有模块化结构的、特殊的计算机测控单元,它将末端检测仪表和执行机构与远程控制中心相连接。 产品定义&功能描述 硬件…

同时用到,网页,java程序,数据库的web小应用

具体实现功能:通过网页传输添加用户的请求,需要通过JDBC来向 MySql 添加一个用户数据 第一步,部署所有需要用到的工具 IDEA(2021.1),Tomcat(9或10),谷歌浏览器,MySql,jdk(17) 第二步,创建java项目,提前部…

Celery 是一个简单、灵活且可靠的分布式系统——python库

目录 引言 Celery 是什么? 安装 Celery 配置 Celery 创建任务 运行 Celery Worker 调用任务 更多示例 示例 1:发送电子邮件 示例 2:图片处理 示例 3:数据处理 结论 引言 今天我们来分享一个超强的 python 库&#xf…

微信小程序下载

首先进入微信网站链接:微信公众平台 (qq.com) 下载开发工具: 下载 / 稳定版更新日志 (qq.com) 下载稳定版

AV1技术学习:Translational Motion Compensation

编码块根据运动矢量在参考帧中找到相应的预测块,如下图所示,当前块的左上角的位置为(x0, y0),在参考帧中找到同样位置(x0, y0)的块,根据运动矢量移动到目标参考块(左上角位置为:(x1, y1))。 AV1…

C语言之带环链表

带环链表是数据结构链表中的一个经典问题,这里我们研究该问题分为两个方向:链表是否带环、返回链表的入环节点。 下面我们通过两个题目来分析带环链表: 1.判断链表是否带环 141. 环形链表 - 力扣(LeetCode) 那么我们…

# Redis 入门到精通(四)-- linux 环境安装 redis

Redis 入门到精通(四)-- linux 环境安装 redis 一、linux 环境安装 redis – 基于 Linux 安装 redis 1、基于 Center 0S7 或者 unbunt-18.04 安装 Redis 1)下载安装包wget http://download.redis.io/releases/redis-?.?.?.tar.gz 如&…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

每日复盘-20240715

20240715 六日涨幅最大: ------1--------300807--------- 天迈科技 五日涨幅最大: ------1--------300807--------- 天迈科技 四日涨幅最大: ------1--------300807--------- 天迈科技 三日涨幅最大: ------1--------300713--------- 英可瑞 二日涨幅最大: ------1--------3007…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域,随着业务逻辑复杂度的提升和系统规模的不断扩大,传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战,组件化开发作为一种高效、灵活的开发模式,受到了越来越多开发者的青睐。本文将结合实践&…

代码随想录训练营第三十六天 1049最后一块石头的重量II 494目标和

第一题: 原题链接:1049. 最后一块石头的重量 II - 力扣(LeetCode) 思路: 首先确认这是一道01背包问题的题目,如何转换:剩下尽可能小的重量,如何剩下呢?跟分割等和子集很…

基于RAG大模型的变电站智慧运维-第十届Nvidia Sky Hackathon参赛作品

第十届Nvidia Sky Hackathon参赛作品 1. 项目说明 变电站是用于变电的设施,主要的作用是将电压转化,使电能在输电线路中能够长距离传输。在电力系统中,变电站起到了极为重要的作用,它可以完成电能的负荷分配、电压的稳定、容错保…

基坑安全:自动化监测系统的革新力量

在日新月异的基坑工程领域,基坑安全自动化监测系统犹如一位守护者,以其独特的优势,为工程的安全与质量保驾护航。该系统集先进的测量仪器、计算机技术与现代传感技术于一体,对基坑的围护结构及周边环境进行全方位、高精度的实时监…

【C++基础】初识C++(1)

目录 一、认识C 1.1 C 相关概念 1.2 C的发展 1.3 C的关键字 1.4 第一个程序 二、命名空间 2.1 namespace的定义 2.2 命名空间的使用 三、C输入和输出 四、缺省函数 五、函数重载 一、认识C 1.1 C 相关概念 1983年,Bjarne Stroustrup在C语⾔的基础上…

内网安全:权限维持的各种姿势

1.Linux权限维持 2.Windows权限维持 目录: 一.Linux权限维持: 1.webshell: 2.定时任务: 3.SUID后门: 4.SSH Key免密登录后门: 5.添加用户后门: 二.Windows权限维持 1.计划任务后门&…

NetSuite RPA技术实践

近期有同学提出一个需求。 “需要存取的報表是存貨分類帳(stock ledger),將查到的各個[Item|Location]作為一組key,分別將報表中的「期末庫存量」「期末平均成本」「期末庫存量價值」這三欄的值,在每個月月底的時候自動將這個報表的這三欄數…

rollup打包工具

rollup打包工具 在学习vite和vue3源码的时候,接触到了rollup,所以过来学习一下 什么是rollup rollup是一个模块化的打包工具,会将javascript文件进行合并。比起webpack,webpack在打包的时候会进行代码注入(保障兼容性)&#xf…

位图——哈希思想的应用

三、位图 0、位图概念 所谓位图,就是用每一个比特位来存放某种状态(0或1),是一种哈希思想的应用,适用于海量数据,整数,数据无重复的场景。通常是用来判断某个数据存不存在的。(注意…

GaussDB DWS 详解

文章目录 GaussDB DWS 详解一、简介二、DWS的分布式架构架构概述关键组件 三、分布式查询数据查询流程SQL执行的示例 批注:本文引鉴了Forlogen博主的一些内容,并加以补充,以供学习了解。 GaussDB DWS 详解 一、简介 DWS(Data Warehouse Ser…