

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

# 时间序列数据集格式和缺失值填充方法
<a name="timeseries-forecasting-data-format"></a>

时间序列数据是指在固定的时间间隔内记录的观察数据或测量值的集合。在这种类型的数据中，每个观察数据都与特定的时间戳或时间段相关联，从而创建按时间顺序排列的数据点序列。

您在时间序列数据集中包含的具体的列，取决于分析的目标和可供使用的数据。时间序列数据至少由一个 3 列表组成，其中：
+ 一列包含分配给各个项目的唯一标识符，用于引用它们在特定时刻的值。
+ 另一列表示在 point-in-time特定时刻记录给定项目值的值或**目标**。根据这些目标值对模型进行训练后，此目标列包含模型在定义的范围内按照指定频率预测的值。
+ 此外还包括一个时间戳列，用于记录测量该值的日期和时间。
+ 其他列可以包含可能影响预测性能的其他因素。例如，在以销售额或收入为目标的零售时间序列数据集中，您可以包括多种特征，用于提供有关已售单位、产品 ID、商店位置、客户数量、库存水平以及协变量指标（例如天气数据或人口统计信息）的信息。

**注意**  
您可以将经过特征工程处理的国家法定假日信息数据集添加到您的时间序列中。通过在时间序列模型中包含假期，您可以捕捉假日造成的周期性模式。这有助于您的预测更好地体现出数据的底层季节性。有关每个国家/地区的可用日历的信息，请参阅[国家法定假日日历](autopilot-timeseries-forecasting-holiday-calendars.md)

## 时间序列预测的数据集格式
<a name="timeseries-format"></a>

Autopilot 支持数字、分类、文本和日期时间数据类型。目标列的数据类型必须为数字类型。

Autopilot 支持格式化为 CSV（默认）文件或 Parquet 文件的时间序列数据。
+ **CSV** (comma-separated-values) 是一种基于行的文件格式，它以人类可读的纯文本存储数据，这是数据交换的热门选择，因为它们受到各种应用程序的支持。
+ **Parquet** 是一种基于列的文件格式，相比基于行的文件格式，数据的存储和处理更高效。这使它们成为解决大数据问题的更好选择。

有关用于在 Autopilot 中进行预测的时间序列数据集的资源限制的更多信息，请参阅 [时间序列预测 Autopilot 的资源限制](timeseries-forecasting-limits.md)。

## 处理缺失值
<a name="timeseries-missing-values"></a>

时间序列预测数据中的一个常见问题是存在缺失值。由于多种原因，您的数据可能会有缺失值，这包括测量失败、格式化问题、人为错误或缺乏可记录的信息。例如，如果您要预测零售商店的商品需求，并且某个商品已售罄或无货，则当该商品缺货时，该商品将没有销售数据可供记录。缺失值在占到一定的比例时，会显著影响模型的精度。

Autopilot 提供了多种填充方法来处理缺失值，对于目标列和其他附加列，分别有不同的填充方法。填充是向数据集中缺少的条目添加标准化值的过程。

请参阅[如何处理输入数据集中的缺失值](autopilot-create-experiment-timeseries-forecasting.md#timeseries-forecasting-fill-missing-values)，了解如何设置填充时间序列数据集中缺失值的方法。

Autopilot 支持以下填充方法：
+ **前向填充：**填充所有项目中最早记录的数据点，与各个项目的记录起点（各个项目可以从不同的时间开始）之间的所有缺失值。这样可以确保各个项目的数据都是完整的，并且覆盖了从最早记录数据点到其各自起点的范围。
+ **中间填充：**填充数据集中项目的开始日期和项目结束日期之间的任何缺失值。
+ **后向填充：**填充各个项目（各个项目可以在不同的时间停止）最晚记录的数据点，与所有项目中最晚记录的数据点之间的所有缺失值。
+ **未来填充：**填充所有项目中最晚记录的数据点与预测范围结束之间的任何缺失值。

下图提供了不同填充方法的可视化表示。

![Amazon A SageMaker utopilot 中用于时间序列预测的不同填充方法。](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-forecast-filling-methods.png)


### 选择填充逻辑
<a name="filling-logic"></a>

选择填充逻辑时，您应考虑模型将如何解释逻辑。例如，在零售场景中，记录有货商品的 0 销售额与记录无货商品的 0 销售额不同，因为后者并不意味着客户对该商品缺乏兴趣。因此，时间序列目标列中的 `0` 填充可能会导致预测变量的预测偏差过低，而 `NaN` 填充可能会忽略实际上出现 0 件商品有货可用于销售的情况，并导致预测变量的预测偏差过高。

### 填充逻辑
<a name="filling-restrictions"></a>

您可以对数据集中的目标列和其他数字列执行填充。目标列的填充准则和限制不同于其他数值列。

填充指南


| 列类型 | 是否默认填充？ | 支持的填充方法 | 默认填充逻辑 | 接受的填充逻辑 | 
| --- | --- | --- | --- | --- | 
| 目标列 | 是 | 中间填充和回填充 | 0 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/timeseries-forecasting-data-format.html)  | 
| 其他数值列 | 否 | 中间填充、回填充和未来填充 | 无默认值 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/timeseries-forecasting-data-format.html)  | 

**注意**  
对于目标列和其他数值列，根据缺失值之前最近的 64 个数据条目的滚动窗口来计算 `mean`、`median`、`min` 和 `max`。