本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
DeepAR 算法的工作原理
在训练期间,DeepAR 接受训练数据集和可选的测试数据集。它使用测试数据集评估训练后的模型。通常,数据集不必包含相同的时间序列集。您可以使用在给定训练集上训练的模型来生成训练集中时间序列的未来以及其他时间序列的预测。训练数据集和测试数据集都由一个或多个(最好是多个)目标时间序列组成。可以选择将每个目标时间序列与特征时间序列向量和分类特征向量关联。有关更多信息,请参阅 DeepAR 算法的输入/输出接口。
例如,以下是索引所用的训练集的一个元素。i其中包括一个目标时间序列,Zi,t,以及两个相关的要素时间序列,Xi,1,t和Xi,2,t:

目标时间序列可能包含缺失值,这些值由时间系列中的换行符表示。DeepAR 仅支持将来已知的特征时间序列。这允许您运行 “假设” 场景。例如,如果我以某种方式改变产品价格,会发生什么?
每个目标时间序列也可以与大量分类特征关联。您可以使用这些功能对时间序列所属的分组进行编码。使用分类特征允许模型学习组的典型行为,可用于提高模型准确性。DeepAR 通过学习每个组的嵌入向量来实现这一点,该嵌入向量捕获组中所有时间序列的公共属性。
DeepAR 算法中要素时间序列的工作原理
为了便于学习与时间相关的模式(如周末的峰值),DeepAR 将根据目标时间序列的频率自动创建特征时间序列。例如,DeepAR 为每周时间序列频率创建两个特征时间序列(月中的某天和一年中的某天)。它将这些派生的特征时间序列与您在训练和推理期间提供的自定义特征时间序列一起使用。下图显示了这些派生的时间序列功能中的两个:Ui,1,t代表一天中的小时Ui,2,t一星期中的日子。

DeepAR 算法会自动生成这些要素时间序列。下表列出了支持的基本时间频率的派生特征。
时间序列的频率 | 派生的特征 |
---|---|
Minute |
|
Hour |
|
Day |
|
Week |
|
Month |
一年中的某天 |
DeepAR 通过从训练数据集中的每个时间序列中随机抽取多个训练示例来训练模型。每个训练示例包括一对具有固定的预定义长度的相邻上下文和预测窗口。这些区域有:context_length
超参数控制网络可以往前看多长时间,prediction_length
超参数控制可以往后预测多长时间。在训练过程中,该算法会忽略包含小于指定预测长度的时间序列的训练集元素。下图代表了从元素中抽取的上下文长度为 12 小时,预测长度为 6 小时的五个样本。i. 为简洁起见,我们省略了特征时间序列。xi,1,t和Ui,2,t.

为了捕获季节性模式,DeepAR 还自动提供目标时间序列中的滞后值。在每小时频率的示例中,对于每个时间指数,t = T,该模型暴露了zi,t值,过去大约 1 天、2 天和 3 天执行此操作一次。

为了推理,训练后的模型获取输入目标时间序列 (这些时间序列可能用于也可能未用于训练),并预测下一个模型的概率分布。prediction_length
值。由于 DeepAR 是针对整个数据集进行训练的,因此,预测会考虑从类似时间序列中学习的模式。
有关 DeepAR 背后数学的信息,请参阅DeepAR:利用自回归循环网络进行概率预测