CNN-QR 算法 - Amazon Forecast

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

CNN-QR 算法

Amazon Forecast CNN-QR,卷积神经网络-分位数回归,是一种专有的机器学习算法,用于使用因果卷积神经网络 (CNN) 预测标量(一维)时间序列。这种监督学习算法从大量时间序列中训练一个全局模型,并使用分位数解码器进行概率预测。

CNN-QR 入门

您可以通过两种方式使用 CNN-QR 训练预测变量:

  1. 手动选择 CNN-QR 算法。

  2. 选择 AutoML(CNN-QR 是 AutoML 的一部分)。

如果您不确定要使用哪种算法,我们建议选择 AutoML,如果 CNN-QR 是最适合您的数据的算法,Forecast 将选择 CNN-QR。要查看 CNN-QR 是否被选为最精确的模型,请使用DescribePredictorAPI 或在控制台中选择预测器名称。

以下是 CNN-QR 的一些关键用例:

  • 使用大型复杂数据集进行Forecast-CNN-QR 在使用大型复杂数据集进行训练时效果最佳。神经网络可以跨多个数据集学习,这在你有相关的时间序列和项目元数据时很有用。

  • 使用历史相关时间序列进行Forecast-CNN-QR 不要求相关的时间序列包含预测范围内的数据点。这种增加的灵活性使您可以包括更广泛的相关时间序列和商品元数据,例如商品价格、事件、网络指标和产品类别。

  • Forecast 特殊情况-CNN-QR 可用于冷启动场景,在这些场景中,现有历史数据很少或根本没有。项目元数据和相关时间序列可用于生成冷启动预测。通过在经过训练的模型中使用相关时间序列数据的不同版本,您可以针对不同的场景和反事实运行 What-if 分析。

CNN-QR 的工作原理

CNN-QR 是一个 sequence-to-sequence (Seq2Seq) 用于概率预测的模型,它测试预测在编码序列的条件下重建解码序列的效果。

该算法允许在编码和解码序列中使用不同的特征,因此您可以在编码器中使用相关的时间序列,而将其从解码器中省略(反之亦然)。默认情况下,数据点位于预测范围内的相关时间序列将包含在编码器和解码器中。预测范围内没有数据点的相关时间序列将仅包含在编码器中。

CNN-QR 使用分层因果 CNN 作为可学习的特征提取器进行分位数回归。

为了便于学习随时间变化的模式,例如周末的峰值,CNN-QR 会根据时间序列粒度自动创建特征时间序列。例如,CNN-QR 创建了两个要素时间序列 (day-of-month 和 day-of-year)按每周时间序列频率计算。该算法使用这些派生的特征时间序列以及训练和推理期间提供的自定义特征时间序列。以下示例显示了一个目标时间序列,zi,t,以及两个派生的时间序列特征:ui,1,t代表一天中的小时,ui,2,t代表一周中的某天。


                镜像:CNN-QR 具有时频派生特征。

CNN-QR 根据数据频率和训练数据的大小自动包含这些特征时间序列。下表列出了可为每个支持的基本时间频率派生的特征。

时间序列的频率 派生的特征
分钟 minute-of-hour, hour-of-day, day-of-week, day-of-month, day-of-year
小时 hour-of-day, day-of-week, day-of-month, day-of-year
day-of-week, day-of-month, day-of-year
week-of-month, week-of-year
月份 month-of-year

在训练期间,训练数据集中的每个时间序列都由一对相邻的上下文和预测窗口组成,这些窗口具有固定的预定义长度。如下图所示,其中上下文窗口用绿色表示,预测窗口用蓝色表示。

您可以使用在给定训练集上训练的模型为训练集中的时间序列和其他时间序列生成预测。训练数据集由目标时间序列组成,目标时间序列可能与相关时间序列和项目元数据列表相关联。

下图显示了这对于编入索引的训练数据集的元素是如何工作的i. 训练数据集由目标时间序列组成,zi,t,以及两个相关的时间序列,xi,1,txi,2,t. 第一个相关的时间序列,xi,1,t,是一个前瞻性的时间序列,第二个xi,2,t,是一个历史时间序列。


                镜像:CNN-QR 包含与历史和未来相关的时间序列

CNN-QR 跨目标时间序列学习,zi,t,以及相关的时间序列,xi,1,txi,2,t,在预测窗口中生成预测,用橙色线表示。

在 CNN-QR 中使用相关数据

CNNQR 支持与历史和前瞻相关的时间序列数据集。如果您提供前瞻性的相关时间序列数据集,则任何缺失的值都将使用future 填充方法. 有关历史和前瞻相关时间序列的更多信息,请参阅使用相关的时间序列数据集.

您还可以将项目元数据集与 CNN-QR 一起使用。这些数据集包含目标时间序列中项目的静态信息。项目元数据对于几乎没有或没有历史数据的冷启动预测情景特别有用。有关项目元数据的更多信息,请参阅项目元数据。

CNN-QR 超参数

Amazon Forecast 根据选定的超参数优化 CNN-QR 模型。手动选择 CNN-QR 时,您可以选择传递这些超参数的训练参数。下表列出了 CNN-QR 算法的可调超参数。

参数名称 描述
context_length
有效值

正整数

有效范围

10 至 500

典型值

2 *ForecastHorizon至 12 *ForecastHorizon

可调 HPO

模型在进行预测之前读取的时间点数。通常,CNN-QR 的值更大context_length比 Deepar+ 更好,因为 CNN-QR 不使用滞后来查看进一步的历史数据。

如果值为context_length超出预定义范围,CNN-QR 将自动设置默认值context_length到适当的值。

use_related_data
有效值

ALL

NONE

HISTORICAL

FORWARD_LOOKING

默认值

ALL

可调 HPO

确定要在模型中包含哪些类型的相关时间序列数据。

请选择以下任一选项:

  • ALL:包括所有提供的相关时间序列。

  • NONE:排除所有提供的相关时间序列。

  • HISTORICAL: 仅包含以下相关时间序列请执行该操作延伸到预测范围。

  • FORWARD_LOOKING: 仅包含以下相关时间序列延伸到预测范围。

HISTORICAL包括所有与历史相关的时间序列,以及FORWARD_LOOKING包括所有与前瞻性相关的时间序列。您不能选择的子集HISTORICAL要么FORWARD_LOOKING相关时间序列表。

use_item_metadata
有效值

ALL

NONE

默认值

ALL

可调 HPO

确定模型是否包含项目元数据。

请选择以下任一选项:

  • ALL:包括所有提供的项目元数据。

  • NONE:排除所有提供的项目元数据。

use_item_metadata要么包含所有提供的项目元数据,要么不包含任何元数据。您不能选择项目元数据的子集。

epochs
有效值

正整数

典型值

10 到 1000

默认值

100

可调 HPO

完成传递训练数据的最大次数。较小的数据集需要更多的周期。

对于较大的值ForecastHorizoncontext_length,考虑减少周期以缩短训练时间。

超参数优化 (HPO)

超参数优化 (HPO) 是为特定学习目标选择最佳超参数值的任务。使用 Forecast,您可以通过两种方式自动执行此过程:

  1. 选择 AutoML,HPO 将自动运行 CNN-QR。

  2. 手动选择 CNN-QR 并进行设置PerformHPO = TRUE.

其他相关的时间序列和项目元数据并不总能提高 CNN-QR 模型的准确性。当您运行 AutoML 或启用 HPO 时,CNN-QR 会在有无提供的相关时间序列和项目元数据的情况下测试模型的精度,并选择精度最高的模型。

Amazon Forecast 在 HPO 期间自动优化以下三个超参数,并为您提供最终的训练值:

  • 上下文长度-确定网络可以看到多久的过去。HPO 流程会自动为context_length这样可以最大限度地提高模型精度,同时将训练时间考虑在内。

  • use_related_data-确定要在模型中包含哪些形式的相关时间序列数据。HPO 流程会自动检查您的相关时间序列数据是否改进了模型,并选择了最佳设置。

  • use_item_metadata-确定是否在模型中包含项目元数据。HPO 流程会自动检查您的项目元数据是否改进了模型,并选择了最佳设置。

注意

如果use_related_data将设置为NONE要么HISTORICAL(当为时)Holiday选择了补充功能,这意味着包括假日数据并不能提高模型的准确性。

您可以设置 HPO 配置context_length如果你设置了超参数PerformHPO = TRUE在手动选择期间。但是,如果您选择 AutoML,则无法更改 HPO 配置的任何方面。有关 HPO 配置的更多信息,请参阅IntergerParameterRangeAPI。

提示和最佳实践

避免使用较大的值 ForecastHorizon-使用超过 100 的值作为ForecastHorizon会增加训练时间并会降低模型的准确性。如果您想进一步预测将来的情况,请考虑以更高的频率进行聚合。例如,使用 5min 而不是 1min

CNN 允许更高的上下文长度-使用 CNN-QR,您可以设置context_length略高于 Deepar+,因为 CNN 的效率通常比 RNN 更高。

相关数据的特征工程-在训练模型时尝试相关时间序列和项目元数据的不同组合,并评估附加信息是否提高了准确性。相关时间序列和项目元数据的不同组合和转换将产生不同的结果。

CNN-QR 未按平均分位数进行预测— 当你设置时ForecastTypesmean CreateForecastAPI,预测将改为以中位数分位数生成 (0.5要么P50)。

冷启动项目预测— 诸如CNN-QR之类的全局模型可以跨目标时间序列、相关时间序列和项目元数据进行学习,使其适用于冷启动场景。CNN-QR 可以通过历史数据预测对与其他商品具有相似特征的新商品和 SKU 的需求。按照该操作示例笔记本开始使用。

假设分析— 通过将不同版本的历史和前瞻性相关时间序列数据与经过训练的 CNN-QR 模型结合使用,您可以针对不同的情景和反事实创建预测。例如,您可以预测对有促销和不带促销的产品的需求。按照该操作示例笔记本开始使用。