AutoGluon Time Series 模型库(Model Zoo)完全指南:从基线模型到预训练大模型
【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon
导读
本文面向 AutoGluon-TimeSeries 的高级用户,系统梳理 docs/tutorials/timeseries/forecasting-model-zoo.md 中收录的全部 26 个时间序列预测模型:包括 5 个基线模型、6 个统计模型、3 个稀疏数据专用统计模型、7 个深度学习模型、3 个 Tabular 转化模型与 4 个预训练大模型,并逐一讲解其关键超参数与适用场景。读完本文,你将能够:在TimeSeriesPredictor.fit中通过hyperparameters字典精准地选模型、配参数;正确使用target_scaler、covariate_scaler、covariate_regressor三个全局共享超参数;并根据"是否支持静态特征 / 已知协变量 / 历史协变量"的能力表为你的预测任务选型。
注意:本文面向高级用户,内容可能不完整;如需稳定的公共 API,请以
TimeSeriesPredictor的正式文档为准。
一、如何从模型库中选取与配置模型
模型库(Model Zoo)的核心用途是覆盖默认超参数或自定义超参数搜索空间。你不需要修改 AutoGluon 源码,只需在fit时把想要使用的模型名作为字典的 key 传入hyperparameters,值为该模型的超参数字典({}表示使用默认超参数)。
例如,下面这段代码将训练一个仅包含DeepAR和ETS两个模型(并自动在其之上叠加加权集成)的预测器:
predictor = TimeSeriesPredictor().fit( train_data, hyperparameters={ "DeepAR": {}, "ETS": {}, }, )有两个关键约定需要牢记:
- 模型名不必带
"Model"后缀:hyperparameters字典里的"DeepAR"与"DeepARModel"指向同一个类autogluon.timeseries.models.DeepARModel。这一约定由模型注册机制的实现直接保证(详见下文"模型注册机制")。 - 部分模型的超参数名称与默认值,与底层原始库(如 GluonTS、StatsForecast、MLForecast)并不完全一致,应以 AutoGluon 侧的文档与源码为准。例如
DeepARModel的scaling参数是作用于"上下文窗口"的缩放,而target_scaler作用于"整条时间序列",两者含义不同。
模型注册机制(源码佐证)
为什么可以省略Model后缀?答案在 registry.py 的ModelRegistry元类中:所有继承TimeSeriesModel的类在定义时都会被自动注册,注册的别名通过name.removesuffix("Model")去掉后缀得到;若类还提供了ag_model_aliases属性,这些额外别名也会一并注册。因此TemporalFusionTransformerModel可以通过ag_model_aliases = ["TFT"](见 gluonts/models.py)以"TFT"使用,CrostonModel则以ag_model_aliases = ["CrostonSBA"](见 local/statsforecast.py)支持"CrostonSBA"别名。每个模型还带有ag_priority属性(数值越小优先级越高),用于自动模型选择时决定默认使用哪些模型。
二、模型总览
下表是模型库收录的全部模型,均定义在autogluon.timeseries.models命名空间下(见 models/init.py):
| 分类 | 模型 |
|---|---|
| 基线模型 | NaiveModel、SeasonalNaiveModel、AverageModel、SeasonalAverageModel、ZeroModel |
| 统计模型 | ETSModel、AutoARIMAModel、AutoETSModel、AutoCESModel、ThetaModel、NPTSModel |
| 稀疏数据统计模型 | ADIDAModel、CrostonModel、IMAPAModel |
| 深度学习模型 | DeepARModel、DLinearModel、PatchTSTModel、SimpleFeedForwardModel、TemporalFusionTransformerModel、TiDEModel、WaveNetModel |
| Tabular 模型 | DirectTabularModel、PerStepTabularModel、RecursiveTabularModel |
| 预训练模型 | Chronos2Model、ChronosModel、TotoModel、Toto2Model |
此外,注册表中还包含未出现在本文档列表中的ARIMAModel(固定参数 ARIMA)与DynamicOptimizedThetaModel(优化版 Theta),它们同样可从hyperparameters中使用。下面按类别逐一展开,各模型"Other Parameters"即为其可配置超参数。
三、基线模型(Baseline Models)
基线模型使用最少的历史数据做出预测,是衡量复杂方法效果的下限基准,拟合速度极快。实现集中在 models/local/naive.py。
NaiveModel(朴素预测)
将预测值直接设为最后一个观测值。分位数通过假设残差服从零均值正态分布得到,尺度由残差的经验分布估计。可用超参数:
n_jobs:并行拟合使用的 CPU 核数。默认joblib.cpu_count(only_physical_cores=True);取(0, 1)区间浮点数时表示使用该比例的物理核;正整数表示使用指定核数;-1表示使用全部核。
SeasonalNaiveModel(季节性朴素预测)
将预测值设为同一季节上一次观测到的值。可用超参数:
seasonal_period:一个完整季节周期包含的时间步数,例如日频数据的周周期为7,月频数据的年周期为12。默认None表示从训练数据的频率自动推断;也可手动指定大于 1 的整数。若推断或指定的周期为1,则回退为 Naive 预测;若序列长度小于周期,同样禁用季节性。n_jobs:同NaiveModel。
AverageModel(均值预测)
将预测值设为历史均值或对应分位数。可用超参数:
n_jobs:同NaiveModel。max_ts_length:默认None。若设置,只使用每条序列最后max_ts_length个时间步训练模型,可显著加速拟合,通常精度几乎不变。
SeasonalAverageModel(季节性均值预测)
将预测值设为同一季节的历史均值或分位数。超参数seasonal_period、n_jobs、max_ts_length含义同上。其实现会对每个"季节槽位"分组计算均值与分位数,并对训练数据中缺失的季节槽位用全序列统计量填充。
ZeroModel(零值预测)
始终返回 0 预测的朴素预测器,预测区间采用**共形预测(conformal prediction)**计算。它继承自间歇需求模型的共形化基类(见 local/statsforecast.py),适合作为"全零"场景的参考基线。
四、统计模型(Statistical Models)
统计模型捕捉趋势、季节性等简单模式,训练快、可解释性强,绝大多数基于 StatsForecast 库实现,封装在 models/local/statsforecast.py。
ETSModel(指数平滑)
误差(E)、趋势(T)、季节(S)三个分量由用户固定的指数平滑模型。核心超参数:
model:默认"AAA",描述 E/T/S 三个分量的模型串,每个字符可取"M"(乘法)、"A"(加法)、"N"(省略)。例如model="ANN"(加法误差、无趋势、无季节)表示只做简单指数平滑。seasonal_period、damped(是否阻尼趋势,默认False)、n_jobs、max_ts_length(默认 2500)含义同前。
AutoARIMAModel(自动 ARIMA)
通过信息准则自动挑选最优 (p,d,q,P,D,Q)参数的 ARIMA 模型,基于statsforecast.models.AutoARIMA。常用超参数:
d、D:一阶差分阶数与季节差分阶数,None时自动用统计检验确定。max_p/max_q(默认 5/5)、max_P/max_Q(默认 2/2):自回归项与移动平均项的最大阶数(含季节项)。max_d(默认 2)、max_D(默认 1):差分阶数上限。start_p/start_q(默认 2/2)、start_P/start_Q(默认 1/1):逐步搜索的起始值。stationary(默认False):是否只搜索平稳模型。seasonal(默认True):是否考虑季节模型。approximation(默认True):近似优化以加快收敛。allowdrift(默认False)、allowmean(默认True):是否允许漂移项 / 非零均值。seasonal_period、n_jobs、max_ts_length同上。
AutoETSModel(自动 ETS)
用信息准则自动选择最优 ETS 组合的指数平滑模型,基于statsforecast.models.AutoETS。核心超参数:
model:默认"ZZZ",表示 E/T/S 三个分量都"自动选择";也可以固定为"ANN"等组合(含义同ETSModel)。seasonal_period、damped(默认False)、n_jobs、max_ts_length同上。- 一个值得注意的实现细节:当序列长度不足以支撑所选季节周期时,源码会自动把模型串的最后一个字符改为
"N"以禁用季节性(例如"AAA"→"AAN"),避免模型崩溃。
AutoCESModel(复杂指数平滑)
基于 Akaike 信息准则(AIC)自动选择模型的 Complex Exponential Smoothing。核心超参数:
model:{"Z", "N", "S", "P", "F"},默认"Z"。"N"为简单 CES,"S"为简单季节性,"P"为部分季节性(无复数部分),"F"为完整季节性;"Z"表示用 AIC 自动选择。seasonal_period、n_jobs、max_ts_length同上。实现上,当序列过短(少于 5 个点)时会回退为朴素预测;周期不满足时自动改用"N"模型。
ThetaModel(Theta 模型)
基于 Theta 分解方法的预测模型,支持decomposition_type("multiplicative"或"additive",默认"multiplicative")与seasonal_period等参数。
NPTSModel(非参数时间序列预测)
基于gluonts.model.npts.NPTSPredictor的非参数预测器,特别适合稀疏或含大量零值的间歇序列。核心超参数:
kernel_type:{"exponential", "uniform"},默认"exponential"。exp_kernel_weights:指数核的缩放因子,默认1.0。use_seasonal_model:是否使用季节变体,默认True。num_samples:预测生成的采样数,默认100。num_default_time_features:季节模型使用的时间特征数,默认1。- 由于 NPTS 依赖采样、具有非确定性,源码在预测时会固定随机种子(
np.random.seed(123))以保证并行环境下的可复现性,并在结束后恢复原始随机状态(见 local/npts.py)。
五、稀疏数据统计模型(Statistical Models for Sparse Data)
专为稀疏、非负数据(尤其是间歇性需求预测 intermittent demand forecasting)设计的统计模型。它们都继承自"共形化"基类:先用滚动窗口在历史数据上计算非一致性得分(nonconformity scores),再以ceil((1 - alpha) * (n + 1)) / n分位数构造预测区间;所有模型的预测都会被clip到不小于min(0, 序列最小值),避免产生负的需求预测。
- ADIDAModel:基于 Aggregate-Disaggregate Intermittent Demand Approach(聚合-分解间歇需求法)。
- CrostonModel:Croston 方法(及其 Syntetos-Boylan 修正)。核心超参数
variant默认"SBA",可选:"classic":平滑参数固定为 0.1 的经典 Croston;"SBA":Syntetos-Boylan 近似;"optimized":平滑参数被优化的变体。
- IMAPAModel:Intermittent Multiple Aggregation Prediction Algorithm(间歇多重聚合预测算法)。
六、深度学习模型(Deep Learning Models)
深度学习模型用神经网络捕捉数据中的复杂模式,实现均基于 GluonTS 的 PyTorch 版本 Estimator,封装在 models/gluonts/models.py。所有此类模型共享以下通用训练超参数(具体默认值见各模型):
max_epochs(默认 100)、batch_size(默认 64)、predict_batch_size(默认 500)、num_batches_per_epoch(默认 50)、lr(默认 1e-3)、trainer_kwargs、early_stopping_patience(默认 20)、keep_lightning_logs(默认False,设为True时保留lightning_logs目录)。
DeepARModel(自回归 RNN)
基于循环神经网络的自回归概率预测模型。核心超参数:
context_length:默认max(10, 2 * prediction_length),RNN 展开的步数。num_layers(默认 2)、hidden_size(默认 40)、dropout_rate(默认 0.1)。embedding_dimension:分类特征嵌入维度,默认按基数自适应。max_cat_cardinality(默认 100):分类已知协变量独热编码的最大维度。distr_output:默认StudentTOutput(),决定输出分布与损失计算。scaling:默认True,对每个上下文窗口做平均绝对缩放(注意与全局target_scaler不同)。disable_static_features、disable_known_covariates:默认False,可关闭对静态特征 / 已知协变量的使用。- 实现上,其 lag 序列(
lags_seq)与时间特征(time_features)会根据数据频率自动生成(get_lags_for_frequency、get_time_features_for_frequency)。
DLinearModel
在预测前先剔除趋势的简单前馈网络("Are Transformers Effective for Time Series Forecasting?",AAAI 2023)。核心超参数:context_length(默认 96)、hidden_dimension(默认 20)、scaling({"mean", "std", None},默认"mean")、weight_decay(默认 1e-8)。
PatchTSTModel
将序列切分为补丁(patch)的 Transformer 预测器。核心超参数:
context_length:默认 96;patch_len:默认 16;stride:默认 8。d_model(默认 32)、nhead(默认 4,需整除d_model)、num_encoder_layers(默认 2)。scaling:{"mean", "std", None},默认"mean";weight_decay:默认 1e-8。
SimpleFeedForwardModel
同时预测未来所有值的前馈网络。核心超参数:context_length(默认max(10, 2 * prediction_length))、hidden_dimensions(默认[20, 20])、batch_normalization(默认False)、mean_scaling(默认True)。
TemporalFusionTransformerModel(TFT)
将 LSTM 与 Transformer 层结合、直接预测未来所有目标值分位数的模型(别名"TFT")。核心超参数:
context_length:默认min(512, max(64, 2 * prediction_length))。hidden_dim(默认 32)、variable_dim(默认 32)、num_heads(默认 4)、dropout_rate(默认 0.1)。distr_output:默认QuantileOutput()。disable_static_features/disable_known_covariates/disable_past_covariates:分别控制是否关闭静态特征、已知协变量与历史协变量(默认均False)。- TFT 是少数同时支持静态特征、已知协变量与历史协变量的深度学习模型(见第七节能力表)。
TiDEModel
Time-series Dense Encoder("Long-term Forecasting with TiDE",TMLR 2023)。核心超参数:context_length(默认min(512, max(64, 2 * prediction_length)))、feat_proj_hidden_dim(4)、encoder_hidden_dim/decoder_hidden_dim/temporal_hidden_dim/distr_hidden_dim(均 64)、num_layers_encoder/num_layers_decoder(2)、decoder_output_dim(16)、dropout_rate(0.2)、layer_norm(True)、lr(1e-4)、batch_size(256)。
WaveNetModel
基于扩张卷积 CNN、对目标做分桶量化的生成式模型("WaveNet: A generative model for raw audio")。核心超参数:num_bins(1024)、num_residual_channels(24)、num_skip_channels(32)、dilation_depth(默认None,自动保证感受野覆盖季节性与2 * prediction_length)、num_stacks(1)、temperature(1.0)、seasonality(默认按频率推断)、negative_data(默认True,是否允许负值)。
七、Tabular 模型(Tabular Models)
Tabular 模型把时间序列预测转化为表格回归问题,内部借助 MLForecast 完成 lag 特征、时间特征的高效预处理,再用 AutoGluon-Tabular 的回归模型拟合。实现在 models/autogluon_tabular/。
DirectTabularModel(直接预测)
将整个预测窗口作为多输出回归问题,直接预测未来prediction_length步。特征包括 lag 值、时间特征、已知协变量与静态特征。当eval_metric.needs_quantile为真时,模型按分位数回归问题训练,否则按回归问题训练并通过残差正态假设构造分位数。
RecursiveTabularModel(递归预测)
单步模型递归滚动预测整个预测窗口,预测结果会作为下一步的特征输入。两者(Direct / Recursive)均基于 mlforecast.py 中的AbstractMLForecastModel基类实现,共享以下超参数:
lags:目标变量的滞后阶数,默认按频率自动生成。date_features:由时间戳计算的日期特征,默认按频率自动推断。differences:差分阶数(默认按数据长度自动校验;若序列过短会回退为[1]并给出警告)。target_scaler:目标缩放(默认由基类处理)。model_name:默认"GBM",即使用梯度提升树作为回归器;也可换用 AutoGluon-Tabular 注册表中的其他模型。model_hyperparameters:传给回归模型的超参数。max_num_items(默认 20,000)、max_num_samples(默认 1,000,000):对训练规模的上限控制,用于控制内存与耗时。- 分位数通过"逐条序列的残差标准差 + 高斯假设"(
_add_gaussian_quantiles)在验证集上计算得到;对过短的序列会自动回退到SeasonalNaiveModel生成预测并给出警告。
PerStepTabularModel(逐步预测)
为预测窗口中的每一个时间步单独拟合一个表格回归模型。核心超参数:
trailing_lags:滚动窗口 lag,按步长平移(第 h 步使用[lag + h for lag in trailing_lags]),默认[1, 2, ..., 12]。seasonal_lags:季节 lag,不平移但按可用性过滤(第 h 步使用[lag for lag in seasonal_lags if lag > h]),默认按频率自动确定。date_features、target_scaler(默认"mean_abs")、model_name(默认"CAT",即 CatBoost)、model_hyperparameters、validation_fraction(默认 0.1)、max_num_items、max_num_samples、n_jobs。- 注意:该模型当前不支持差分(
differences被显式注释掉),且通常比其他 Tabular 预测模型拟合更慢;模型按预测步数并行拟合,n_jobs会根据可用内存自动确定以避免 OOM。
八、预训练模型(Pretrained Models)
在大规模时间序列数据集上预训练、可零样本(zero-shot)预测的深度学习模型,也可针对特定任务微调。
ChronosModel
Chronos 系列([Ansari2024],TMLR 2024)将时间序列离散化为 token 后做分类式回归;新版 Chronos-Bolt 先对序列做 patching,推理速度显著更快且可完全在 CPU 上运行。核心超参数(见 models/chronos/model.py):
model_path:默认"autogluon/chronos-bolt-small"。可使用 HF Hub 模型名或本地目录;原版 Chronos(autogluon/chronos-t5-{size})支持别名tiny、mini、small、base、large,Bolt 版本支持bolt_tiny、bolt_mini、bolt_small、bolt_base。batch_size:默认 256(原版 Chronos 为 16,large 为 8;预测窗口超长时 Bolt 的 batch 会按 4 倍缩减)。num_samples:默认 20,仅原版 Chronos 使用。device:默认None(自动选 GPU);原版small/base/large推理需要 GPU,Bolt 全部可在 CPU 上推理。context_length:默认None,推理时按数据长度推断、上限 2048。torch_dtype:默认"auto";原版 small/base/large 会自动设为bfloat16。- 微调参数:
fine_tune(默认False)、fine_tune_lr(默认 1e-5;原版 Chronos 建议 1e-4)、fine_tune_steps(默认 1000)、fine_tune_batch_size(默认 32)、fine_tune_shuffle_buffer_size(默认 10000)、eval_during_fine_tune、fine_tune_eval_max_items、fine_tune_trainer_kwargs、keep_transformers_logs、revision。
Chronos2Model
Chronos 的后续版本,同样支持零样本预测与微调(实现位于 models/chronos/chronos2.py)。
TotoModel 与 Toto2Model
Toto 系列预训练模型:Toto 通过文本化的方式利用历史协变量与已知协变量进行预测;Toto2 为后续版本。二者实现分别位于 models/toto/ 与 models/toto2/,均内置完整骨干网络与分词器实现,支持从 HF Hub 加载预训练权重。
九、所有模型共享的超参数
以下三个超参数对所有AutoGluon-TimeSeries 模型通用,其底层实现在 models/abstract/abstract_timeseries_model.py(allowed_hyperparameters统一声明,训练/预测时按固定顺序应用)。
target_scaler(目标值缩放)
- 取值:
{"standard", "mean_abs", "robust", "min_max", None},默认None。 - 作用:训练/预测前将每条序列按
(y - loc) / scale缩放,预测结果再按y * scale + loc逆变换还原。loc与scale按每条时间序列分别计算。"standard":loc = mean(y),scale = std(y)(标准化);"mean_abs":loc = 0,scale = mean(abs(y))(平均绝对值);"robust":loc = median(y),scale = quantile(y, 0.75) - quantile(y, 0.25)(稳健缩放);"min_max":将数据变换到 (0, 1) 区间,loc = min(y),scale = max(y) - min(y);None:不做缩放。
covariate_scaler(协变量缩放)
- 取值:
{"global", None}。 - 作用:若提供,在拟合模型前对已知协变量与静态特征应用所选缩放。这对假设输入已归一化的深度学习模型尤其有帮助。
"global":偏斜特征用QuantileTransform,布尔特征直通,其余特征用StandardScaler;None:不缩放协变量。
- 默认值:GluonTS 系模型默认
"global",其余模型默认None。
covariate_regressor(协变量回归器)
- 取值:
{"LR", "GBM", "CAT", "XGB", "RF", None},默认None(分别对应线性回归、梯度提升、CatBoost、XGBoost、随机森林)。 - 作用:若提供,将用已知协变量与静态特征拟合一个表格回归模型,在同一时间步预测目标列;然后把回归器预测值从目标列中减去,让预测模型只对残差建模;预测时再把回归器预测值加回。
- 建议与注意事项:
- 启用
covariate_regressor时,建议同时启用target_scaler,通常能提升精度并加快回归器拟合; - 若同时提供
target_scaler与covariate_regressor,缩放先于回归器执行; - 实现上,回归器拟合会占用
time_limit的一部分(源码中_covariate_regressor_fit_time_fraction = 0.5)。
- 启用
十、MXNet 模型已弃用
曾经基于 GluonTS 的MXNet 模型因 MXNet 的依赖冲突问题已被弃用。当前所有 GluonTS 系模型均已切换到 PyTorch 实现(见 models/gluonts/ 中的模块说明:"Module including wrappers for PyTorch implementations of models in GluonTS"),请勿再使用 MXNet 相关模型名。
十一、附加特征支持能力表
下表总结了各模型对附加特征(协变量)的支持情况;未出现在表中的模型当前不支持任何附加特征。
| 模型 | 静态特征(连续 + 分类) | 已知协变量(连续 + 分类) | 历史协变量(连续 + 分类) |
|---|---|---|---|
DirectTabularModel | ✅ | ✅ | — |
RecursiveTabularModel | ✅ | ✅ | — |
DeepARModel | ✅ | ✅ | — |
PatchTSTModel | — | ✅ | — |
TemporalFusionTransformerModel | ✅ | ✅ | ✅ |
TiDEModel | ✅ | ✅ | — |
WaveNetModel | ✅ | ✅ | — |
Chronos2Model | — | ✅ | ✅ |
补充说明:除了上表,AutoGluon 中的所有模型都可以通过设置covariate_regressor超参数来处理已知协变量与静态特征。不过需要注意:这种方式有时反而会降低预测精度,尤其是当这些特征信息量不足时。
十二、进阶阅读
- 手动配置模型的完整教程见 docs/tutorials/timeseries/forecasting-indepth.ipynb(Manually configuring models / Hyperparameter tuning 章节);
- 集成(Ensemble)模型(加权集成、贪心集成等)见 docs/tutorials/timeseries/forecasting-ensembles.md;
- 全部模型的单元测试(含各模型训练/预测正确性验证)位于 timeseries/tests/unittests/models/test_models.py,可作为查看各模型默认行为与最小可用示例的补充材料;
- 每个模型的完整超参数文档与默认值,均可直接在对应源码文件的类 docstring("Other Parameters" 段)中查阅。
【免费下载链接】autogluonFast and Accurate ML in 3 Lines of Code项目地址: https://gitcode.com/GitHub_Trending/au/autogluon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考