时间序列预测 —— DeepAR 模型

时间序列预测 —— DeepAR 模型

DeepAR 模型是一种专门用于处理时间序列概率预测的深度学习模型,它可以自动学习数据中的复杂模式,提高预测的准确性。本文将介绍 DeepAR 模型的理论基础、优缺点,并通过 Python 实现单步预测和多步预测的完整代码。

1. DeepAR 模型简介

DeepAR 模型是由亚马逊提出的一种概率生成模型,旨在进行时间序列预测。与传统的基于深度学习的序列模型(如 LSTM 和 GRU)不同,DeepAR 考虑了时间序列的复杂模式。它采用了一种门控循环单元(Gated Recurrent Unit, GRU)的,结合了蒙特卡洛的概率生成方法,使其在处理多维时间序列数据时表现优异。

2. DeepAR 模型理论及公式

DeepAR

2.1 基本原理

DeepAR 模型的基本原理是将历史时间序列数据作为输入,通过逐步预测未来数据。模型利用历史观测值和可变长度的上下文窗口来学习数据的动态模式,并通过概率生成方法提供置信区间。传统时序预测为点预测,DeepAR为区间概率预测。

2.2 模型公式

DeepAR 模型的核心是门控循环单元(GRU)和注意力机制,其中 GRU 的更新公式如下:

GRU 的更新步骤:
z t = σ ( W z ⋅ [ h t − 1 , x t ] + b z ) r t = σ ( W r ⋅ [ h t − 1 , x t ] + b r ) h ~ t = tanh ( W ⋅ [ r t ⋅ h t − 1 , x t ] + b ) h t = ( 1 − z t ) ⋅ h t − 1 + z t ⋅ h ~ t \begin{aligned} z_t &= \sigma(W_z \cdot [h_{t-1}, x_t] + b_z) \\ r_t &= \sigma(W_r \cdot [h_{t-1}, x_t] + b_r) \\ \tilde{h}_t &= \text{tanh}(W \cdot [r_t \cdot h_{t-1}, x_t] + b) \\ h_t &= (1 - z_t) \cdot h_{t-1} + z_t \cdot \tilde{h}_t \end{aligned} ztrth~tht=σ(Wz[ht1,xt]+bz)=σ(Wr[ht1,xt]+br)=tanh(W[rtht1,xt]+b)=(1zt)ht1+zth~t

其中:

  • z t z_t zt 是更新门,控制要从候选隐藏状态 (\tilde{h}_t) 中选择多少信息传递给新的隐藏状态。
  • r t r_t rt 是重置门,控制要忽略前一时刻隐藏状态的程度。
    - h ~ t \tilde{h}_t h~t是候选隐藏状态。
  • h t h_t ht 是当前时刻的隐藏状态。

2.3 模型结构

DeepAR 模型结构包括多层 GRU 单元,每一层都有自己的权重和偏差。模型还使用了注意力机制,以便更好地处理长序列。DeepAR以蒙特卡罗样本的形式进行概率预测,该样本可用于计算预测视界内所有子范围的一致分位数估

3. DeepAR 与其他模型的区别

相较于传统的序列模型,DeepAR 在以下方面有显著的不同之处:

  • 考虑季节性和周期性: DeepAR 能够自动学习和捕捉数据中的季节性和周期性模式,而无需手动调整。

  • 多维时间序列处理: DeepAR 能够有效处理多维时间序列,同时考虑多个时间序列之间的相关性。

4. DeepAR 模型优缺点

4.1 优点

  • 自动捕捉复杂模式: DeepAR 能够自动捕捉时间序列中的复杂模式,无需手动特征工程。

  • 概率生成: 模型提供了预测的概率分布,可以用于构建置信区间。

4.2 缺点

  • 计算成本较高: 模型的训练和预测过程相对较慢,尤其

在处理大规模数据时。

5. DeepAR 模型 Python 实现

下面将通过 Python 代码演示 DeepAR 模型的单步预测和多步预测。请确保已安装必要的库:

pip install mxnet gluonts

5.1 单步预测代码

# 导入必要的库
from gluonts.model.deepar import DeepAREstimator
from gluonts.dataset.common import ListDataset
from gluonts.trainer import Trainer# 创建示例数据(替换为你自己的数据)
train_data = [...]  # 训练数据
test_data = [...]   # 测试数据# 将数据转换为 ListDataset 格式
train_ds = ListDataset([{"start": "2022-01-01", "target": train_data}], freq="D")
test_ds = ListDataset([{"start": "2022-01-10", "target": test_data}], freq="D")# 定义 DeepAR 模型参数
estimator = DeepAREstimator(freq="D", prediction_length=7, trainer=Trainer(epochs=10))# 训练模型
predictor = estimator.train(train_ds)# 单步预测
single_step_forecast = predictor.predict(test_ds)# 打印预测结果
print(single_step_forecast.mean)

5.2 多步预测代码

# 导入必要的库
from gluonts.model.deepar import DeepAREstimator
from gluonts.dataset.common import ListDataset
from gluonts.trainer import Trainer# 创建示例数据(替换为你自己的数据)
train_data = [...]  # 训练数据
test_data = [...]   # 测试数据# 将数据转换为 ListDataset 格式
train_ds = ListDataset([{"start": "2022-01-01", "target": train_data}], freq="D")
test_ds = ListDataset([{"start": "2022-01-10", "target": test_data}], freq="D")# 定义 DeepAR 模型参数
estimator = DeepAREstimator(freq="D", prediction_length=14, trainer=Trainer(epochs=10))# 训练模型
predictor = estimator.train(train_ds)# 多步预测
multi_step_forecast = predictor.predict(test_ds)# 打印预测结果
print(multi_step_forecast.mean)

6. 总结

本文介绍了时间序列预测中的 DeepAR 模型,包括其理论基础、优缺点以及与其他模型的区别。通过 Python 代码演示了 DeepAR 模型的单步预测和多步预测,希望读者能够更好地理解和应用这一强大的时间序列预测模型。在实际应用中,可以根据具体问题进行模型参数的调整和优化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机项目调试中的技巧和常见问题解决

单片机是嵌入式系统中的重要组成部分,在各种电子设备中发挥着重要的作用。在单片机项目开发过程中,调试是至关重要的一环,同时也会遇到一些常见问题。本文将介绍一些单片机项目调试的技巧以及常见问题的解决方法,希望能够对单片机…

应用层 HTTP协议(1)

回顾 前面我们说到了数据链路层,网络层IP协议,传输层的TCP/UDP协议一些知识点,现在让我们谈谈 应用层的HTTP协议的知识点. 这篇我们先从大局入手,仍然是对总体报文进行全局分析,再对细节报文进行拆解分析 版本 首先我们谈谈HTTP协议的版本 HTTP 0.9 (1991) HTTP 1.0 (1992 - 1…

大模型2024规模化场景涌现,加速云计算走出第二增长曲线

导读:2024,大模型第一批规模化应用场景已出现。 如果说“百模大战”是2023年国内AI产业的关键词,那么2024年我们将正式迈进“应用为王”的新阶段。 不少业内观点认为,2024年“百模大战”将逐渐收敛甚至洗牌,而大模型在…

幻兽帕鲁专用服务器,多人游戏(专用服务器)搭建

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

如何用Hexo搭建一个优雅的博客

引言 在数字化时代,拥有一个个人博客已经成为许多人展示自己技能、分享知识和与世界互动的重要方式。而在众多博客平台中,Hexo因其简洁、高效和易于定制的特点而备受青睐。本文将详细介绍如何从零开始搭建一个Hexo博客,让你的个人博客在互联…

Tuxera NTFS2024永久免费版磁盘读写软件

Tuxera NTFS 2024由Tuxera公司开发,是一款专为Mac系统设计的NTFS磁盘读写软件。以下是这款软件的具体优势: 全面的读写功能:Tuxera NTFS 2024允许Mac用户全面读写NTFS格式的硬盘、U盘、SD卡等存储设备。这意味着用户可以在Mac上自由读取和写…

【JavaEE Spring 项目】博客系统

博客系统 前⾔项⽬介绍1. 准备⼯作1.1 数据准备1.2 创建项⽬1.3 准备前端⻚⾯1.4 配置配置⽂件1.5 测试 2. 项⽬公共模块2.1 实体类的编写2.2 公共层 3. 业务代码3.1 持久层3.2 实现博客列表3.3 实现博客详情3.4 实现登陆令牌技术JWT令牌介绍JWT令牌⽣成和校验 3.5 实现强制要求…

Netty应用(四) 之 Reactor模型 零拷贝

目录 6.Reactor模型 6.1 单线程Reactor 6.2 主从多线程Reactor (主--->Boss | 从--->Worker | 一主多从机制) 7.扩展与补充 8.Reactor模型的实现 8.1 多线程Reactor模型的实现(一个Boss线程,一个Worker线程) 8.2 多线程Reactor模…

SolidWorks学习笔记——入门知识1

目录 1、固定最近文档 2、根据需要自定义菜单栏 3、根据需要增添选项卡 4、命令搜索框 5、鼠标右键长按快速切换视图 6、鼠标笔势 自定义鼠标笔势 1、固定最近文档 图1 固定最近文档 2、根据需要自定义菜单栏 图2 根据需要自定义菜单栏 3、根据需要增添选项卡 图3 根据…

架构(十二)动态Excel

一、引言 作者最近的平台项目需要生成excel,excel的导入导出是常用的功能,但是作者想做成动态的,不要固定模板,那就看看怎么实现。 二、后端 先捋一下原理,前后端的交互看起来是制定好的接口,其实根本上是…

OCP使用CLI创建和构建应用

文章目录 环境登录创建project赋予查看权限部署第一个image创建route检查pod扩展应用 部署一个Python应用连接数据库创建secret加载数据并显示国家公园地图 清理参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 登录 通过 crc console --credentials 可以查看登录信息&…

Stable Video Diffusion图片转视频——Stability AI开源视频模型

我们前期介绍过Stable Diffusion,stable diffusion模型是Stability AI开源的一个text-to-image的扩散模型,其模型在速度与质量上面有了质的突破,玩家们可以在自己消费级GPU上面来运行此模型。 文生图大模型已经火了很长一段时间了&#xff0c…

专业130+总分410+苏州大学837信号系统与数字逻辑考研经验电子信息与通信,真题,大纲,参考书

今年考研总分410,专业837信号系统与数字逻辑130,整体每门相对比较均衡,没有明显的短板,顺利上岸苏大,总结一下自己这大半年的复习经历,希望可以对大家有所帮助,也算是对自己考研做个总结。 专业…

Java:常用API接上篇 --黑马笔记

一、 StringBuilder类 StringBuilder代表可变字符串对象,相当于是一个容器,它里面的字符串是可以改变的,就是用来操作字符串的。 好处:StringBuilder比String更合适做字符串的修改操作,效率更高,代码也更…

Idea里自定义封装数据警告解决 Spring Boot Configuration Annotation Processor not configured

我们自定对象封装指定数据&#xff0c;封装类上面一个红色警告&#xff0c;虽然不影响我们的执行&#xff0c;但是有强迫症看着不舒服&#xff0c; 去除方式&#xff1a; 在pom文件加上坐标刷新 <dependency><groupId>org.springframework.boot</groupId><…

11 插入排序和希尔排序

1. 插入排序 基本思想 直接插入排序是一种简单的插入排序法&#xff0c;基本思想&#xff1a; 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 在玩扑克牌时&#xff0c;就用…

【知识整理】招人理念、组织结构、招聘

1、个人思考 几个方面&#xff1a; 新人&#xff1a;选、育、用、留 老人&#xff1a;如何甄别&#xff1f; 团队怎么演进&#xff1f; 有没有什么注意事项 怎么做招聘&#xff1f; 2、 他人考虑 重点&#xff1a; 1、从零开始&#xff0c;讲一个搭建团队的流程 2、标…

Python pandas中read_csv函数的io参数

前言 在数据分析和处理中&#xff0c;经常需要读取外部数据源&#xff0c;例如CSV文件。Python的pandas库提供了一个强大的 read_csv() 函数&#xff0c;用于读取CSV文件并将其转换成DataFrame对象&#xff0c;方便进一步分析和处理数据。在本文中&#xff0c;将深入探讨 read…

【网页设计】春节页面背景模板

无偿下载地址&#xff1a;https://download.csdn.net/download/weixin_47040861/88811143 1.实现效果 2.代码 1.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content&q…

【超高效!保护隐私的新方法】针对图像到图像(l2l)生成模型遗忘学习:超高效且不需要重新训练就能从生成模型中移除特定数据

针对图像到图像生成模型遗忘学习&#xff1a;超高效且不需要重新训练就能从生成模型中移除特定数据 提出背景如何在不重训练模型的情况下从I2I生成模型中移除特定数据&#xff1f; 超高效的机器遗忘方法子问题1: 如何在图像到图像&#xff08;I2I&#xff09;生成模型中进行高效…