本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
处理缺失值
时间序列预测数据中的一个常见问题是存在缺失值。由于多种原因,您的数据可能会有缺失值,这包括测量失败、格式化问题、人为错误或缺乏可记录的信息。例如,如果您要预测零售商店的商品需求,并且某个商品已售罄或不可用,则当该商品缺货时,该商品将没有销售数据可供记录。如果缺失值足够普遍,则缺失值会显著影响模型的精度。
Amazon Foracest 提供多种填充方法来处理目标时间序列和相关时间序列数据集中的缺失值。填充是向数据集中缺少的条目添加标准化值的过程。
预测支持以下填充方法:
-
中间填充— 填充数据集的项目开始日期和项目结束日期之间的任何缺失值。
-
背部填充— 填充上次记录的数据点和数据集的全球结束日期之间的所有缺失值。
-
未来填充(仅限相关时间序列)— 填充全球结束日期和预测期结束之间的所有缺失值。
下图提供了不同填充方法的可视化表示。
选择填充逻辑
选择填充逻辑时,您应考虑模型将如何解释逻辑。例如,在零售场景中,记录有货商品的 0 销售额与记录无货商品的 0 销售额不同,因为后者并不意味着客户对该商品缺乏兴趣。正因为如此,0
填写目标时间序列可能会导致预测变量的预测偏差,而NaN
填充可能会忽略实际出售 0 件可用商品的情况,从而导致预测变量过度偏差。
下面的时间序列图表说明了选择错误的填充值会如何显著影响模型的精度。图 A 和 B 绘制了对部分商品的需求out-of-stock,黑线代表实际销售数据。使用 0
来填充 A1 中的缺失值,导致 A2 中相对偏差过低的预测(由虚线表示)。同样,使用 NaN
填充 B1 中的缺失值,这会导致 B2 中的预测更精确。
有关支持的填充逻辑的列表,请参阅以下部分。
目标时间序列及相关时间序列填充逻辑
您可以对目标时间序列和相关时间序列数据集执行填充。每种数据集类型有不同的填充指南和限制。
填充指南 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
数据集类型 | 是否默认填充? | 支持的填充方法 | 默认填充逻辑 | 可接受的填充逻辑 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
目标时间序列 | 是 | 中间填充和回填充 | 0 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
相关时间序列 | 否 | 中间填充、回填充和未来填充 | 无默认值 |
|
重要
对于目标和相关时间序列数据集,mean
,median
,min
,以及max
是根据缺失值之前的 64 个最新数据条目的滚动窗口计算得出的。
缺失值语法
要执行缺失值填充,请在调用时指定要实现的填充类型CreatePredictor手术。填充逻辑在中指定FeaturizationMethod对象。
以下摘录演示了目标时间序列属性和相关时间序列属性(分别为 target_value
和 price
)的格式正确的 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" } } ] } ]