TimeGPT 首个时间序列基础模型介绍与实践
TimeGPT 是首个用于时间序列的基础模型,能够利用预训练知识对未见过的数据集进行准确预测。本文详细介绍了 TimeGPT 的背景、架构原理、零样本学习与微调方法,并通过 Python 代码示例展示了其安装与使用流程。实验结果表明,TimeGPT 在性能、效率和简单性方面优于传统统计及深度学习方法,适用于金融、气象等多领域场景。文章还涵盖了环境配置、数据预处理、可视化及不确定性量化等实践细节,为开发者提供了完整的入门指南。

TimeGPT 是首个用于时间序列的基础模型,能够利用预训练知识对未见过的数据集进行准确预测。本文详细介绍了 TimeGPT 的背景、架构原理、零样本学习与微调方法,并通过 Python 代码示例展示了其安装与使用流程。实验结果表明,TimeGPT 在性能、效率和简单性方面优于传统统计及深度学习方法,适用于金融、气象等多领域场景。文章还涵盖了环境配置、数据预处理、可视化及不确定性量化等实践细节,为开发者提供了完整的入门指南。

时间序列数据在金融、医疗保健、气象学、社会科学等领域是不可或缺的。识别时间模式、趋势和周期性变化对于预测未来价值和为决策过程提供信息至关重要。然而,目前对时间序列的理论和实践理解尚未在从业者中达成共识,预测科学领域的努力未能实现真正通用的预训练模型的承诺。
TimeGPT 是第一个用于时间序列的基础模型,能够为训练期间未见过的多样化数据集生成准确的预测。大规模时间序列模型通过利用当代深度学习进步的能力,使精确预测和减少不确定性成为可能。通过对预训练模型进行了评估,并与既定的统计、机器学习和深度学习方法进行了比较,证明了 TimeGPT 在性能、效率和简单性方面表现出色。
深度学习方法在时间序列分析中具有显著优势,如全局性、可扩展性、灵活性和潜在准确性,能有效学习复杂数据依赖关系,避免复杂特征工程。然而,其有用性、准确性和复杂性受到质疑。学术研究人员和从业者对深度学习模型的优越性能看法不一,有人质疑其基本假设,而一些行业领导者报告其增强了成果,简化了分析流程。
时间序列分析领域对神经预测方法的性能持怀疑态度,源于评估设置未对齐或定义不清晰、次优模型、缺乏符合要求的大规模标准化数据集。更大和更多样化的数据集能使更复杂的模型在各种任务中表现得更好。
深度学习预测模型在研究和产业中广泛应用,其成功源于对已建立的架构(RNN 和 CNN)的改进。这些模型最初是为自然语言处理和计算机视觉设计的,但现已广泛应用于时间序列预测。
基础模型在时间序列预测任务中的潜力仍然未被充分探索,但有迹象表明可以在不降低性能的情况下将预训练模型转移到不同任务上,且在时间序列预测任务中存在数据和模型规模的扩展律。
迁移学习是指将一项任务中学到的知识应用于解决新任务的能力。在时间序列预测中,预测模型提供一个函数 fθ,将特征空间 X 映射到因变量空间 Y。设定中,X 包括目标时间序列 y 和外生协变量 x,Y 为目标时间序列的未来部分。预测任务的目标是估计条件分布。
迁移学习是在大型源数据集上预训练模型,以提高其在新预测任务上的性能。本文探讨了两种情况:零样本学习和微调。
基础模型的核心思想是利用这些原则,通过最大的公开可用时间序列数据集进行训练,利用数据集和模型规模的比例关系。多种多样的数据集允许 TimeGPT 从未有过的大量时间模式中获得洞见,这些模式跨越多个领域。
TimeGPT 是一种由 Nixtla 开发的专门用于预测任务的生成式预训练 Transformer 模型,具有自我关注机制,采用历史值窗口生成预测,添加局部位置编码,由多层编码器 - 解码器结构组成,每个结构都具有残差连接和层归一化。最后,线性层将解码器的输出映射到预测窗口维度。
TimeGPT 旨在处理不同频率和特征的时间序列,同时适应不同的输入大小和预测范围。这种适应性在很大程度上归因于 TimeGPT 所基于的基于 transformer 的底层架构。
TimeGPT 可以仅使用历史值作为输入,无需训练即可对新时间序列进行准确预测。TimeGPT 在历史上最大的数据集上进行了训练,该数据集包含超过 1000 亿行的金融、天气、能源和网络数据,并使时间序列分析的力量大众化。该工具能够在几秒钟内辨别模式并预测未来的数据点。
TimeGPT 模型'读取'时间序列数据的方式与人类读取句子的方式非常相似——从左到右。它查看过去数据的窗口,我们可以将其视为'标记',并预测接下来会发生什么。该预测基于模型在过去数据中识别并推断未来的模式。
API 为 TimeGPT 提供了一个接口,允许用户利用其预测功能来预测未来的事件。TimeGPT 还可以用于其他与时间序列相关的任务,如假设场景、异常检测、财务预测等。
在使用 TimeGPT 之前,需要确保 Python 环境配置正确。推荐使用 Python 3.8 及以上版本。
pip install nixtlats
如果需要使用特定的依赖项或更新库,可以使用以下命令:
pip install --upgrade nixtlats
只需导入库,然后用几行代码就可以开始预测!
首先,准备数据。这里我们加载一个示例电力消耗数据集。
import pandas as pd
from nixtlats import TimeGPT
# 读取数据
df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv')
# 初始化 TimeGPT 模型
# token 默认为 os.environ.get("TIMEGPT_TOKEN"),也可以直接传入
timegpt = TimeGPT(token='my_token_provided_by_nixtla')
# 执行预测
# h=24 表示预测未来 24 个时间点
# level=[80,90] 表示生成 80% 和 90% 的置信区间
fcst_df = timegpt.forecast(df, h=24, level=[80,90])
print(fcst_df)
运行上述代码后,系统会输出日志信息,包括验证输入、预处理数据、推断频率等步骤。
INFO:nixtlats.timegpt:Validating inputs...
INFO:nixtlats.timegpt:Preprocessing dataframes...
INFO:nixtlats.timegpt:Inferred freq: H
INFO:nixtlats.timegpt:Restricting input...
INFO:nixtlats.timegpt:Calling Forecast Endpoint...
预测完成后,可以使用内置绘图功能查看结果。
timegpt.plot(df, fcst_df, level=[80,90], max_insample_length=24*5)
这将展示历史数据以及预测的未来趋势和置信区间。
TimeGPT 接受了最大的公开时间序列集合的训练,包含 1000 亿个数据点,涵盖金融、经济等广泛领域。数据集具有多种时间模式、季节性、周期和趋势,以及噪声和异常值。大多数序列以原始形式包含,处理仅限于格式标准化和填补缺失值。这种多样性使 TimeGPT 能够处理各种场景,增强其鲁棒性和泛化能力,从而准确地预测未知的时间序列。
TimeGPT 在 NVIDIA A10G GPU 集群上训练,进行了超参数探索,旨在优化学习率和批大小等关键参数。实验结果表明,较大的批大小和较小的学习率对模型性能具有积极的影响。该模型在 PyTorch 框架中实现,并采用 Adam 优化器进行训练。我们还实施了学习率衰减策略,将其降低到初始值的 12%。
概率预测评估模型在风险评估和决策中具有重要作用,其预测的不确定性能够为决策提供重要的参考依据。保形预测作为一种非参数方法,能够生成具有指定覆盖率精度的预测区间,且无需严格的分布假设。这一特性使其在模型和时间序列的未知领域中具有广泛应用。
在处理新时间序列推理问题时,我们采用滚动预测的方法来估计模型预测特定目标时间序列的误差,以确保预测的准确性。
传统的预测性能评估方法,如划分训练集和测试集,已经无法满足基础模型的评估需求。这是因为这些模型的主要功能是预测全新序列。因此,我们特别关注 TimeGPT 的预测基础模型能力。为了对其进行测试,我们选择了大量未见过的时间序列,包括 30 万个以上的不同领域数据。
测试中,我们关注每个时间序列最后一个预测窗口的评估,其长度会根据采样频率的变化而变化。TimeGPT 在预测时,仅使用历史数据作为输入,并未对模型权重进行再训练(零样本学习)。并且,根据实际需求的不同频率,我们设定了不同的预测范围:12 表示每月,1 表示每周,7 表示每天,24 表示每小时的数据。这样的设置更能体现出 TimeGPT 在实际应用中的价值。
TimeGPT 在基准测试中对比了广泛的基线、统计、机器学习和神经预测模型,提供了全面的性能分析。基线和统计模型基于最后一个预测窗口之前的历史值进行训练。我们选择全局模型方法用于机器学习,并利用所有时间序列为每个频率选择深度学习方法。由于计算要求高和训练时间长,排除了 Prophet 和 ARIMA 等模型。
评价指标包括相对平均绝对误差(rMAE)和相对均方根误差(rRMSE),均以季节性朴素模型为基准进行归一化处理。这些相对误差指标能提供额外洞见,展示相对于已知基准的性能提升,提高结果可解释性。它们还具有尺度独立性,有助于比较每种频率的结果。为确保数值稳定性和评估一致性,对指标进行全局归一化处理。
我们在零样本推理上测试了 TimeGPT 的功能,即未在测试集上执行额外微调。表 1 显示了其零样本结果。TimeGPT 的性能优于经过战斗测试的综合统计模型和 SoTA 深度学习方法,在各个频率中排名前三。
评估预测模型的有效性需比较其与竞争替代方案的表现。虽然准确性是关键指标,但计算成本和实现复杂性在实际应用中也至关重要。TimeGPT 通过简单、快速地调用预训练模型进行预测,相比其他模型所需的完整训练和预测管道更为优越。
微调是利用基础模型和基于 transformer 架构的关键步骤,通过在特定任务数据集上调整模型参数,使模型根据新任务要求调整其广泛知识。此过程保持模型广泛理解,并擅长特定任务。基于 transformer 的架构受益于微调,提高在特定领域应用的性能。微调是连接基础模型广泛能力和目标任务特性的重要桥梁。
如图 5 所示,TimeGPT 在测试集上针对时间序列子集的微调步骤数提高准确度。这表明在拥有少量标注数据的情况下,微调能进一步提升模型性能。
在零样本推断方面,TimeGPT 的 GPU 推断速度为每系列 0.6 毫秒,与简单季节性朴素推断相当,远快于并行计算优化的统计方法(每系列 600 毫秒)和全局模型(如 LGBM、LSTM 和 NHITS,每系列 57 毫秒)。由于其零样本推断能力,TimeGPT 的总速度比传统统计方法和全局模型快几个数量级。
TimeGPT 通过简化预测过程,显著减少了复杂性和时间投入,同时实现了最先进的性能。在时间序列中引入基础模型是一个重要里程碑,但还有许多未解决的问题。未来的研究方向包括有见地的预测和时间序列嵌入,以及多模态和多时态基础模型的整合。
随着技术的演进,TimeGPT 有望在更多垂直领域落地,帮助企业实现数据驱动的自动化决策。开发者可以通过 API 轻松集成,无需深厚的机器学习背景即可享受大模型带来的红利。
TimeGPT 代表了时间序列预测领域的一个重要突破。它结合了深度学习的强大表达能力和基础模型的泛化能力,解决了传统方法在面对新序列时的局限性。通过零样本学习和微调,TimeGPT 在不同频率和数据量的场景下均表现出优异的性能。对于希望快速构建预测系统的企业和个人而言,TimeGPT 提供了一个高效、易用的解决方案。
建议在实际应用中,结合业务场景选择合适的预测窗口和置信水平,并充分利用其提供的不确定性量化功能来辅助风险管理。随着生态的完善,TimeGPT 将成为时间序列分析工具箱中的核心组件之一。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online