DeepAR 算法的工作原理 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

DeepAR 算法的工作原理

在训练期间, DeepAR 接受训练数据集和可选的测试数据集。它使用测试数据集评估训练后的模型。通常,数据集不必包含相同的时间序列集。您可以使用在给定训练集上训练的模型来生成训练集中时间序列的未来以及其他时间序列的预测。训练数据集和测试数据集均包含一个或(最好是多个)目标时间序列。每个目标时间序列都可以选择与特征时间序列的向量和分类特征的向量关联。有关更多信息,请参阅DeepAR 算法的输入/输出接口.

例如,以下是按 i 编制索引的训练集的元素,该元素包含目标时间序列 Zi,t和两个关联的特征时间序列 Xi,1,tXi,2,t:


                图 1:目标时间序列和关联的特征时间序列

目标时间序列可能包含缺失值,这些值由时间系列中的换行符表示。DeepAR 仅支持将来已知的特征时间序列。这允许您运行“假设”? 方案。例如,如果我以某种方式改变产品价格,会发生什么?

每个目标时间序列也可以与大量分类特征关联。您可以使用这些功能对时间序列所属的分组进行编码。分类功能允许模型学习组的典型行为,它可以使用这些行为来提高模型准确性。DeepAR 通过学习每个 组的嵌入向量来实现这一点,该嵌入向量捕获组中所有时间序列的公共属性。

特征时间序列在DeepAR算法中的工作原理

为了便于学习与时间相关的模式(如周末的峰值), 会根据目标时间序列的频率DeepAR自动创建特征时间序列。例如, 按每周时间序列频率DeepAR创建两个特征时间序列(一月中的某天和一年中的某天)。它将这些派生的特征时间序列与您在训练和推理期间提供的自定义特征时间序列结合使用。下图显示了这两个派生的时间序列功能:ui,1,t 表示一天中的小时和 ui,2,t 星期几。


                    图 2:派生的时间序列

该DeepAR算法自动生成这些特征时间序列。下表列出了支持的基本时间频率的派生特征。

时间序列的频率 派生的特征
Minute

minute-of-hour, hour-of-day, day-of-week, day-of-month, day-of-year

Hour

hour-of-day, day-of-week, day-of-month, day-of-year

Day

day-of-week, day-of-month, day-of-year

Week

day-of-month, week-of-year

Month

一年中的某天

DeepAR 通过从训练数据集中的每个时间序列中随机采样多个训练示例来训练模型。每个训练示例包括一对具有固定的预定义长度的相邻上下文和预测窗口。context_length 超参数控制网络过去可以看到多长时间, prediction_length 超参数控制可以进行以后的预测多长时间。在训练期间,算法将忽略训练集元素,这些元素包含短于指定预测长度的时间序列。下图表示 5 个示例,其上下文长度为 12 小时,预测长度为 6 小时,从元素 i 中提取。为简洁起见,我们省略了特征时间序列 xi,1,tui,2,t.


                    图 3:采样时间序列

为了捕获季节性模式, DeepAR 还会自动从目标时间序列提供滞后值。在具有每小时频率的示例中,对于每个时间索引 t = T,模型公开 zi,t 值,过去大约 1 天、2 天和 3 天发生。


                    图 4:滞后时间序列

对于推理,训练后的模型将 作为输入目标时间序列(在训练期间可能已使用,也可能未使用),并预测下一个prediction_length值的概率分布。由于 DeepAR 是在整个数据集上训练的,因此预测会考虑从类似时间序列中学习的模式。

有关 背后的数学运算的信息DeepAR,请参阅 DeepAR:使用自回归递归网络进行概率预测。