区间预测

2023-11-13

区间预测 | MATLAB实现QRCNN-BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测

效果一览

1
2

3

基本介绍

1.Matlab实现基于QRCNN-BiLSTM分位数回归卷积长短期记忆神经网络的时间序列区间预测模型;
2.多图输出、多指标输出(MAE、RMSE、MSE、R2),多输入单输出,含不同置信区间图、概率密度图;
3.data为数据集,功率数据集,用过去一段时间的变量,预测目标,目标为最后一列,也可适用于负荷预测、风速预测;MainQRCNN_BiLSTMTS为主程序,其余为函数文件,无需运行;
4.代码质量高,注释清楚,含数据预处理部分,处理缺失值,如果为nan,用上一行替代,也含核密度估计;

模型描述

QRCNN-BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测是一种基于深度学习的时间序列预测模型。它结合了卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)和分位数回归技术,可以用于预测时间序列的区间范围。
具体来说,QRCNN-BiLSTM模型首先使用CNN层提取时间序列的特征,然后使用BiLSTM层对这些特征进行建模,以捕捉时间序列中的长期依赖关系。接下来,使用分位数回归技术来预测时间序列的不同分位数,从而得到一个区间范围。最后,使用该模型对时间序列进行预测。
这种模型可以应用于多个领域,例如金融、气象、交通等。它可以帮助预测未来的趋势和风险,提供决策支持和参考。

  • QRCNN-BiLSTM模型的具体公式如下:

  • 首先,使用CNN层对时间序列进行特征提取:

x i , j ( c ) = σ ( ∑ k = 1 K w k ( c ) ⋅ x i + k − 1 , j + b ( c ) ) x_{i,j}^{(c)} = \sigma (\sum_{k=1}^{K}w_k^{(c)} \cdot x_{i+k-1,j} + b^{(c)}) xi,j(c)=σ(k=1Kwk(c)xi+k1,j+b(c))

  • 其中, x i , j ( c ) x_{i,j}^{(c)} xi,j(c)表示第 j j j个特征在第 i i i个时间步的卷积结果, K K K表示卷积核大小, w k ( c ) w_k^{(c)} wk(c)表示第 c c c个卷积核的第 k k k个权重, b ( c ) b^{(c)} b(c)表示第 c c c个卷积核的偏置, σ \sigma σ表示激活函数。

  • 然后,使用BiLSTM层对CNN层的输出进行建模:

h t → = LSTM ( x t , h t − 1 → ) h t ← = LSTM ( x t , h t + 1 ← ) h t = [ h t → ; h t ← ] \begin{aligned} & \overrightarrow{h_t} = \text{LSTM}(x_t, \overrightarrow{h_{t-1}})\\ & \overleftarrow{h_t} = \text{LSTM}(x_t, \overleftarrow{h_{t+1}})\\ & h_t = [\overrightarrow{h_t}; \overleftarrow{h_t}] \end{aligned} ht =LSTM(xt,ht1 )ht =LSTM(xt,ht+1 )ht=[ht ;ht ]

  • 其中, h t → \overrightarrow{h_t} ht h t ← \overleftarrow{h_t} ht 分别表示前向和后向LSTM的隐藏状态, h t h_t ht表示BiLSTM的隐藏状态。

  • 接下来,使用分位数回归技术来预测时间序列的不同分位数:

y t ( τ ) = h t T ⋅ W ( τ ) + b ( τ ) y_t^{(\tau)} = h_t^T \cdot W^{(\tau)} + b^{(\tau)} yt(τ)=htTW(τ)+b(τ)

  • 其中, y t ( τ ) y_t^{(\tau)} yt(τ)表示时间步 t t t的第 τ \tau τ个分位数预测结果, W ( τ ) W^{(\tau)} W(τ)表示权重向量, b ( τ ) b^{(\tau)} b(τ)表示偏置。该模型可以同时预测多个分位数,从而得到一个区间范围。

  • 最后,使用该模型对时间序列进行预测,即预测时间序列在未来某个时间段内的区间范围。

程序设计

  • 完整程序和数据获取方式:私信博主。
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% 加载数据
load data.mat
%-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以下是一个简单的QRCNN-BiLSTM分位数回归时间序列区间预测的Matlab代码示例:

```matlab
% 数据集预处理
data = load('data.mat');
X = data.X; % 输入数据,大小为[N, T, F]
Y = data.Y; % 输出数据,大小为[N, T, Q]

% 将数据集划分为训练集和测试集
train_ratio = 0.8;
train_size = round(train_ratio * size(X, 1));
train_X = X(1:train_size, :, :);
train_Y = Y(1:train_size, :);
test_X = X(train_size+1:end, :, :);
test_Y = Y(train_size+1:end, :);

% 定义QRCNN-BiLSTM模型
input_layer = imageInputLayer([size(train_X, 2), size(train_X, 3)]);
conv_layer = convolution2dLayer([3, 3], 32, 'Padding', 'same');
relu_layer = reluLayer();
maxpool_layer = maxPooling2dLayer([2, 2], 'Stride', [2, 2]);
lstm_layer = biLSTMLayer(64, 'OutputMode', 'last');
fully_layer = fullyConnectedLayer(size(train_Y, 2));
output_layer = regressionLayer();

layers = [input_layer;
          conv_layer;
          relu_layer;
          maxpool_layer;
          lstm_layer;
          fully_layer;
          output_layer];

% 训练模型
options = trainingOptions('adam', ...
                          'MaxEpochs', 50, ...
                          'MiniBatchSize', 64, ...
                          'ValidationData', {test_X, test_Y}, ...
                          'ValidationFrequency', 10, ...
                          'Plots', 'training-progress');
                      
model = trainNetwork(train_X, train_Y, layers, options);

% 对测试集进行预测
pred_Y = predict(model, test_X);

% 计算预测误差
mae = mean(abs(pred_Y - test_Y));
mse = mean((pred_Y - test_Y).^2);

参考资料

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

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

区间预测 的相关文章

  • 【Linux】基础IO -- 软硬链接

    前言 上篇Linux的文章 我们学习到了文件系统中 对磁盘文件的管理 而本篇文章 我们要以文件系统的基础知识 了解软硬链接 话不多说 马上开始今天的学习 文章目录 前言 一 软链接 1 软链接的语法 2 软链接的本质 3 软链接的应用 二
  • axios vue 加载效果动画_vue+elementUI+axios实现的全局loading加载动画

    在项目中 很多时候都需要loading加载动画来缓解用户的焦虑等待 比如说 我打开了一个页面 而这个页面有很多接口请求 但浏览器的请求并发数就那么几个 再加上如果网速不行的话 那么这时候 用户很可能就会纠结自己到底该不该留下来继续等待呢 所
  • VC编程获取MSN口令的代码

    MSN Messenger uses Windows Credential UI credui dll on WinXP 2003 Password Storage mechanism differs in these OSes so th

随机推荐

  • 微服务的终极杀器SpringCloudAlibaba组件精讲

    一 微服务 1 1 微服务简介 In short the microservice architectural style is an approach to developing a single application as a sui
  • 02_jQuery与Ajax

    jquery jquery的作用 他是js的库 处理html 事件 实现动画效果 方便的为网站提供AJAX交互 命名格式 ji 体积大 用于学习和debug使用 min js 压缩的文件 体积小 用于线上环境使用 使用方法 必须先在页面文件
  • 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT)

    五种开源协议的比较 BSD Apache GPL LGPL MIT 本篇博客比较了常见的5种开源协议的异同 大家在为自己的代码选择协议的时候可以参考 现今存在的开源协议很多 而经过Open Source Initiative组织通过批准的开
  • 标准C读BMP图象的一个小代码

    include
  • TCP/IP UDP广播无法发送或接收

    TCP IP UDP广播无法发送或者接收数据 在看 TCP IP 网络编程 这本书的时候 看到广播那一节 跟着书上写代码 怎么写都不行 广播就是没法发送 接收 发送端一直在发送数据 接收端就是没有反应 对了好几遍源码 没有问题 实在是愁人
  • 深入浅出理解Paxos算法

    Paxos算法是莱斯利 兰伯特 英语 Leslie Lamport LaTeX中的 La 于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法 Paxos算法一开始非常难以理解 但是一旦理解其实也并不难 之所以难理解其实是因为作
  • 远程服务器无密登入设置

    现在还在输密码进入服务器的话 如果频次高的话 显得就很浪费时间 实际上可以通过无密登陆服务器 只需要设置好ssh就可以 这样只要你打开你电脑的终端不管是Mac OS还是Linux输入ssh root 远程服务器IP 这个命令就会自动登陆到远
  • 如何保障数仓数据质量?

    有赞数据报表中心为商家提供了丰富的数据指标 包括30 页面 100 数据报表以及400 不同类型的数据指标 它们帮助商家更合理 科学地运营店铺 同时也直接提供分析决策方法供商家使用 并且 每天在跑的底层任务和涉及的数据表已经达到千级别 面对
  • 【Python 1-10】Python手把手教程之——一篇讲透if语句以及if语句的特殊用法

    作者 弗拉德 来源 弗拉德 公众号 fulade me if 简单示例 假设你有一个汽车列表 并想将其中每辆汽车的名称打印出来 对于大多数汽车 都应以首字母大写的方式打印其名称 但对于汽车名 bmw 应以全大写的方式打印 下面的代码遍历一个
  • 技术至简-7:2G/3G/4G/5G基站系统中混合调制的技术框架

    2G 3G 4G 5G基站系统并非采用单一的调制技术 是数字调制和模拟调制的综合 是QAM调制与IQ调制的综合 是幅度调制与相位调制的综合 1 调制模型 在此模型中 包含了三种调制 1 数字基带调制 PSK QAM调制 2 模拟基带调制 I
  • Git日常问题: 什么是LFS?及其错误解决办法

    文章目录 Git LFS 错误 Git LFS 解决办法 Git LFS 错误 本地已经存在一个git仓库 想将其推送到一个远程仓库 结果遇到了git lfs错误 打印如下 git remote rename origin old orig
  • 解决DCNv2在Linux上安装失败的问题

    项目场景 今天同学安装 DCN Deformable Convolutional Networks 可变形卷积网络 v2的 PyTorch 版本时遇到了很多问题 弄了将近一天也没解决 于是求助笔者帮忙解决 这里记录一下成功的解决方案 问题描
  • MATLAB算法实战应用案例精讲-【回归算法】XGBoost算法(附Java、Python和R语言代码)

    目录 前言 xgboost面试过程中几个高频问题 1 xgboost如何处理缺失值
  • 什么是JDBC?并写出JDBC的开发流程。

    JDBC Java DataBase Connectivity 直译为 java数据库连接 实际上jdbc是java中的一套和数据库交互的api application program interface 应用程序编程接口 因为java程序
  • 【uni-app】修改原生导航栏文字和文字样式

    修改文字 uni setNavigationBarTitle 这是修改后的导航栏文字 title 首页 修改文字颜色以及导航栏背景色 uni setNavigationBarColor frontColor ffffff 文字颜色 back
  • SystemVerilog-$cast详解

    cast在子类与父类之间的复制 1 子类cast给父类 cast father cls child cls 之前有提到 cast是将两个类型强制转换 cast A B 将B强制类型转换给A 应用在类上 就是句柄的强制赋值操作 那么在子类和父
  • Global Illumination_Screen-Space Directional Occlusion(SSDO)

    之前我们了解过AO SSAO HBAO 可参照之前文章Vulkan SSAO 屏幕空间环境光遮蔽 DirectX11进阶9 AO SSAO Particle System GPU Global Illumination Horizon Ba
  • 常用椭圆曲线介绍

    chat gpt生成 对应python的miracl core python库 ED系列 一 ED25519 ED25519使用的椭圆曲线是Curve25519 它是一种高效且安全的椭圆曲线 由Daniel J Bernstein等人设计
  • 游戏渲染技术:前向渲染 vs 延迟渲染 vs Forward+渲染(二)

    GTA5 2 前向渲染 前向渲染是三个光照技术中最简单的 也是游戏图形渲染中最常见的技术 出于这个原因 也是光照计算最昂贵的技术 它不允许在场景中出现大量的动态光源 大部分使用前向渲染的图形引擎会采用一些技术来模拟场景中大量的光源的情况 例
  • 区间预测

    区间预测 MATLAB实现QRCNN BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 MATLAB实现QRCNN BiLSTM卷积双向长短期记忆神经网络分位数回归时间序列区间预测 效果一览 基本介绍 模型描