GluonTS时间序列预测快速入门教程

GluonTS时间序列预测快速入门教程

gluonts awslabs/gluonts: GluonTS (Gluon Time Series) 是一个由Amazon Web Services实验室维护的时间序列预测库,基于Apache MXNet的Gluon API构建,适用于各种商业应用中复杂时间序列数据的建模和预测任务。 gluonts 项目地址: https://gitcode.com/gh_mirrors/gl/gluonts

概述

GluonTS是一个功能强大的概率时间序列预测工具包,由MXNet提供支持。它提供了构建和评估时间序列预测模型所需的各种组件,特别适合需要进行概率预测的场景。本文将带您快速了解GluonTS的核心功能和使用方法。

核心组件

GluonTS主要包含以下几个关键部分:

  1. 预构建模型:包括多种开箱即用的预测模型
  2. 模型构建组件:如似然函数、特征处理管道、日历特征等
  3. 数据加载与处理:简化时间序列数据的准备工作
  4. 可视化与评估工具:帮助分析预测结果
  5. 数据集:包含多个公开可用的基准数据集

数据集处理

内置数据集

GluonTS提供了多个公开的时间序列数据集,涵盖不同频率和领域。这些数据集已经过预处理,可直接用于模型训练和评估。

from gluonts.dataset.repository import get_dataset, dataset_names
from gluonts.dataset.util import to_pandas

# 获取可用数据集列表
print(f"可用数据集: {dataset_names}")

# 加载特定数据集
dataset = get_dataset("m4_hourly")

每个数据集包含三个主要部分:

  • train:用于训练的可迭代数据条目集合
  • test:用于推理的测试集,包含额外的预测窗口
  • metadata:数据集元数据,如频率、预测长度等

自定义数据集

GluonTS支持自定义数据集,只需满足以下基本要求:

  • 可迭代
  • 包含"target"和"start"字段
import numpy as np
import pandas as pd
from gluonts.dataset.common import ListDataset

# 创建随机数据集
N = 10  # 时间序列数量
T = 100  # 时间步长
prediction_length = 24
freq = "1H"
custom_dataset = np.random.normal(size=(N, T))
start = pd.Period("01-01-2019", freq=freq)

# 转换为GluonTS格式
train_ds = ListDataset(
    [{'target': x, 'start': start} for x in custom_dataset[:, :-prediction_length]],
    freq=freq
)
test_ds = ListDataset(
    [{'target': x, 'start': start} for x in custom_dataset],
    freq=freq
)

模型训练与预测

使用预建模型

GluonTS提供了多种预构建模型,我们以简单的前馈神经网络(SimpleFeedForwardEstimator)为例:

from gluonts.mx import SimpleFeedForwardEstimator, Trainer

# 配置模型参数
estimator = SimpleFeedForwardEstimator(
    num_hidden_dimensions=[10],  # 网络隐藏层维度
    prediction_length=dataset.metadata.prediction_length,  # 预测长度
    context_length=100,  # 输入上下文长度
    trainer=Trainer(
        ctx="cpu",  # 使用CPU
        epochs=5,  # 训练轮数
        learning_rate=1e-3,  # 学习率
        num_batches_per_epoch=100  # 每轮批次数
    )
)

# 训练模型
predictor = estimator.train(dataset.train)

生成预测

训练完成后,我们可以使用模型生成预测:

from gluonts.evaluation import make_evaluation_predictions

# 生成评估预测
forecast_it, ts_it = make_evaluation_predictions(
    dataset=dataset.test,
    predictor=predictor,
    num_samples=100  # 生成100条样本路径
)

# 转换为列表方便处理
forecasts = list(forecast_it)
tss = list(ts_it)

结果可视化与评估

预测结果可视化

GluonTS提供了方便的绘图功能,可以直观展示预测结果:

import matplotlib.pyplot as plt

# 获取第一条时间序列
ts_entry = tss[0]
forecast_entry = forecasts[0]

# 绘制结果
plt.plot(ts_entry[-150:].to_timestamp())
forecast_entry.plot(show_label=True)
plt.legend()
plt.show()

定量评估

我们可以使用内置评估器计算各种指标:

from gluonts.evaluation import Evaluator

# 初始化评估器
evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])

# 计算指标
agg_metrics, item_metrics = evaluator(tss, forecasts)

# 打印聚合指标
print(json.dumps(agg_metrics, indent=4))

常用评估指标包括:

  • MASE:平均绝对缩放误差
  • MSIS:M4竞赛使用的对称区间得分
  • MAPE:平均绝对百分比误差
  • RMSE:均方根误差

总结

本教程介绍了GluonTS的基本使用方法,包括:

  1. 加载和处理时间序列数据
  2. 训练预构建的预测模型
  3. 生成和可视化预测结果
  4. 评估模型性能

GluonTS的强大之处在于它简化了概率时间序列预测的流程,同时提供了足够的灵活性来处理各种预测场景。对于更复杂的应用,您可以探索GluonTS提供的其他模型和高级功能。

gluonts awslabs/gluonts: GluonTS (Gluon Time Series) 是一个由Amazon Web Services实验室维护的时间序列预测库,基于Apache MXNet的Gluon API构建,适用于各种商业应用中复杂时间序列数据的建模和预测任务。 gluonts 项目地址: https://gitcode.com/gh_mirrors/gl/gluonts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑眉允Well-Born

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值