TimeGPT是首个时间序列基础大模型,能准确预测多样化数据集。评估显示,TimeGPT推理在性能、效率和简单性上优于统计、机器学习和深度学习方法。
不确定性是生活的一部分,人们一直在努力预测未来。预测潜在结果的愿望是多学科的基础,反映了人类预测、制定战略和降低风险的倾向。时间序列数据在许多领域中不可或缺,用于识别时间模式、趋势和周期性变化,以预测未来价值和为决策过程提供信息。然而,目前对时间序列的理论和实践理解尚未达成共识,预测科学领域的努力未能实现真正通用的预训练模型。
关于深度学习方法的优越性,预测界存在分歧。尽管深度学习在其他领域取得成功,但时间序列从业人员对其有用性、准确性和复杂性提出质疑。历史上,统计方法如ARIMA、ETS等已在各领域得到应用,而近年来机器学习模型如XGBoost和LightGBM在竞赛和实际应用中取得了良好效果。
深度学习方法在学术界和工业预测应用中变得流行,因其全局方法在可扩展性、灵活性和潜在准确性方面具有优势,并能有效学习复杂数据依赖关系,简化预测流程并增强可扩展性。然而,学术研究人员和从业者对这些承诺存在分歧。一些人质疑提高准确性的基本假设,认为更简单模型优于更复杂方法,而另一些行业领导者则报告深度学习方法增强了他们的成果,简化了分析流程。
当前背景下,深度学习在NLP和CV领域的优越性能无可否认,但时间序列分析领域对神经预测方法的性能持怀疑态度。这种怀疑源于评估设置未对齐或定义不清晰、次优模型、缺乏大规模标准化数据集。与其他受益于理想测试数据集的领域不同,公开可用的时间序列数据集不具备深度学习方法所需的规模和数量。因此,尽管深度学习方法具有潜在优势,但由于种种挑战和限制,其在时间序列分析领域的应用和性能仍需进一步研究和验证。
图1 单系列预测和多系列预测示意图
深度学习预测模型在Makridakis竞赛中取得成功,广泛应用于产业大规模任务。最初的成功源于对RNN和CNN的改进,这两种架构最初为NLP和CV设计。RNNs和CNNs在时间序列预测中表现优异。前馈网络由于计算成本低、效率高,也经常被使用。
近年来,基于Transformer的模型越来越受欢迎,因为它们在大规模设置和复杂任务中表现出卓越的性能。基础模型在时间序列预测任务中的潜力仍然相对未被探索,但有一些关于预测基础模型可能性的早期迹象。
基础模型依赖跨领域泛化能力,尤其是面对新数据集。迁移学习是将一个任务的知识用于新任务。预测模型给出一个函数fθ : X 7→ Y,其中X是特征空间,Y是因变量空间。我们考虑X = {y[0:t] , x[0:t+h]}和Y = {y[t+1:t+h]},目标是估计以下条件分布:
迁移学习是在源数据集上预训练模型,以提高在目标数据集的新预测任务上的性能。有两种情况:零样本学习和微调。在零样本学习中,直接转移预训练模型;在微调中,则在新数据集上进一步训练模型。基础大模型的核心思想是利用大规模公开可用时间序列数据集进行训练,并利用数据集和模型规模的比例关系。多种多样的数据集使TimeGPT能够洞见大量时间模式。
TimeGPT是Nixtla开发的用于预测任务的生成式预训练Transformer模型,具有自我关注机制和局部位置编码,由多层编码器-解码器结构组成,每个结构都具有残差连接和层归一化。该模型旨在处理不同频率和特征的时间序列,同时适应不同的输入大小和预测范围。TimeGPT可以仅使用历史值作为输入,无需训练即可对新时间序列进行准确预测。该模型在历史上最大的数据集上进行了训练,包含超过1000亿行的金融、天气、能源和网络数据。API为TimeGPT提供了一个接口,允许用户利用其预测功能来预测未来的事件。
5.2 训练数据集
TimeGPT在训练过程中,使用了规模最大的公开时间序列数据集,该数据集包含了高达1000亿个数据点,覆盖了金融、经济等多个领域。这个数据集的特点在于其多样性,包含了多种时间模式、季节性、周期和趋势,同时也存在噪声和异常值。在处理这些序列时,我们仅进行了格式标准化和缺失值填补等基本操作,尽量保留了数据的原始信息。这种处理方式使得TimeGPT能够适应各种复杂场景,提升其鲁棒性和泛化能力,从而实现对未知时间序列的准确预测。
TimeGPT在NVIDIA A10G GPU集群上训练,进行了超参数探索以优化学习率、批大小等。发现较大的批大小和较小的学习率有益。在PyTorch中实现,使用Adam训练,学习率衰减到初始值的12%。
概率预测评估模型预测的不确定性,有助于风险评估和决策。保形预测是一种非参数方法,能生成具有指定覆盖率精度的预测区间,无需严格的分布假设,适用于模型和时间序列的未知领域。在新时间序列推理中,我们滚动预测以估计模型预测特定目标时间序列的误差。
图2 TimeGPT 在最大的公开时间序列集合中进行了训练,并且可以预测未见过的时间序列,而无需重新训练其参数
6 实验结果
传统预测性能评估方法,如划分训练集和测试集,不足以评估基础模型,因为它们主要属性是预测完全新颖的序列。
本节探讨了TimeGPT作为预测基础模型的能力,通过从未见过的大量不同时间序列中测试TimeGPT。测试集包括多个领域的30多万个时间序列。评估在每个时间序列的最后一个预测窗口中进行,其长度随采样频率的变化而变化。TimeGPT使用以前的历史值作为输入,如图3,而不重新训练其权重(零样本)。根据频率指定了不同的预测范围,以表示常见的实际应用:12表示每月,1表示每周,7表示每天,24表示每小时的数据。
图3 新时间序列的推断。TimeGPT以目标值的历史值和额外的外生变量作为输入,生成预测。我们依靠基于历史误差的保形预测来估计预测区间。
图4 TimeGPT和各组模型在月频率上的相对平均绝对误差(rMAE)。图中每个豆子代表一组模型的rMAE分布,中心线显示平均值。TimeGPT的性能领先,其次是深度学习方法、统计方法、机器学习和基线模型。其他频率的结果类似。
本文对基准测试中的性能分析进行了全面研究,涉及基线、统计、机器学习和神经预测模型。基线和统计模型基于历史值训练,机器学习采用全局模型和深度学习方法,排除了Prophet和ARIMA等模型。评估指标包括相对平均绝对误差和相对均方根误差,这些指标以季节性朴素模型为基准进行了归一化处理,展示了相对于已知基准的性能提升,提高了结果的可解释性。同时,这些指标具有尺度独立性,有助于比较每种频率的结果。为了确保数值的稳定性和评估的一致性,对这些指标进行了全局归一化处理。具体的计算方式详见方程2。
TimeGPT在零样本推理测试中表现出色,无需额外微调即可在测试集上表现出色。表1显示了其零样本结果,其性能明显优于其他模型。在实际应用中,TimeGPT通过简单、快速地调用预训练模型进行预测,提高了预测效率,降低了计算成本和实现复杂性,因此更具竞争力。
表1 使用零样本推断和使用rMAE和rRMSE测量的基准模型的TimeGPT的主要性能结果,得分越低越好。每个频率和度量的最佳模型以粗体突出显示,第二个最佳模型以下划线突出显示,而第三个最佳模型则以虚线突出显示。
微调是利用基础模型和基于transformer架构的关键步骤。基础模型在大量数据上预训练,捕获通用特征,但需针对特定背景或领域专门化。微调在特定任务数据集上调整模型参数,使模型根据新任务要求调整现有知识,保持广泛理解并擅长特定任务。由于transformer架构的灵活性和学习复杂模式的能力,微调特别有益,提高特定领域性能。因此,微调是连接基础模型广泛能力和目标任务特性的重要桥梁。图5显示TimeGPT在测试集上针对时间序列子集的微调步骤数与准确度提高的关系。
图5 对测试集的时间序列子集进行微调后的 TimeGPT 性能
在零样本推断方面,TimeGPT的GPU推断速度在零样本推断方面表现出色,平均每系列只需0.6毫秒,与简单季节性朴素推断相当。相比之下,并行计算优化的统计方法和全局模型(如LGBM、LSTM和NHITS)的速度较慢,每系列需要600毫秒和57毫秒。因此,TimeGPT的总速度比传统统计方法和全局模型快几个数量级。
当前预测实践涉及数据处理、模型训练和选择等复杂步骤。TimeGPT通过简化推理步骤,简化了这一过程,减少了复杂性和时间投入,同时仍能实现最先进的性能。TimeGPT展示了大模型的优势,为预测领域带来深远影响。基础模型对预测领域产生重要影响,并重新定义当前做法。
TimeGPT在时间序列领域引入基础模型,为未来改进开辟可能道路,被认为是时间序列领域的一个重要里程碑。然而,该工作还有许多限制和未解决的问题。虽然TimeGPT展示了惊人的结果,但仍需关注一些限制和问题。
未来的研究方向主要包括:1)有见地的预测;2)时间序列嵌入。此外,关于时间序列分类的基础模型以及真正多模态和多时态基础模型的整合也有望成为未来研究的热点领域。这些领域将有助于我们开发更强大和更通用的预测模型。
安装
pip install nixtlats
如何使用
只需导入库,然后用两行代码就可以开始预测!
df = pd.read_csv('https://raw.githubusercontent.com/Nixtla/transfer-learning-time-series/main/datasets/electricity-short.csv')
from nixtlats import TimeGPT
timegpt = TimeGPT(# defaults to os.environ.get("TIMEGPT_TOKEN")
token ='my_token_provided_by_nixtla')
fcst_df = timegpt.forecast(df, h=24, level=[80,90])
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)