处理缺失值 - Amazon Forecast

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

处理缺失值

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

Amazon Forecast 提供了多种填充方法来处理目标时间序列和相关时间序列数据集中的缺失值。填充是向数据集中缺少的条目添加标准化值的过程。

Forecast 支持以下填充方法:

  • 中间填充物— 填充数据集的项目开始日期和项目结束日期之间的所有缺失值。

  • 背部填充— 填充数据集上次记录的数据点和全局结束日期之间的所有缺失值。

  • 未来填充(仅限相关时间序列)— 填充全球结束日期和预测范围结束之间的所有缺失值。

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

选择填充逻辑

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

下面的时间序列图表说明了选择错误的填充值会如何显著影响模型的精度。图 A 和 B 绘制了对部分物料的需求 out-of-stock,黑线代表实际销售数据。使用 0 来填充 A1 中的缺失值,导致 A2 中相对偏差过低的预测(由虚线表示)。同样,使用 NaN 填充 B1 中的缺失值,这会导致 B2 中的预测更精确。

有关支持的填充逻辑的列表,请参阅以下部分。

目标时间序列及相关时间序列填充逻辑

您可以对目标时间序列和相关时间序列数据集执行填充。每种数据集类型有不同的填充指南和限制。

填充指南
数据集类型 是否默认填充? 支持的填充方法 默认填充逻辑 公认的填充逻辑
目标时间序列 中间填充和回填充 0
  • zero - 0 填充。

  • value - 整数或浮点数。

  • nan - 不是数字。

  • mean - 来自数据序列的平均值。

  • median - 来自数据序列的中位数值。

  • min-数据序列中的最小值。

  • max - 数据序列的最大值。

相关时间序列 中间填充、回填充和未来填充 无默认值
  • zero - 0 填充。

  • value - 整数或浮点数值。

  • mean - 来自数据序列的平均值。

  • median - 来自数据序列的中位数值。

  • min-数据序列中的最小值。

  • max - 数据序列的最大值。

重要

对于目标和相关时间序列数据集,mean,median,min,以及max是根据缺失值之前的 64 个最新数据条目的滚动窗口计算得出的。

缺失值语法

要执行缺失值填充,请在调用时指定要实现的填充类型CreatePredictor操作。填充逻辑在中指定FeaturizationMethodobject。

以下摘录演示了目标时间序列属性和相关时间序列属性(分别为 target_valueprice)的格式正确的 FeaturizationMethod 对象。

要将填充方法设置为特定值,请将填充参数设置为value并在相应的值中定义值_value参数。如下所示,相关时间序列的回填值设置为 2,如下所示:"backfill": "value""backfill_value":"2".

[ { "AttributeName": "target_value", "FeaturizationPipeline": [ { "FeaturizationMethodName": "filling", "FeaturizationMethodParameters": { "aggregation": "sum", "middlefill": "zero", "backfill": "zero" } } ] }, { "AttributeName": "price", "FeaturizationPipeline": [ { "FeaturizationMethodName": "filling", "FeaturizationMethodParameters": { "middlefill": "median", "backfill": "value", "backfill_value": "2", "futurefill": "max" } } ] } ]