当前位置: 首页 > news >正文

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

目录

    • SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

基本介绍

1.Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测,要求Matlab2023版以上,自注意力机制,一键单头注意力机制替换成多头注意力机制;
2.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
3.data为数据集,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;
5.优化学习率,神经元个数,注意力机制的键值, 正则化参数。

模型描述

多变量时间序列预测是一项重要的任务,它涉及对具有多个变量的时间序列数据进行预测。为了改进这一任务的预测性能,研究者们提出了许多不同的模型和算法。其中一种结合了时间卷积网络(Temporal Convolutional Network,TCN)、双向门控循环单元(Bidirectional Gated Recurrent Unit,BiGRU)和注意力机制(Attention)的模型。

该算法的核心思想是利用时间卷积网络来捕捉时间序列数据中的长期依赖关系,通过双向门控循环单元来建模序列数据的上下文信息,并通过注意力机制来自适应地加权不同变量的重要性。

步骤如下:

时间卷积网络(TCN):使用一维卷积层来提取时间序列数据中的局部和全局特征。时间卷积能够通过不同大小的卷积核捕捉不同长度的时间依赖关系,从而更好地建模序列中的长期依赖。

双向门控循环单元(BiGRU):将TCN的输出作为输入,使用双向门控循环单元来编码序列数据的上下文信息。双向GRU能够同时考虑序列数据的过去和未来信息,提高了对序列中重要特征的捕捉能力。

注意力机制(Attention):通过引入注意力机制,模型可以自适应地关注输入序列中不同变量的重要性。注意力机制可以根据序列数据的不同特征,动态地调整它们在预测任务中的权重,从而提高模型的表达能力和预测准确性。

输出层:最后,根据模型的具体任务需求,可以使用不同的输出层结构,如全连接层来进行最终的预测。

通过将时间卷积网络、双向门控循环单元和注意力机制相结合,NGO-TCN-BiGRU-Attention鲸鱼算法能够更好地建模多变量时间序列数据的复杂关系,并提高预测性能。然而,需要注意的是,该算法的具体实现可能会根据具体问题和数据集的特点进行适当的调整和优化。

程序设计

  • 完整源码和数据获取方式私信博主回复Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

%% %% 算法优化TCN-BiGRU-Attention,实现多变量输入单步预测
clc;
clear 
close allX = xlsread('data.xlsx');
num_samples = length(X);                            % 样本个数 
kim = 6;                      % 延时步长(kim个历史数据作为自变量)
zim =  1;                      % 跨zim个时间点进行预测
or_dim = size(X,2);%  重构数据集
for i = 1: num_samples - kim - zim + 1res(i, :) = [reshape(X(i: i + kim - 1,:), 1, kim*or_dim), X(i + kim + zim - 1,:)];
end% 训练集和测试集划分
outdim = 1;                                  % 最后一列为输出
num_size = 0.9;                              % 训练集占数据集比例
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);
endfor i = 1 : N vp_test{i, 1} = p_test(:, i);vt_test{i, 1} = t_test(:, i);
end%% 优化算法优化前,构建优化前的TCN_BiGRU_Attention模型outputSize = 1;  %数据输出y的维度  
numFilters = 64;
filterSize = 5;
dropoutFactor = 0.1;
numBlocks = 2;layer = sequenceInputLayer(f_,Normalization="rescale-symmetric",Name="input");
lgraph = layerGraph(layer);     convolution1dLayer(filterSize,numFilters,DilationFactor=dilationFactor,Padding="causal")layerNormalizationLayerreluLayerdropoutLayer(dropoutFactor) additionLayer(2,Name="add_"+i)];% Add and connect layers.lgraph = addLayers(lgraph,layers);lgraph = connectLayers(lgraph,outputName,"conv1_"+i);% Skip connection.if i == 1% Include convolution in first skip connection.layer = convolution1dLayer(1,numFilters,Name="convSkip");lgraph = addLayers(lgraph,layer);lgraph = connectLayers(lgraph,outputName,"convSkip");lgraph = connectLayers(lgraph,"convSkip","add_" + i + "/in2");elselgraph = connectLayers(lgraph,outputName,"add_" + i + "/in2");end% Update layer output name.outputName = "add_" + i;
endtempLayers = flattenLayer("Name","flatten");
lgraph = addLayers(lgraph,tempLayers);tempLayers = gruLayer(NumNeurons,"Name","gru1");
lgraph = addLayers(lgraph,tempLayers);tempLayers = [FlipLayer("flip3")gruLayer(NumNeurons,"Name","gru2")];
lgraph = addLayers(lgraph,tempLayers);tempLayers = [concatenationLayer(1,2,"Name","concat")

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501

相关文章:

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现NGO-TCN-BiGRU-Attention北方苍鹰算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型…...

C++——优先级队列

前言:这篇文章我们继续来分享一个c的容器——优先级队列。 一.理解优先级 何为优先级一说?实际上就是有顺序的意思。 优先级队列,即有顺序的队列,是一个无需我们自己进行排序操作,在数据传入时就会由容器自己排好序的…...

docker部署jumpserver

1、安装Docker以及相关依赖 配置yum源 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin2、添加国…...

ARM FVP平台的terminal窗口大小如何设置

当启动ARM FVP平台时,terminal窗口太小怎么办?看起来非常累眼睛,本博客来解决这个问题。 首先看下ARM FVP平台对Host主机的需求: 通过上图可知,UART默认使用的是xterm。因此,我们需要修改xterm的默认字体设…...

003 静态代理

文章目录 StudentServiceImplStudentService.javaStudentServiceProxy.javaStudentServiceProxy1.javaStudentServiceProxyTest.java StudentServiceImpl package com.aistart.service.impl;import com.aistart.mapper.StudentMapper; import com.aistart.pojo.Student; import…...

基于JAX的二阶优化方法的实践

使用协作分支上的算法 git clone https://github.com/linjing-lab/jax.git cd jax git checkout linjing-lab cd examples在命令行预览方法 牛顿方法: cat newton_method.py拟牛顿法: cat bfgs_method.py在命令行运行程序 python newton_method.pyp…...

【计算机考研】408算法大题怎么练?

先说结论:基础阶段学好各个数据结构与,重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段,并不需要过于专门地练习算法。相反,基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中,…...

输入框验证数字类型

校验大于0的数,且小数点后最多为八位小数 let k /^(?!0(\.0)?$)\d(\.\d{1,8})?$/; console.log(k.test(0.00000001)); // true console.log(k.test(0.00000000)); // false console.log(k.test(0.12)); // true console.log(k.test(12.12)); // true输入0-1的数字&#xf…...

LeetCode 377——组合总和 Ⅳ

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 此题一看应该就是需要用到动态规划算法&#xff0c;假设我们以 f[d]表示总和为 d 的元素组合的个数&#xff0c;首先&#xff0c;我们遍历 nums 数组&#xff0c; 如果有 nums[i] < target&#xff0c;那么组…...

ubuntu同步网络时间

安装ntpdate sudo apt-get update sudo apt-get install ntpdate设置系统时间与网络时间同步 sudo ntpdate cn.pool.ntp.org设置时区亚洲上海 sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime设置时间为24小时制 echo "LC_TIMEen_DK.UTF-8" >>/…...

Flink学习(四)-数据管道 ETL

一、状态转换 map() 只适用于一对一的转换&#xff0c;即对每个进入算子的流元素&#xff0c;map() 将仅输出一个转换后的元素。 flatmap() 可以输出任意数量的元素&#xff0c;也可以一个都不发。 二、Keyed Streams keyBy() 相当于 sql 中的 group by&#xff0c;通过…...

Python可视化之Matplotlib

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1、解决坐标轴刻度负号乱码2、解决中文乱码问题3、图形展现形式 一、图形绘制1.折线图plot2.散点图plot&scatter3.柱状图plt.bar&条形图plt.barh4.直方…...

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中&#xff0c;沟通本来就是很重要的一门课程&#xff0c;沟通的过程中表达的越清晰&#xff0c;给到的信息越多&#xff0c;那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理&#xff0c;如果想要C…...

[C++/Linux] UDP编程

一. UDP函数 UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种无连接的网络协议&#xff0c;用于在互联网上交换数据。它允许应用程序发送数据报给另一端的应用程序&#xff0c;但不保证数据报能成功到达&#xff0c;也就是说&#xff0c;它…...

深入探索Linux的lsof命令

在Linux系统中&#xff0c;了解哪些文件被哪些进程打开对于系统管理和问题诊断是极其重要的。这正是lsof命令&#xff0c;即List Open Files&#xff0c;发挥其强大功能的场景。本文旨在详细介绍lsof的起源、底层原理、参数意义&#xff0c;常见用法&#xff0c;并详解其返回结…...

flowable 想改变正在运行的任务,实例版本为最新,需要改哪些表

在Flowable中&#xff0c;要改变正在运行的任务&#xff0c;你需要更新相关的流程定义&#xff0c;具体来说&#xff0c;可能涉及到以下几张表&#xff1a; ACT_RU_TASK&#xff08;运行时任务&#xff09;&#xff1a;这张表包含了当前正在运行的任务信息。你可能需要更新该表…...

统计各位数字都不同的数字个数 II

3032. 统计各位数字都不同的数字个数 II 给你两个 正整数 a 和 b &#xff0c;返回 闭区间 [a, b] 内各位数字都不同的数字个数。 示例 1&#xff1a; 输入&#xff1a;a 1, b 20 输出&#xff1a;19 解释&#xff1a;除 11 以外&#xff0c;区间 [1, 20] 内的所有数字的各…...

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板...

gitea详细介绍

Gitea 是一个轻量级、易于安装的 Git 服务&#xff0c;提供了类似于 GitHub 的功能&#xff0c;如代码托管、问题追踪、团队合作等。它使用 Go 语言开发&#xff0c;可以在自己的服务器上进行部署&#xff0c;从而实现自托管的 Git 服务。Gitea 具有用户友好的界面&#xff0c;…...

应用性能分析系统SkyWalking的安装及使用详解

1. 前言 本文全面介绍了Skywalking的功能特点、安装步骤以及使用方法。首先,文章详细阐述了Skywalking作为一款开源的应用性能管理系统(APM)的核心功能,包括分布式追踪、服务网格观测分析、度量聚合和可视化一体化等。接着,文章提供了Skywalking的详细安装指南,包括环境…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》

&#x1f9e0; LangChain 中 TextSplitter 的使用详解&#xff1a;从基础到进阶&#xff08;附代码&#xff09; 一、前言 在处理大规模文本数据时&#xff0c;特别是在构建知识库或进行大模型训练与推理时&#xff0c;文本切分&#xff08;Text Splitting&#xff09; 是一个…...

Shell 解释器​​ bash 和 dash 区别

bash 和 dash 都是 Unix/Linux 系统中的 ​​Shell 解释器​​&#xff0c;但它们在功能、语法和性能上有显著区别。以下是它们的详细对比&#xff1a; ​​1. 基本区别​​ ​​特性​​​​bash (Bourne-Again SHell)​​​​dash (Debian Almquist SHell)​​​​来源​​G…...

学习 Hooks【Plan - June - Week 2】

一、React API React 提供了丰富的核心 API&#xff0c;用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素&#xff0c;JSX 会被编译成该函数…...