處理遺失值 - Amazon Forecast

Amazon Forecast 不再提供給新客戶。Amazon Forecast 的現有客戶可以繼續正常使用該服務。了解更多」

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

處理遺失值

時間序列預測資料中有個常見問題,就是會出現遺失值。您的資料可能由於多種原因而包含遺失值,包括測量失敗、格式設定問題、人為錯誤或缺少要記錄的資訊。例如,如果您要預測零售商店的產品需求,而某個商品已售完或無法供應,則在該商品無庫存期間,不會有要記錄的銷售資料。如果遺失值夠普遍,則會顯著影響模型的準確性。

Amazon Forecast 提供多種填充方法來處理目標時間序列和相關時間序列資料集中缺少的值。填入是將標準化值新增至資料集中的遺失項目的程序。

Forecast 支持以下填充方法:

  • 間填充 — 填充數據集的項目開始日期和項目結束日期之間的任何缺失值。

  • 回填 — 填入資料集的最後記錄資料點和全域結束日期之間的任何遺失值。

  • 未來充填 (僅限相關時間序列) — 填入全域結束日期與預測總時程結束之間的任何遺漏值。

下圖提供不同填入方法的視覺化呈現。

Timeline showing three items with varying durations and fill methods between global start and end dates.

選擇填入邏輯

選擇填入邏輯時,您應考慮模型將會如何解讀邏輯。例如,在零售案例中,記錄供應商品的 0 銷售量會不同於記錄無法供應之商品的 0 銷售量,因為後者並不表示客戶對該商品缺乏興趣。因此,0填寫目標時間序列可能會導致預測值在其預測中偏差不足,而NaN填充可能會忽略銷售 0 個可用項目的實際出現情況,並導致預測值過度偏差。

下列時間序列圖表說明選擇錯誤的填入值會如何大幅影響模型的準確度。圖表 A 與 B 繪製部份料號的需求 out-of-stock,黑線代表實際銷售資料。A1 中的遺失值填入了 0,導致 A2 的預測中發生相對的低估偏差 (以虛線表示)。同樣地,B1 中的遺失值填入了 NaN,這在 B2 中導致了更準確的預測。

Time-series graphs comparing item demand predictions with different filling values for missing data.

如需支援的填入邏輯清單,請參閱下一節。

目標時間序列和相關時間序列填入邏輯

您可以同時在目標時間序列和相關時間序列資料集上執行填入。每個資料集類型都有不同的填入指導方針和限制。

填入指導方針
資料集類型 預設填入? 支援的填入方法 預設的填入邏輯 可接受的填入邏輯
目標時間序列 中間和往回填入 0
  • zero - 0 填入。

  • value - 整數或浮點數。

  • nan -不是數字。

  • mean - 資料序列中的平均值。

  • median - 資料序列中的中位數值。

  • min - 資料序列中的最小值。

  • max - 資料序列中的最大值。

相關時間序列 中間、往回和未來填入 無預設值
  • zero - 0 填入。

  • value - 整數或浮點值。

  • mean - 資料序列中的平均值。

  • median - 資料序列中的中位數值。

  • min - 資料序列中的最小值。

  • max - 資料序列中的最大值。

重要

對於目標和相關時間序列資料集 meanmedianmin、、和max是根據遺失值之前 64 個最新資料項目的滾動視窗計算。

缺少值語法

若要執行缺少值填入,請指定呼叫作業時要實CreatePredictor作的填充類型。填充邏輯在FeaturizationMethod對象中指定。

下列摘錄針對目標時間序列屬性和相關時間序列屬性 (分別為 target_valueprice),示範了具有正確格式設定的 FeaturizationMethod 物件。

若要將填充方法設定為特定值,請將 fill 參數設定為,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" } } ] } ]