统一零样本时间序列预测:Darts基础
摘要
Darts,一个广受欢迎的开源Python时间序列分析库,引入了一个统一的FoundationModel类集合,该集合整合了多种时间序列基础模型(Chronos-2、TimesFM 2.5、TiRex、PatchTST-FM),通过标准化接口和最小依赖实现零样本和微调预测。
arXiv:2606.27438v1 Announce Type: new
摘要:自2020年首次发布以来,Darts已成为广泛使用的开源Python时间序列分析库。最近,一系列基础模型声称在零样本预测中提升了准确性,预示着从训练定制模型到利用预训练通用预测器的范式转变。然而,基础模型通常以孤立的包形式发布,接口碎片化,与常见工具的可互操作性有限,使得在完整流程中进行联合评估和集成变得困难。在Darts中,我们开发了一个统一的$\texttt{FoundationModel}$类集合(Chronos-2、TimesFM 2.5、TiRex、PatchTST-FM),提供了标准化的全周期预测接口,外部依赖极少,便于将基础模型集成到生态系统中。现有的Darts流程现在只需更改名称即可使用基础模型;新的流程则可以利用它们进行零样本或微调预测、不确定性估计和回测,结合数据处理和评估工具,全部在一个统一的框架内完成。
查看缓存全文
缓存时间: 2026/06/29 05:22
# 统一零样本时间序列预测:Darts 基础
来源:https://arxiv.org/html/2606.27438
###### 摘要
自2020年首次发布以来,Darts 已成为广泛使用的开源 Python 时间序列分析库。最近一系列基础模型声称在零样本预测中提升了准确性,预示着一个从训练定制模型向利用预训练通用预测器的范式转变。然而,基础模型通常作为独立包发布,接口碎片化,与常用工具互操作性有限,使得在完整流水线中进行联合评估和集成变得困难。在 Darts 中,我们开发了一个统一的基础模型类集合(Chronos-2、TimesFM 2.5、TiRex、PatchTST-FM),提供标准化的全周期预测接口,并将外部依赖降至最低,从而将基础模型集成到生态系统中。现有的 Darts 流水线现在只需更改名称即可使用基础模型;新流水线可将其用于零样本或微调预测、不确定性估计和回测,并结合数据处理和评估工具,全部在统一框架内完成。
机器学习、开源工具、时间序列预测、基础模型
∗同等贡献
快速入门[⬇](data:text/plain;base64,IyBJbnN0YWxsIHZpYSBgcGlwIGluc3RhbGwgZGFydHNbdG9yY2hdYApmcm9tIGRhcnRzLmRhdGFzZXRzIGltcG9ydCBXaW5lRGF0YXNldApmcm9tIGRhcnRzLm1vZGVscyBpbXBvcnQgVGltZXNGTTJwNU1vZGVsCgpzZXJpZXMgPSBXaW5lRGF0YXNldCgpLmxvYWQoKS5hc3R5cGUoImYiKQptb2RlbCA9IFRpbWVzRk0ycDVNb2RlbCgKICAgIGlucHV0X2NodW5rX2xlbmd0aD0zNiwKICAgIG91dHB1dF9jaHVua19sZW5ndGg9MTIKKS5maXQoc2VyaWVzKQpmb3JlY2FzdCA9IG1vZGVsLnByZWRpY3Qobj0xMiwgc2VyaWVzPXNlcmllcyk=)
```python
# 通过 pip install darts[torch] 安装
from darts.datasets import WineDataset
from darts.models import TimesFM2p5Model
series = WineDataset().load().astype("f")
model = TimesFM2p5Model(
input_chunk_length=36,
output_chunk_length=12
).fit(series)
forecast = model.predict(n=12, series=series)
```
## 1 引言
预训练于海量真实世界和合成数据(Godahewa 等人,2021;Aksu 等人,2024;Goswami 等人,2024)的时间序列基础模型(TSFMs)(Garza 和 Mergenthaler-Canseco,2023;Goswami 等人,2024;Woo 等人,2024;Ansari 等人,2024;Das 等人,2024;Auer 等人,2025;Ansari 等人,2025;Graf 等人,2025;Wen 等人,2026;Fu 等人,2026)捕捉了多样的时间模式,并正成为无需进一步训练即可应用于未见时间序列的通用预测器,即零样本预测。所有这些模型都相继声称在公共基准测试(Wu 等人,2023;Aksu 等人,2024;Shchur 等人,2025)上相比序列和任务特定模型有所改进,并设想了一个未来,其中 TSFMs 替代大多数(如果不是全部)预测任务的专门模型。成功应用包括预测呼吸道疾病发病率(欧洲疾病预防控制中心,2026)、零售销售(Bruned,2025;Pokrzywa,2026)以及缺陷检测(Zhang 等人,2025)。
然而,如果 TSFMs 继续存在于孤立的包中,既没有统一的 API,也无法与常见的时间序列工具互操作,那么这一愿景将仍然只是愿景。希望使用 TSFMs 的现有预测流水线必须为每个 TSFM 的特殊接口进行改造。依赖冲突和不同行为(例如,概率采样)常常伴随多个 TSFMs 出现。此外,使用 TSFMs 的新流水线仍然需要常见的处理(例如,重采样)和评估(例如,指标)工具,而这些工具要么不可用,要么在 TSFM 包中被重写,导致碎片化和重复工作。
自 2020 年首次发布以来,Darts(Herzen 等人,2022)一直致力于成为一个用户友好、多功能的时间序列机器学习库,为预测、分类和异常检测提供统一的 API,并包含数据转换和评估工具。尽管 TSFMs 仍处于起步阶段,并且面临泛化性(Mulayim 等人,2024)和基准测试实践(Bergmeir,2024)方面的担忧,但我们相信共同的 TSFM 基础有助于用户采用和公平比较,并且 Darts 完全有能力提供这个基础。
表 1:截至 2026 年 6 月,开源 Python 库中基础模型的支持情况,包括模型可用性、预测能力(协变量、概率和多个序列)、微调能力和可解释性。同一系列的模型计为一个。
在 Darts 中,我们开发了一个具有统一 API 和最小外部依赖的基础模型类集合,最初包括 Chronos-2(Ansari 等人,2025)、TimesFM 2.5(Das 等人,2024)、TiRex(Auer 等人,2025)和 PatchTST-FM(Wen 等人,2026)。封面展示了一个三行快速入门示例,唯一需要的安装是 `darts[torch]`。
在 Darts 生态系统中,最终用户现在可以共同部署 TSFMs 与专门模型和通用工具,确保一致的预测协议并最小化依赖冲突。在统一 API 下,模型之间的切换就像更改名称一样简单,联合评估或集成也变得直接。另一方面,TSFM 提供商可以将他们的模型打包到 Darts 中,以覆盖广泛的用户群,并减少重写通用工具的工作,因为我们为所有 TSFM 提供了公平的竞争环境,并为最终用户提供了短路径。
Darts 并不是唯一提供零样本预测的框架;表 1 列出了我们所知的同时代开源库及其对 TSFM 的支持。这包括 nixtla(Garza 和 Mergenthaler-Canseco,2023)、sktime(Löning 等人,2019)、AutoGluon(Shchur 等人,2023)、skforecast(Amat Rodrigo 和 Escobar Ortiz,2026)、aeon(Middlehurst 等人,2024)、NeuralForecast(Olivares 等人,2022)、PyTorch Forecasting(Beitner,2020)和 Transformers(Wolf 等人,2020)。值得一提的还有 TimeCopilot(Garza 和 Rosillo,2025),一个使用语言模型编排预测工作流的智能体工具包。
我们不声称 Darts 优于或比其他库更完整,因为每个库都以其自己的方式吸引目标用户。我们在本文中的贡献是:
- 一个统一的基础模型 API,集成了四个 TSFMs,外部依赖最小。
- 在单一接口下原生支持协变量、概率预测和微调。
- 通过 SHAP 值为所有基于 PyTorch 的模型提供模型无关的可解释性。
- 与现有 Darts 工具(用于评估、回测和数据处理)完全互操作。
## 2 设计原则与关键特性
### 2.1 基础模型统一 API
新的基础模型类最小程度地扩展了 `TorchForecastingModel`(无额外方法),是所有 PyTorch 原生 TSFM 的基类。与所有 Darts 模型一样,它提供标准化的 `fit(series: TimeSeries)` 和 `predict(n: int)` 方法,并可以消费和生成 `TimeSeries` 对象,确保框架范围内的互操作性。`TimeSeries` 是一个不可变容器(Herzen 等人,2022),存储三维时间索引数据 `(time, components, samples)`,以及元数据等可选字段。它可以与 pandas DataFrame(pandas 开发团队,2020)和 NumPy 数组(Harris 等人,2020)等常见格式互转。如快速入门所示,即使对于无需训练的零样本预测,也必须在 `predict` 之前调用 `fit`,以强制执行统一工作流并允许模型创建和健全性检查。
在底层,基础模型使用 PyTorch Lightning 后端(Falcon 和 PyTorch Lightning 团队,2019)来调度训练和推理循环。我们将 Lightning 的 `Trainer` 关键字参数暴露给用户,以实现细粒度控制,例如早停和硬件加速。所有 `TorchForecastingModel` 的功能都得到支持,包括优化的历史预测、错误回测、残差计算以及模型加载和保存,确保跨模型的一致行为。
对于 TSFM 提供商,实现一个模型只需要两步:(1) 子类化 `PLForecastingModule` 并定义其 `forward` 传递;(2) 子类化基础模型并实现 `_create_model` 方法以返回模块实例。其余部分由 Darts 处理,从数据摄取到训练和推理。为方便提供商,我们包含一个 `HuggingFaceConnector` 类,用于从 Hugging Face Hub(Hugging Face,2021)下载和加载 safetensors 格式(Hugging Face,2022)的模型,这已成为 TSFM 分发的主要平台,但其使用不是强制性的。
### 2.2 带协变量的预测
协变量,即外生变量,为要预测的目标序列提供上下文,对许多任务至关重要。得益于 Darts 原生的协变量支持,支持协变量的 TSFM(如 Chronos-2)可以开箱即用地进行带协变量的预测。
我们将**过去协变量**定义为截至预测开始时间观测到的外生序列,**未来协变量**定义为截至预测结束时间已知的外生序列(Herzen 等人,2022),每个都包含在一个 `TimeSeries` 实例中。只需调用 `predict(n, series, past_covariates, future_covariates)` 即可进行预测。目标序列与协变量之间的对齐由 Darts 自动处理,并防止数据泄漏。
### 2.3 多序列预测
同时预测多个序列(例如,多个商店的产品销售额)很常见。Darts 允许对 `TimeSeries` 实例序列调用 `predict`,例如 `predict(n, [series1, series2, ...])`,并返回一个 `TimeSeries` 预测序列。在底层,输入序列会自动分组为小批量并并行处理以提高效率,然后输出重新组装为原始顺序。
### 2.4 优化的历史预测
历史预测模拟在过去时间点的预测,对于稳健、现实的模型评估至关重要。Darts 提供了一个高度可配置的 `historical_forecast(series, retrain: bool = True)` 方法,默认情况下在每个时间点重新训练模型并进行预测以保持模型新鲜度。当 `retrain` 为 `False` 时,它模拟无需重新训练的预测,并将历史时间点分组为批次进行并行处理,从而显著提高速度。与第 2.3 节类似,该方法接受多序列输入并返回多序列输出。此外,Darts 在此基础上提供了 `backtest` 和 `residuals` 方法,用于计算历史误差指标和预测残差。
### 2.5 概率预测
与 Darts 中的所有 `TorchForecastingModels` 一样,基础模型支持概率预测,它产生不确定性估计而不是确定性点预测,对于风险感知应用很有价值。要启用它,TSFM 必须使用其预训练时使用的似然模型进行初始化,该模型定义了预测分布族及其损失函数。Darts 支持两种概率预测模式:
1. 蒙特卡洛抽样:从指定分布生成多个预测样本轨迹
2. 直接参数预测:直接输出时变分布参数
图 1 显示了使用 Chronos-2、TiRex、TimesFM 2.5 和 PatchTST-FM 对经典航空乘客数据集(Box 和 Jenkins,1976)进行概率预测的示例,所有这些模型都使用分位数回归似然。
请参阅图注
图 1:航空乘客数据集(Box 和 Jenkins,1976)的概率预测。不确定性区间显示在虚线之间,中位数显示为实线。为可视化而调整,不表示实际性能。
对于 TSFM 提供商,基础模型可以与任意似然配对,无论是来自 Darts 还是自定义的,并相应地抽取样本。虽然大多数 TSFM 使用分位数回归进行预训练,但使用其他似然(Cohen 等人,2025)的 TSFM 也可以通过模型-似然配对得到支持,从而实现最大的灵活性。
### 2.6 任务微调
除了零样本预测,TSFM 的一个核心优势是通过微调适应特定任务(Goswami 等人,2024;Ekambaram 等人,2024;Fu 等人,2025),这可以提高准确性。Darts 通过模型初始化时的 `enable_finetuning: bool | dict[str, list[str]] | None` 参数为基础模型添加了微调支持。该参数值决定了 `fit` 调用期间模型的行为:
- `False` 或 `None`(默认):模型冻结用于零样本预测,`fit` 不更新参数。
- `True`:所有模型参数解冻用于深度微调,`fit` 执行微调。
- `dict[str, list[str]]`:仅指定的模型参数被冻结或解冻用于微调,例如 `{"unfreeze": ["layer8.*"]}` 仅更新 "layer8",或 `{"freeze": ["*.attention.*"]}` 冻结 "attention" 权重并微调其余部分。参数名称通过 Unix shell 风格的通配符(PSF,2026)匹配。
该设计涵盖了常见的 TSFM 用法,从零样本到部分和完全微调,并防止在 `predict` 调用期间更新模型。目前,参数高效微调方法(Hu 等人,2022)不受支持。
这种迁移学习范式也使 Darts 中除 TSFM 之外的深度学习模型受益。例如,人们可以训练一个基础 TFT 模型(Lim相似文章
用于时间序列预测的仅解码器基础模型
本文介绍了一篇关于时间序列基础模型(TimeFM)的研究论文,这是一种仅解码器模型,通过借鉴大型语言模型技术,在多样化的时间序列数据集上实现了近乎最佳的零样本性能。
时间序列即语言:面向通用时间序列基础模型的通用分词器
本文提出UniTok,一种将连续时间序列转化为离散标记的通用分词器,以及UniTok-FM,一个基于下一标记预测预训练的基础模型。该模型支持零样本和提示增强预测,以及通过无需训练的上下文推理实现少样本生成和分类——这是以往工作未能实现的能力。
Unicorn:通过通用相关性建模实现高维时间序列预测的规模化
本文介绍了Unicorn,一个用于对高维时间序列进行可扩展的多数据集预训练的框架,它通过潜在原型码本将相关性建模与特定通道身份解耦,从而实现了领域迁移和少样本预测。
GlucoFM-Bench: 血糖预测的时间序列基础模型基准测试
GlucoFM-Bench 评估了用于血糖预测的时间序列基础模型,在15个数据集上展示了Chronos-2和TimesFM在零样本/少样本迁移方面的强劲表现,但指出当完整训练数据可用时,轻量级LSTM的性能更优。
评估基础模型在时间序列预测中的运行可行性
本文对基础模型在时间序列预测中的应用进行了评估,与四种操作领域中的监督学习方法进行了比较,并提出了一种复杂性路由器,用于选择性地将序列分配给最优模型类别,以平衡准确性和推理成本。