

 Amazon Forecast 不再向新买家开放。Amazon Forecast 的现有客户可以继续照常使用该服务。[了解更多](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# 使用相关时间序列数据集
<a name="related-time-series-datasets"></a>

相关时间序列数据集包含目标时间序列数据集中未包含的时间序列数据，可能会提高预测器的准确性。

例如，在需求预测领域中，目标时间序列数据集会包括 `timestamp` 和 `item_id` 维度，而互补的相关时间序列数据集还包括以下互补特性：`item price`、`promotion` 和 `weather`。

相关时间序列数据集最多可以包含 10 个预测维度（目标时间序列数据集中相同的预测维度）和 13 个相关的时间序列特性。

**Python 笔记本**  
有关使用相关时间序列数据集的 step-by-step指南，请参阅[合并相关时间序列](https://github.com/aws-samples/amazon-forecast-samples/blob/master/notebooks/advanced/Incorporating_Related_Time_Series_dataset_to_your_Predictor/Incorporating_Related_Time_Series_dataset_to_your_Predictor.ipynb)。

**Topics**
+ [历史和前瞻性相关时间序列](#related-time-series-historical-futurelooking)
+ [相关时间序列数据集验证](#related-time-series-dataset-validation)
+ [示例：前瞻性相关时间序列文件](#related-time-series-example)
+ [示例：预测粒度](#related-time-series-granularity)
+ [传统预测器和相关时间序列](#related-time-series-legacy)

## 历史和前瞻性相关时间序列
<a name="related-time-series-historical-futurelooking"></a>

**注意**  
 预测范围内包含任何值的相关时间序列被视为前瞻性时间序列。

 相关时间序列有以下两种形式：
+  **历史时间序列**：预测范围内*没有*数据点的时间序列。
+  **前瞻性时间序列**：预测范围内*有*数据点的时间序列。

历史相关时间序列包含预测范围之前的数据点，但不包含预测范围内的任何数据点。前瞻性相关时间序列包含预测范围*之前和*之内的数据点。

![\[Time series graph showing target, forward-looking, and historical related data with forecast window.\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/short-long-rts.png)


## 相关时间序列数据集验证
<a name="related-time-series-dataset-validation"></a>

相关时间序列数据集具有以下限制：
+ 它不能包括目标时间序列中的目标值。
+ 它必须包含 `item_id` 和 `timestamp` 维度，并且必须至少包含一个相关特性（例如 `price`）。
+ 相关时间序列特性数据必须为 `int` 或 `float` 数据类型。
+ 为了使用整个目标时间序列，目标时间序列数据集中的所有项目还必须包含在相关时间序列数据集中。如果相关时间序列仅包含目标时间序列中的项目子集，则模型创建和预测生成将仅限于该特定项目子集。

   例如，如果目标时间序列包含 1000 个项目，而相关时间序列数据集仅包含 100 个项目，则模型和预测将仅基于这 100 个项目。
+ 对于在相关时间序列数据集中记录数据的频率，必须与您希望生成预测的时间间隔（预测*粒度*）匹配。

  例如，如果要按照每周粒度生成预测数据，则在相关时间序列中记录数据的频率也必须为每周记录，即使在目标时间序列中记录数据的频率是每天也是如此。
+ 相关时间序列数据集中每个项目的数据必须在目标时间序列数据集中对应 `item_id` 的起始 `timestamp` 之时或之前开始。

  例如，如果 `socks` 的目标时间序列数据从 2019-01-01 开始，而 `shoes` 的目标时间序列数据从 2019-02-01 开始，则 `socks` 的相关时间序列数据必须在 2019-01-01 当天或之前开始，`shoes` 的数据必须在 2019-02-01 当天或之前开始。
+ 对于前瞻性相关时间序列数据集，每个项目的最后一个时间戳必须在用户指定的预测时段（称为*预测范围*）中最后一个时间戳之时。

  在下面的示例相关时间序列文件中，袜子和鞋子的 `timestamp` 数据的结束时间必须在 2019-07-01（最后记录的时间戳）*加上* 预测范围之时或之后。如果目标时间序列中的数据频率是每天，而预测范围是 10 天，则前瞻性相关时间序列文件中必须提供每日数据点，直到 2019-07-11。
+ 对于历史相关时间序列数据集，每个项目的最后一个时间戳必须与目标时间序列中的最后一个时间戳相匹配。

  在下面的示例相关时间序列文件中，袜子和鞋子的 `timestamp` 数据的结束时间必须为 2019-07-01（最后记录的时间戳）。
+ 相关时间序列数据集中提供的 Forecast 维度必须等于目标时间序列数据集中指定的维度或是该维度的子集。
+  相关时间序列不能有缺失值。有关相关时间序列数据集中缺失值的信息，请参阅[处理缺失值](howitworks-missing-values.md)。

## 示例：前瞻性相关时间序列文件
<a name="related-time-series-example"></a>

下表显示了正确配置的相关时间序列数据集文件。在本示例中，我们假设满足以下条件：
+ 目标时间序列数据集中的最后一个数据点是在 2019-07-01 记录的。
+  预测范围是 10 天。
+ 预测粒度为每天 (`D`)。

“`…`”行表示前一行和后一行之间的所有数据点。


| `timestamp` | `item_id` | `store` | `price` | 
| --- | --- | --- | --- | 
| 2019-01-01 | 袜子 | NYC | 10 | 
| 2019-01-02 | 袜子 | NYC | 10 | 
| 2019-01-03 | 袜子 | NYC | 15 | 
| ... | 
| 2019-06-01 | 袜子 | NYC | 10 | 
| ... | 
| 2019-07-01 | 袜子 | NYC | 10 | 
| ... | 
| 2019-07-11 | 袜子 | NYC | 20 | 
| 2019-01-05 | 袜子 | SFO | 45 | 
| ... | 
| 2019-06-05 | 袜子 | SFO | 10 | 
| ... | 
| 2019-07-01 | 袜子 | SFO | 10 | 
| ... | 
| 2019-07-11 | 袜子 | SFO | 30 | 
| 2019-02-01 | 鞋子 | ORD | 50 | 
| ... | 
| 2019-07-01 | 鞋子 | ORD | 75 | 
| ... | 
| 2019-07-11 | 鞋子 | ORD | 60 | 

## 示例：预测粒度
<a name="related-time-series-granularity"></a>

下表显示了使用每周粒度预测时的目标时间序列和相关时间序列的兼容数据记录频率。由于无法聚合相关时间序列数据集中的数据，Forecast 仅接受与所选预测粒度相同的相关时间序列数据频率。


| 目标输入数据频率 | 相关时间序列频率 | 预测粒度 | Forecast 是否支持？ | 
| --- | --- | --- | --- | 
| 每天 | Weekly | Weekly | 是 | 
| Weekly | Weekly | Weekly | 是 | 
| 不适用 | Weekly | Weekly | 是 | 
| 每天 | 每天 | Weekly | 否 | 

## 传统预测器和相关时间序列
<a name="related-time-series-legacy"></a>

**注意**  
要将现有预测变量升级到 AutoPredictor，请参见 [正在升级到 AutoPredictor](howitworks-predictor.md#upgrading-autopredictor)

使用传统预测器时，仅当使用 [CNN-QR](aws-forecast-algo-cnnqr.md)、[DeepAR\$1](aws-forecast-recipe-deeparplus.md) 和 [Prophet](aws-forecast-recipe-prophet.md) 算法训练预测器时，才可以使用相关时间序列数据集。[NPTS](aws-forecast-recipe-npts.md)、[ARIMA](aws-forecast-recipe-arima.md) 和 [ETS](aws-forecast-recipe-ets.md) 不接受相关时间序列数据。

下表显示了每种 Amazon Forecast 算法接受的相关时间序列的类型。


|  | CNN-QR | DeepAR\$1 | Prophet | NPTS | ARIMA | ETS | 
| --- | --- | --- | --- | --- | --- | --- | 
|  历史相关时间序列表  | ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | 
|  前瞻性相关时间序列  | ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-yes.png)  | ![\[Yes\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-yes.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | ![\[No\]](http://docs.aws.amazon.com/zh_cn/forecast/latest/dg/images/icon-no.png)  | 

 使用 AutoML 时，您可以提供历史和前瞻性相关时间序列数据，而 Forecast 将仅在适用的情况下使用这些时间序列。

 如果您提供*前瞻性* 相关时间序列数据，Forecast 会将这些相关数据用于 CNN-QR、DeepAR\$1 和 Prophet，而不会用于 NPTS、ARIMA 和 ETS。如果提供*历史* 相关时间序列数据，Forecast 会将这些相关数据用于 CNN-QR，而不会用于 DeepAR\$1、Prophet、NPTS、ARIMA 和 ETS。