区间预测

2023-11-04

区间预测 | MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测

效果一览

1
2
3
4

基本介绍

MATLAB实现QRLSTM长短期记忆神经网络分位数回归时间序列区间预测
QRLSTM是一种基于长短期记忆(LSTM)神经网络的模型,用于时间序列区间预测。它是使用分位数回归来进行预测的,这意味着它可以预测一系列可能的结果,而不仅仅是单个点预测。
具体来说,QRLSTM使用LSTM网络来学习时间序列的长期和短期依赖关系,然后使用分位数回归来预测一系列可能的结果。分位数回归是一种非常有用的技术,它可以预测出给定置信水平下的上限和下限,这对于时间序列预测非常有用。
QRLSTM模型的预测能力很强,特别是在处理非线性时间序列时。它已经被广泛应用于股票市场、气象预测、交通预测等领域。

模型描述

QRLSTM模型的数学公式如下:
首先,我们定义LSTM网络中的隐藏状态和细胞状态:

h t , c t = LSTM ( x t , h t − 1 , c t − 1 ) h_t,c_t=\text{LSTM}(x_t,h_{t-1},c_{t-1}) ht,ct=LSTM(xt,ht1,ct1)

  • 其中, x t x_t xt是时间步 t t t的输入, h t − 1 h_{t-1} ht1 c t − 1 c_{t-1} ct1分别是上一时间步的隐藏状态和细胞状态。

然后,我们定义分位数回归的损失函数:

L τ = ∑ i = 1 n ρ τ ( y i − f θ ( x i ) ) \mathcal{L}{\tau}=\sum{i=1}^{n}\rho_{\tau}(y_i-f_{\theta}(x_i)) Lτ=i=1nρτ(yifθ(xi))

  • 其中, τ \tau τ是分位数水平, y i y_i yi是时间序列在时间步 i i i的真实值, f θ ( x i ) f_{\theta}(x_i) fθ(xi)是模型在时间步 i i i的预测值, ρ τ ( u ) \rho_{\tau}(u) ρτ(u)是分位数损失函数:

ρ τ ( u ) = { τ u  if  u ≥ 0   ( τ − 1 ) u  if  u < 0 \rho_{\tau}(u)=\begin{cases} \tau u & \text{ if } u \geq 0 \ (\tau-1)u & \text{ if } u < 0 \end{cases} ρτ(u)={τu if u0 (τ1)u if u<0

最终我们的目标是最小化所有分位数水平下的损失函数:

L = ∑ τ ∈ τ 1 , τ 2 , . . . , τ T L τ \mathcal{L}=\sum_{\tau\in{\tau_1,\tau_2,...,\tau_T}}\mathcal{L}_{\tau} L=ττ1,τ2,...,τTLτ

  • 其中, τ 1 , τ 2 , . . . , τ T {\tau_1,\tau_2,...,\tau_T} τ1,τ2,...,τT是一组分位数水平。

QRLSTM模型使用随机梯度下降或者其他优化算法最小化上述损失函数,从而得到最优的模型参数。

程序设计

% 构建模型
numFeatures = size(XTrain,1); % 输入特征数
numHiddenUnits = 200; % 隐藏单元数
numQuantiles = 1; % 分位数数目
layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits,'OutputMode','last')
    dropoutLayer(0.2)
    fullyConnectedLayer(numQuantiles)
    regressionLayer];
options = trainingOptions('adam', ...
    'MaxEpochs',50, ...
    'MiniBatchSize',64, ...
    'GradientThreshold',1, ...
    'Shuffle','every-epoch', ...
    'Verbose',false);
net = trainNetwork(XTrain,YTrain,layers,options); % 训练模型

% 测试模型
YPred = predict(net,XTest); % 预测输出
quantiles = [0.1,0.5,0.9]; % 分位数
for i = 1:length(quantiles)
    q = quantiles(i);
    epsilon = YTest - YPred(:,i); % 预测误差
    lag = 10; % 滞后期数
    sigma = median(abs(epsilon(max(1,end-lag+1):end))) * 1.483; % 置信区间
    lb = YPred(:,i) - sigma * norminv(1-q/2,0,1); % 置信区间下限
    ub = YPred(:,i) + sigma * norminv(1-q/2,0,1); % 置信区间上限
    disp(['Quantile:',num2str(q),' MAE:',num2str(mean(abs(epsilon))),' Width:',num2str(mean(ub-lb))]);
end

参考资料

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

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

区间预测 的相关文章

  • SQL中group by的用法总结

    一 简介SQL语言 SQL语言 是结构化查询语言的简称 SQL语言是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关系数据库系统 同时也是数据库脚本文件的扩展名 SQL语言 是高级的非过程化编程语言 允许用户在高层数据结构上

随机推荐

  • Linux(CentOS7)安装docker

    CentOS7 安装Docker教程 docker官网安装步骤 1 卸载旧版本 sudo yum remove docker docker client docker client latest docker common docker l
  • css 划对号,css3画个圆圈里的对号

    效果如图 image png 基本思路 1先画一个圆 2画两个位于圆中间的小矩形 3旋转矩形 一个左旋45度 一个右旋45度 4利用absolute进行定位 demo2 width 40px height 40px border radiu
  • 爬虫 — 验证码反爬

    目录 一 超级鹰 二 图片验证模拟登录 1 页面分析 1 1 模拟用户正常登录流程 1 2 识别图片里面的文字 2 代码实现 三 滑块模拟登录 1 页面分析 2 代码实现 通过对比像素获取缺口位置 四 openCV 1 简介 2 代码 3
  • 目标检测实战项目『体验篇』

    本文建议阅读时间 8 min 什么是目标检测 目标检测 Object Detection 的任务是找出图像中所有感兴趣的目标 物体 确定它们的类别和位置 是计算机视觉领域的核心问题之一 由于各类物体有不同的外观 形状和姿态 加上成像时光照
  • 二维多孔介质图像的粒度分布研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 使用流域分割算法对岩石二维二值图像进行粒度
  • C # HTTP支持跨域请求

    修改响应的请求头 具体修改详见代码 private void httpPostRequestHandle while true try 等待请求连接 没有请求则GetContext处于阻塞状态 HttpListenerContext req
  • VS2022下载安装与基本使用(写C语言)

    最近遇到一种问题 就是想要写一写C语言的代码 但是网页编辑器功能不全 GCC需要安装Liunx系统 VS又体量太大过于复杂 用keil又需要连接硬件 所以比较纠结 工作中通常使用的是Keil 但是如果有时不方便使用硬件 怎么办呢 所以就想着
  • vue3无限轮播案例

  • 【参加CUDA线上训练营】CUDA进阶之路 - Chapter 8 - CUDA流和CUDA工具库

    8 1 CUDA Stream 前面的章节只介绍了核函数在GPU内部的执行流程 忽略了CPU与GPU之间的交互过程 可以看出 CPU与GPU之间的交互涉及两个操作 数据传输和核函数执行 CPU将任务添加到不同的队列中 GPU驱动程序则负责执
  • AD原理图突然变灰,无法编辑了,快速恢复方法介绍!

    在使用AD18画原理图的时候 不知道触发了什么功能 导致整个原理图界面变成了灰色 怎么办 不怕 请看下文 下面是正常操作时候的界面 下面是异常界面 咨询同事后 同事表示经常遇到这种情况 他们认为是软件卡死了 关闭再重新打开即可 不过鄙人不这
  • python第六七天作业

    作业1 求第n项的斐波那契数列的值 n gt 1 def fbnq n if n lt 1 return 1 if 1 n or 2 n return 1 return fbnq n 1 fbnq n 2 def main n int in
  • MemCache详细解读

    MemCache是什么 MemCache是一个自由 源码开放 高性能 分布式的分布式内存对象缓存系统 用于动态Web应用以减轻数据库的负载 它通过在内存中缓存数据和对象来减少读取数据库的次数 从而提高了网站访问的速度 MemCaChe是一个
  • printf 和 println 是 Java 中用于输出的两种不同的方法

    以下为ChatGPT输出 printf 和 println 是 Java 中用于输出的两种不同的方法 它们之间有以下几点差异 格式控制 printf 方法允许你使用格式字符串来控制输出的格式 你可以指定变量的类型 字段宽度 精度等 而 pr
  • openwrt查看系统的芯片方案

    拿到一款路由器 想要知道主芯片的方案 可以通过如下方法 方法一 查看cpuinfo 比如 root IceCreamBox cat proc cpuinfo system type Ralink MT7620A ver 2 eco 3 ma
  • mybatis查询返回的对象不为null,但是属性值为null

  • 深度学习调参技巧

    深度学习调参技巧 一 寻找合适的学习率 learning rate 二 learning rate与batch size的关系 三 权重初始化 四 dropout 五 多模型融合 六 差分学习率与迁移学习 七 多尺度训练 八 Cross V
  • BRDF公式

    转自 https www cnblogs com wbaoqing p 9810386 html 根据BRDF公式 高光项部分 只能物体的表面的粗糙度有关 Roughness有关 大部分公式都是 根据Cook Torrance 的微表面高光
  • 用Python搭建2层神经网络实现mnist手写数字分类

    这是一个用python搭建2层NN 一个隐藏层 识别mnist手写数据集的示例 mnist py文件提供了mnist数据集 6万张训练图 1万张测试图 的在线下载 每张图片是 28 28 28 28 28 28的尺寸 拉长为 1
  • windows安装MSYS2(mingw && gcc)

    一 简介 本文主要介绍如何在windows环境下安装msys环境 二 软件安装步骤 2 1 官网下载 msys官网链接 https www msys2 org 下载完成 2 2 软件安装 根据网页提示选择需要安装的目录 并等待安装完成 安装
  • 区间预测

    区间预测 MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测 目录 区间预测 MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测 效果一览 基本介绍 模型描述 程序设计 参考资料 效果一览