区间预测 | MATLAB实现基于QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测

news/2024/12/29 1:57:07/

区间预测 | MATLAB实现QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测

目录

    • 区间预测 | MATLAB实现QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多变量时间序列区间预测
      • 效果一览
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

效果一览

1
2

3
4
5
6
7

基本介绍

1.Matlab实现基于QRCNN-BiLSTM-Multihead-Attention卷积神经网络结合双向长短期记忆神经网络多头注意力多变量时间序列区间预测;
2.多图输出、点预测多指标输出(MAE、MAPE、RMSE、MSE、R2),区间预测多指比输出(区间覆盖率PICP、区间平均宽度百分比PINAW),多输入单输出,含点预测图、不同置信区间预测图、误差分析图、核密度估计概率密度图;
区间覆盖率为:0.44848,区间平均宽度百分比为:5.7921
3.data为数据集,功率数据集,用多个关联变量,预测最后一列功率数据,也可适用于负荷预测、风速预测;MainQRCNN_BiLSTM_MATTNTS为主程序,其余为函数文件,无需运行;
4.代码质量高,注释清楚,含数据预处理部分,处理缺失值,如果为nan,则删除,也含核密度估计;
5.运行环境Matlab2021及以上。

模型描述

  • QRCNN-BiLSTM-Multihead-Attention是一种用于处理序列数据的神经网络结构,例如文本或时间序列数据。该结构由四个主要组件组成:
  1. CNN-BiLSTM:该层是一种卷积神经网络,用于处理具有准循环结构的序列数据。它结合了CNN和RNN的优点,既可以实现高效的并行处理,又可以捕捉长期依赖关系。

  2. BiLSTM (双向长短期记忆网络):该层是一种递归神经网络,用于双向处理序列数据。它使网络能够捕捉到正向和反向方向上的依赖关系。

  • 在时间步t处,BiLSTM层的输出,表示为h_t,计算如下:

  • h_t = [h_t^f; h_t^b] = [LSTM^f(x_t); LSTM^b(x_t)]

  • 其中,LSTMf和LSTMb分别是前向和后向LSTM单元,[;]表示连接。

  1. Multihead Attention:该层是一种注意力机制,允许网络有选择地关注输入序列的不同部分。它通过并行计算多个注意力头来实现这一点,每个注意力头关注输入序列的不同部分。
  • 在时间步t处,Multihead Attention层的输出,表示为h_t^*,计算如下:

  • h_t^* = Concat(head_1, head_2, …, head_k) * W^o

  • 其中,k是注意力头的数量,head_i是第i个注意力头,W^o是可学习的参数。每个注意力头计算如下:

  • head_i = Attention(q_i, K, V) = softmax(\frac{q_i K^T}{\sqrt{d_k}}) V

  • 其中,q_i是第i个查询向量,K和V是键和值向量,d_k是键向量的维度。

  1. 输出层:该层将前面的层的输出作为输入,最终输出预测结果,例如分类或回归。
  • 模型的输出,表示为y,计算如下:

  • y = softmax(W^h * h_T^* + b)

  • 其中,h_T^*是Multihead Attention层在最后一个时间步的输出,W^h和b是可学习的参数。softmax函数用于获得可能输出类别的概率分布。

程序设计

  • 完整程序和数据获取方式:私信博主。
ntrain=round(nwhole*num_size);ntest =nwhole-ntrain;% 准备输入和输出训练数据input_train =input(:,temp(1:ntrain));output_train=output(:,temp(1:ntrain));% 准备测试数据input_test =input(:, temp(ntrain+1:ntrain+ntest));output_test=output(:,temp(ntrain+1:ntrain+ntest));%% 数据归一化method=@mapminmax;[inputn_train,inputps]=method(input_train);inputn_test=method('apply',input_test,inputps);[outputn_train,outputps]=method(output_train);outputn_test=method('apply',output_test,outputps);% 创建元胞或向量,长度为训练集大小;XrTrain = cell(size(inputn_train,2),1);YrTrain = zeros(size(outputn_train,2),1);for i=1:size(inputn_train,2)XrTrain{i,1} = inputn_train(:,i);YrTrain(i,1) = outputn_train(:,i);end% 创建元胞或向量,长度为测试集大小;XrTest = cell(size(inputn_test,2),1);YrTest = zeros(size(outputn_test,2),1);for i=1:size(input_test,2)XrTest{i,1} = inputn_test(:,i);YrTest(i,1) = outputn_test(:,i);end%% 创建混合网络架构
%%  区间覆盖率
RangeForm = [T_sim(:, 1), T_sim(:, end)];
Num = 0;for i = 1 : length(T_train)Num = Num +  (T_train(i) >= RangeForm(i, 1) && T_train(i) <= RangeForm(i, 2));
endpicp = Num / length(T_train);     S = cumtrapz(X,Y);Index = find(abs(m-S)<=1e-2);Q = X(max(Index));

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127931217
[2] https://blog.csdn.net/kjm13182345320/article/details/127418340


http://www.ppmy.cn/news/162561.html

相关文章

哪种电容笔更好用?便宜好用的电容笔

有了电容笔使用方便、随身携带&#xff0c;一跃成为iPad人士的新宠&#xff0c;几乎是人手必备的数码单品&#xff0c;电容笔市场十分庞大&#xff0c;让消费者很难抉择到底电容笔哪个品牌最好&#xff0c;所以下面就介绍几款使用效果不错的电容笔&#xff0c;分享给大家。 一…

Vue+springboot个人博客网站系统的设计与实现3virm

本课题采用Java Web技术来设计开发一个可以发表文章、浏览文章的博客系统。课题主要包括前台博客系统以及后台管理系统&#xff1a;前台博客系统应该具备浏览文章&#xff08;能够实现分类查找、关键字查找、首页推荐等&#xff09;、评论文章&#xff08;用户能够对自己喜爱的…

游戏站推荐

1 Switch520网是超火的游戏资源网站&#xff0c;可以帮助广大玩家轻松搬空Switch和Steam 2良心的游戏资源网站堪称游戏白嫖党的福音&#xff0c;并且是中文网站对国内用户非常友好&#xff0c;访问速度也很快。 3 各种3A游戏大作以及switch游戏等都可以轻松找到&#xff0c;游戏…

对战平台

抓了一中午的数据包&#xff0c;侦听一中午的端口&#xff0c;感觉收获 不大&#xff0c;没什么进展。 用java实现进程注入&#xff0c;搜了下&#xff0c;没有这方面的实例&#xff0c;看样子底层的东西必须用c来写&#xff0c;通过JNI来得到数据。 下午去温习下C,好久没看了…

魔兽对战平台服务器更新维护什么,官方对战平台每天5点维护是个什么梗

官方对战平台维护的目的&#xff1a; 1、维护的目的是为了让您的网站能够长期稳定地运行在Internet上&#xff0c;及时地调整和更新您的网站内容 2、网站的软硬件维护&#xff0c;包括服务器、操作系统、和Internet联接线路等等&#xff0c;以确保网站的24小时不间断正常运行。…

浩方、vs 等对战平台的危险

近日在家通过台网玩测试版《星际争霸2》&#xff0c;发现每次都得连线注册&#xff0c;不仅联想了一些事情。 1、浩方、vs 等对战平台的危险 当然在教育网还常用AA&#xff0c;这些对战平台其实大都是依附于 局域网对战游戏。但是现在随着这些 局域网对战游戏中的优秀者&#x…

魔兽争霸dota内外网p2p联机玩游戏-不需要对战平台的联机

通过p2p穿透软件就可以直接联机玩游戏&#xff0c;并不需要通过联机对战平台。开放的p2p穿透软件有nat123、pp透等。 以使用nat123&#xff0c;达到内外网魔兽争霸联机为示例过程。 1.在游戏开服端启用nat123&#xff0c;添加映射。选择使用全端口映射P2P&#xff0c;或全端口映…

SpringBoot - @DependsOn注解详解

注解说明 DependsOn注解主要用于指定当前BEAN所依赖的BEANS。任何被指定的依赖的BEAN都由Spring容器保证在当前BEAN之前创建和加载。在某些场景下&#xff0c;BEAN不是通过属性或构造函数参数显式依赖于另一个BEAN&#xff0c;但却需要要求另一个BEAN优先完成初始化&#xff0c…