FEATURED · 精选文章

AutoGluon 时间序列预测入门指南:TimeSeriesPredictor 完整教程索引与实战导航

发布时间 / 2026/9/15 17:26:08
来源 / 创域科博编辑部
栏目 / 资讯中心
AutoGluon 时间序列预测入门指南:TimeSeriesPredictor 完整教程索引与实战导航 AutoGluon 时间序列预测入门指南TimeSeriesPredictor 完整教程索引与实战导航【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon导读本文是 AutoGluon 时间序列Time Series预测模块的入口指南。AutoGluon 只需调用TimeSeriesPredictor的fit()方法即可在历史数据与相关协变量的基础上训练出多个模型并生成高精度的概率预测结果全程无需手动处理模型选择与超参数调优。阅读完本文你将掌握 AutoGluon 时间序列模块的完整学习路径——从三行代码的快速上手到进阶的深度教程、Chronos 零样本预测、模型清单、集成策略、评估指标与自定义模型接入并了解各环节背后的源码实现。什么是 AutoGluon 时间序列预测时间序列预测的目标是给定一段按固定时间间隔测量的历史观测序列预测该序列未来若干步的值。AutoGluon 在底层组合了多种前沿预测算法覆盖从经典统计方法到预训练基础模型的全谱系经典统计方法基于StatsForecast库的 ETS、ARIMA 等见 timeseries/src/autogluon/timeseries/models/local/statsforecast.py高效树模型基于 AutoGluon-Tabular 的 LightGBM 类预测器见 timeseries/src/autogluon/timeseries/models/autogluon_tabular灵活深度学习模型来自 GluonTS 的 DeepAR、Temporal Fusion Transformer 等见 timeseries/src/autogluon/timeseries/models/gluonts预训练零样本模型Chronos 系列见 timeseries/src/autogluon/timeseries/models/chronos与 Toto 系列见 timeseries/src/autogluon/timeseries/models/toto。一次TimeSeriesPredictor.fit()调用即可完成多模型的训练与择优。从源码看predictor.py 中的TimeSeriesPredictor同时拟合两类模型在所有时间序列间共享参数的全局深度学习模型如 DeepAR以及逐条时间序列独立拟合的局部统计模型如 ARIMA、ETS。学习路径总览本节内容即 docs/tutorials/timeseries/index.md 提供的教程导航覆盖从入门到进阶、从使用到自定义的完整链路教程链接内容要点快速上手forecasting-quick-start.ipynb用三行代码在时间序列数据集上完成模型拟合与预测深度教程forecasting-indepth.ipynb系统讨论 AutoGluon 时间序列预测的高级能力Chronos 预测forecasting-chronos.ipynb使用预训练 Chronos-2 模型进行零样本预测模型清单model_zoo/index.mdAutoGluon-TimeSeries 提供的全部预测模型集成模型forecasting-ensembles.md可用的集成模型清单与多层堆叠策略评估指标forecasting-metrics.md可用的预测评估指标及选择方法自定义模型advanced/forecasting-custom-model.ipynb如何将自定义预测模型接入 AutoGluon快速上手三行代码生成预测forecasting-quick-start.ipynb 展示了用 AutoGluon 在 M4 预测竞赛数据集上生成逐小时预测的完整流程仅需两个核心类TimeSeriesDataFrame存储由多条时间序列组成的数据集TimeSeriesPredictor负责拟合、调优、选择最佳预测模型并生成新预测。首先将数据装载为pandas.DataFrame再构造TimeSeriesDataFrame。AutoGluon 要求时间序列数据采用长格式long format每一行是某条时间序列在某一时刻的单次观测至少包含三列时间序列唯一 IDitem_id、观测时间戳timestamp、目标数值target。列名可以任意但构造时必须显式指定import pandas as pd from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor df pd.read_csv(https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly_subset/train.csv) train_data TimeSeriesDataFrame.from_data_frame( df, id_columnitem_id, timestamp_columntimestamp, )每条时间序列被称为一个item条目例如需求预测中的不同商品或金融数据中的不同股票这种多条序列并存的数据结构也叫panel面板。需要注意这与多变量预测不同——AutoGluon 对每条时间序列独立生成预测不建模不同 item 之间的相互作用。TimeSeriesDataFrame继承自pandas.DataFrame因此 pandas 的全部属性和方法均可用。接下来创建预测器并拟合。AutoGluon 预测的是未来多步的值步数即prediction_length预测长度/预测视界。由于数据集是小时频率设置prediction_length 48即训练预测未来 48 小时的模型predictor TimeSeriesPredictor( prediction_length48, # 预测未来 48 个小时 pathautogluon-m4-hourly, # 模型保存目录 targettarget, # 目标列名 eval_metricMASE, # 按 MASE 指标排名模型 ) predictor.fit( train_data, presetsmedium_quality, time_limit600, # 训练时间上限 10 分钟 )presets决定了 AutoGluon 尝试拟合哪些模型。对于medium_quality包括简单基线SeasonalNaive、统计模型ETS、Theta、基于 LightGBM 的树模型RecursiveTabular、DirectTabular、预训练的 Chronos-2small与 Toto-24m模型以及一个加权集成。TimeSeriesPredictor还提供high_quality与best_quality预设质量越高通常预测越准但训练时间越长。从源码看presets 在 predictor_presets.py 中定义并支持别名medium/mq、high/hq、best/bqfast_training已弃用并回退到medium_quality。而各 preset 对应的模型集合在 hyperparameter_presets.py 中定义# light对应 medium_quality { SeasonalNaive: {}, ETS: {}, Theta: {}, RecursiveTabular: {}, DirectTabular: {}, Chronos2: {model_path: autogluon/chronos-2-small}, Toto2: {model_path: Toto-2.0-4m}, }# default对应 high_quality / best_quality { SeasonalNaive: {}, AutoETS: {}, DynamicOptimizedTheta: {}, RecursiveTabular: {}, DirectTabular: {}, TemporalFusionTransformer: {}, DeepAR: {}, Chronos2: [{}, {model_path: autogluon/chronos-2-small, fine_tune: True, eval_during_fine_tune: True, ag_args: {name_suffix: SmallFineTuned}}], Toto2: {model_path: Toto-2.0-22m}, }fit()会在给定的时间限制内尽可能多地训练模型随后基于内部验证集对模型排序。默认情况下验证集通过将每条时间序列最后prediction_length个时间步留出构建。生成预测与评估训练完成后用predict()生成预测。默认使用内部验证集上得分最高的模型预测覆盖每条时间序列末端之后的prediction_length个时间步predictions predictor.predict(train_data)AutoGluon 生成的是概率预测除预测均值期望值外还提供预测分布的分位数。例如0.1分位数为500.0意味着模型预测目标值有 10% 概率低于 500。可以加载测试数据并用plot()可视化均值预测以及 10%、90% 分位数import matplotlib.pyplot as plt test_data TimeSeriesDataFrame.from_path(https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly_subset/test.csv) predictor.plot(test_data, predictions, quantile_levels[0.1, 0.9], max_history_length200, max_num_item_ids4)用leaderboard()查看各模型的验证得分与测试得分。注意测试数据同时包含预测视界每条序列最后prediction_length个值与历史数据。AutoGluon 的排行榜遵循分数越高越好的原则因此 MASE 会被乘以-1以负 MASE的形式呈现越接近 0 越准确。深度教程概率预测与特征工程forecasting-indepth.ipynb 系统介绍了 AutoGluon 时间序列预测的高级能力覆盖以下主题概率预测的两种输出TimeSeriesPredictor输出两类预测均值预测mean forecast预测视界内每个时间步的时间序列期望值分位数预测quantile forecast预测分布的分位数。例如0.1分位数P10第 10 百分位等于x表示时间序列值有 10% 的概率低于x0.5分位数P50即中位数预测。根据分位数定义时间序列落在 P10 与 P90 之间的概率为 80%。默认输出的分位数为[0.1, 0.2, ..., 0.9]可通过quantile_levels自定义predictor TimeSeriesPredictor(quantile_levels[0.05, 0.5, 0.95])prediction_length决定预测视界长度例如对每日购买数据可设置 14预测未来 14 天的需求。静态特征与协变量真实场景中常有超越原始序列值的附加信息AutoGluon 支持两类静态特征static features与时间无关的序列属性如记录地点国家/州/城市、商品固定属性品牌、颜色、尺寸、重量、门店 ID 或商品 ID。静态特征作为TimeSeriesDataFrame对象的属性存储时变协变量time-varying covariates包括已知协变量预测视界内提前可知如节假日、促销、天气预报与过去协变量仅有历史值。已知协变量通过TimeSeriesPredictor的known_covariates_names参数声明predict()时以known_covariates关键字传入未来值。并非所有模型都支持全部特征类型支持矩阵见 forecasting-model-zoo.md 的Additional features小节。手动配置模型与超参数调优hyperparameters参数允许手动指定要训练的模型模型名无需Model后缀predictor TimeSeriesPredictor().fit( train_data, hyperparameters{ DeepAR: {}, ETS: {}, }, )部分模型的超参数名称与默认值与原始库不同详见 Model Zoo。此外还可为各模型定义搜索空间进行超参数调优。模型清单Model Zoomodel_zoo/index.md 列出了 AutoGluon 全部可用的时间序列预测模型按类别划分如下基线模型NaiveModel、SeasonalNaiveModel、AverageModel、SeasonalAverageModel、ZeroModel使用最少历史数据做简单预测作为复杂方法的基准统计模型ETSModel、AutoARIMAModel、AutoETSModel、AutoCESModel、ThetaModel、NPTSModel捕捉趋势与季节性等简单模式稀疏数据统计模型ADIDAModel、CrostonModel、IMAPAModel专为稀疏、非负数据尤其是间歇性需求预测设计深度学习模型DeepARModel、DLinearModel、PatchTSTModel、SimpleFeedForwardModel、TemporalFusionTransformerModel、TiDEModel、WaveNetModel表格模型DirectTabularModel、PerStepTabularModel、RecursiveTabularModel将时间序列预测转化为表格回归问题见 timeseries/src/autogluon/timeseries/models/autogluon_tabular预训练模型Chronos2Model、ChronosModel、TotoModel、Toto2Model在大规模时间序列数据集上预训练支持零样本预测。所有模型共享一组超参数详见 forecasting-model-zoo.md 的 Hyperparameters shared by all models 小节target_scaler(standard, mean_abs, robust, min_max, None)默认None。若设置每条时间序列在训练/预测前按(y - loc) / scale缩放预测后做逆变换。四种缩放器分别以均值/标准差、0/平均绝对值、中位数/四分位距、最小值/极差计算loc与scale且逐条序列独立计算covariate_scaler(global, None)对协变量与静态特征做缩放。GluonTS 模型默认global其余模型默认Nonecovariate_regressor(LR, GBM, CAT, XGB, RF, None)默认None。若设置先用选定的表格回归模型在已知协变量与静态特征上预测同时间步的目标再从目标列中减去回归预测让预测模型拟合残差预测时再加回回归预测。启用它建议同时启用target_scaler。需注意MXNet 的 GluonTS 模型因依赖冲突已被弃用。集成模型与多层堆叠forecasting-ensembles.md 说明 AutoGluon 通过集成组合多个基模型预测以提升精度。集成模型在**留出的验证数据回测窗口**上训练学习如何最佳组合基模型预测。默认使用单个GreedyEnsemble学习各基模型的最优权重可通过TimeSeriesPredictor.fit()的ensemble_hyperparameters参数配置。可用集成模型包括简单平均类SimpleAverageEnsemble、MedianEnsemble、线性集成类GreedyEnsemble、PerItemGreedyEnsemble、LinearStackerEnsemble、非线性集成类TabularEnsemble、PerQuantileTabularEnsemble。模型名同样无需Ensemble后缀。多层堆叠multi-layer stacking通过多阶段训练集成扩展基础集成每一层集成在不同回测窗口上训练并使用上一层集成的预测作为输入使后层能纠正前层误差。例如num_val_windows(3, 2)与两层集成时基模型生成全部 5 个窗口的预测第 2 层集成在窗口 1-3 上训练第 3 层集成在窗口 4-5 上训练并以第 2 层预测为输入最终验证分数在窗口 4-5 上计算predictor TimeSeriesPredictor(prediction_lengthprediction_length, eval_metricMASE) predictor.fit( train_data, hyperparameters{SeasonalNaive: {}, Theta: {}, DirectTabular: {}, ETS: {}, RecursiveTabular: {}}, ensemble_hyperparameters[ {WeightedEnsemble: {}, Median: {}, LinearStacker: {weights_per: mt}}, # 第 2 层 {WeightedEnsemble: {}}, # 第 3 层 ], num_val_windows(3, 2), # 3 个窗口拟合 L22 个窗口拟合 L3 refit_every_n_windowsauto, )训练后可通过backtest_targets()与backtest_predictions()访问用于训练集成的验证预测与目标值。评估指标体系forecasting-metrics.md 指出选择正确的评估指标是使用 AutoML 框架时最重要的决策之一。指标通过eval_metric参数指定AutoGluon 用它调优模型超参数、对模型排名并构建最终集成predictor TimeSeriesPredictor(eval_metricMASE)AutoGluon 始终以越高越好的格式报告所有指标因此部分指标会乘以-1如报告-MASEtest_score介于 0 与负无穷之间。内置指标包括概率指标MQL、SQL、WQL点预测指标MAE、MAEB、MAPE、MASE、MSE、RMSE、RMSLE、RMSSE、SMAPE、WAPE、WAPEB另有仅用于评估的BIAS。源码实现见 timeseries/src/autogluon/timeseries/metrics。指标选择三问文档给出三个决策问题关注点预测还是概率预测目标是概率预测应使用WQL、MQL或SQL基于分位数损失点预测指标则始终在预测的mean列上评估是否更关心大值序列的准确性是——用尺度相关指标WQL、MQL、MAE、RMSE、WAPE也适合含大量零值的稀疏序列系统性偏差惩罚可选MAEB、WAPEB度量偏差用BIAS否——用缩放指标SQL、MASE、RMSSE或百分比指标MAPE、SMAPE后者有文档记录的局限不推荐实际使用点预测估计均值还是中位数中位数用MAE、MASE、WAPE均值用MSE、RMSE、RMSSE稀疏序列可用MAEB、WAPEB平衡中位数精度项与均值偏差惩罚。自定义评估指标可通过继承TimeSeriesScorer并实现compute_metric定义自定义指标。以下是一个自定义 MSE 指标import sklearn.metrics from autogluon.timeseries.metrics import TimeSeriesScorer class MeanSquaredError(TimeSeriesScorer): greater_is_better_internal False optimum 0.0 def compute_metric(self, data_future, predictions, target, **kwargs): return sklearn.metrics.mean_squared_error(y_truedata_future[target], y_predpredictions[mean])compute_metric返回越低越好的内部指标故设置greater_is_better_internalFalseAutoGluon 会将其乘以-1转为越高越好格式。调用时TimeSeriesScorer负责把test_data切分为过去与未来部分、校验预测时间戳、按越高越好格式报告分数。自定义指标必须定义在独立 Python 文件中并支持 pickle 序列化否则开启超参数调优时可能崩溃。此外对 GluonTS 深度学习模型可通过distr_output超参数修改训练损失例如用NormalOutput高斯分布 负对数似然损失或QuantileOutput分位数损失训练 PatchTST默认多数 GluonTS 模型使用对离群点更鲁棒的厚尾StudentTOutput。延伸资源Chronos 零样本预测forecasting-chronos.ipynb 介绍如何在 AutoGluon 中使用预训练的 Chronos-2 模型进行零样本预测。仓库还内置了chronos2、chronos2_small、chronos2_ensemble等 preset以及 Chronos-Bolt 系列的bolt_tiny/bolt_mini/bolt_small/bolt_base见 predictor_presets.py自定义预测模型advanced/forecasting-custom-model.ipynb 演示如何将自定义时间序列模型接入 AutoGluon模型注册机制模型注册与加载逻辑见 models/registry.py测试用例可从 timeseries/tests/unittests 中查看预测器、指标、数据集的单元测试理解各功能的预期行为。总结AutoGluon 时间序列模块以TimeSeriesPredictor.fit()为核心入口一次调用即可完成多模型训练、验证集构建、模型排名与加权集成输出多步概率预测。本文梳理了从 index.md 出发的完整学习路径快速上手掌握三行代码流程深度教程理解概率预测、静态特征/协变量与手动配置模型清单了解五类模型与共享超参数集成文档掌握多层堆叠指标文档学会选择与自定义评估指标。无论需求预测、金融序列还是运维监控都可以按此路径快速落地。【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻