项目介绍:Chronos 时间序列预测
背景
Chronos 是一种预训练的时间序列预测模型家族,其构建基于语言模型架构。团队通过对时间序列数据进行缩放和量化,将其转换为字词序列,然后利用交叉熵损失函数对这些字词进行训练。完成训练后,Chronos 可以通过给定历史数据,生成多个未来的预测轨迹。这些模型在大规模公开可用的数据集以及通过高斯过程生成的合成数据上进行了训练。
模型架构
Chronos 模型借鉴了 T5 架构(一个知名语言模型架构)。区别在于,Chronos-T5 模型使用了 4096 个不同的字词,而不是原始 T5 模型的 32128 个,因此参数更少,计算效率更高。
模型名称 | 参数数量 | 基于什么 |
---|---|---|
chronos-t5-tiny | 8M | t5-efficient-tiny |
chronos-t5-mini | 20M | t5-efficient-mini |
chronos-t5-small | 46M | t5-efficient-small |
chronos-t5-base | 200M | t5-efficient-base |
chronos-t5-large | 710M | t5-efficient-large |
零样本学习表现
Chronos 模型在零样本学习情况下的表现非常出色,尤其是在 27 个新的数据集上测试时,显示了其强大的泛化能力。这表明 Chronos 在面对从未见过的数据集时,依然能够提供准确的预测。
使用方法
-
安装: 用户可以通过以下命令安装 Chronos 模型:
pip install git+https://github.com/amazon-science/chronos-forecasting.git
-
预测: 通过使用 ChronosPipeline 来加载预训练模型,可以快速对时间序列进行预测,例如:
from chronos import ChronosPipeline pipeline = ChronosPipeline.from_pretrained("amazon/chronos-t5-small") forecast = pipeline.predict(context=torch.tensor(df["#Passengers"]), prediction_length=12, num_samples=20)
-
可视化预测结果: 可以使用 Matplotlib 来展示预测结果:
import matplotlib.pyplot as plt plt.plot(df["#Passengers"], label="historical data") plt.plot(forecast_index, median, label="median forecast") plt.fill_between(forecast_index, low, high, alpha=0.3, label="80% prediction interval") plt.legend() plt.grid() plt.show()
数据集
Chronos 在多个数据集上进行了详细的训练和评估,其使用的数据集已在 HuggingFace 平台上开放下载(包括预训练数据集和零样本测试数据集)。这些数据集可以帮助使用者快速上手并进行进一步的模型研究和开发。
结论
Chronos 为时间序列预测提供了一种全新的解决方案,结合了语言模型的架构与时间序列数据的特点,广泛适用于各种应用场景。通过开放的框架和工具,Chronos 为研究人员和开发者提供了强大的工具箱,使预测变得更为高效和准确。
如果您对 Chronos 模型感兴趣或在研究中用到了这些模型,请考虑引用相关的论文:“Chronos: Learning the Language of Time Series”。