本頁說明階層式預測及其目標,並介紹可減少預測模型偏誤的訓練策略。
如要瞭解如何使用 API 訓練預測模型時設定階層式預測,請參閱「訓練預測模型」。
什麼是階層式預測
時間序列通常會以巢狀階層結構呈現。舉例來說,零售商的整個產品庫存可以劃分為各個產品類別。類別可進一步細分為個別產品。預測未來銷售量時,類別產品的預測值總和必須等於類別本身的預測值,以此類推,直到階層頂端為止。
同樣地,單一時間序列的時間維度也可能呈現階層。舉例來說,個別產品的每日預估銷售量加總,必須等於該產品的每週預估銷售量。下圖以矩陣形式顯示這個群組和時間階層:
階層式預測有三項目標:
- 減少整體偏差,改善所有時間序列的指標 (總銷售量)。
- 減少時間偏差,以改善長期指標 (季節性銷售)。
- 減少群組層級的偏差,以改善一組時間序列 (商品銷售) 的指標。
在 Vertex AI 中,階層式預測會納入時間序列的階層式結構,並加入匯總推論的額外損失項。
Hierarchical loss = (1 x loss) +
(temporal total weight x temporal total loss) +
(group total weight x group total loss) +
(group temporal total weight x group temporal total loss)
舉例來說,如果階層式群組是「類別」,則「類別」層級的推論結果是該類別中所有「產品」的推論結果總和。如果模型目標是平均絕對誤差 (MAE),損失會包含「產品」和「類別」層級的推論 MAE。這有助於提升不同層級預測的一致性,在某些情況下,甚至可能改善最低層級的指標。
設定模型訓練的階層式匯總
訓練預測模型時,請透過設定 Vertex AI SDK 中的 AutoMLForecastingTrainingJob
,或設定 Vertex AI API 中的 hierarchyConfig
,設定階層式匯總。
「AutoMLForecastingTrainingJob
」和「hierarchyConfig
」的可用參數包括:
group_columns
group_total_weight
temporal_total_weight
group_temporal_total_weight
這些參數可讓您以不同組合的群組和時間匯總損失。您也可以指派權重,提高相對於個別損失的匯總損失最小化優先順序。舉例來說,如果權重為 2.0
,則權重是個別損失的兩倍。
group_columns
訓練輸入資料表中的資料欄名稱會指出階層層級的分組。欄必須是 time_series_attribute_columns
。如果未設定群組資料欄,系統會將所有時間序列視為同一群組的一部分,並匯總所有時間序列。
group_total_weight
相對於個別損失的群組匯總損失權重。如果設為 0.0
或未設定,系統會停用這項功能。
temporal_total_weight
時間匯總損失相對於個別損失的權重。如果設為 0.0
或未設定,系統會停用這項功能。
group_temporal_total_weight
相對於個別損失,匯總損失 (群組 x 時間) 的權重。如果設為 0.0
或未設定,系統會停用這項功能。如果未設定群組資料欄,系統會將所有時間序列視為同一群組的一部分,並匯總所有時間序列。
減少偏誤的策略
先從一種匯總類型 (群組或時間) 開始,權重為 10.0
,然後根據結果將值減半或加倍。
減少整體偏誤
在細部預測中,如果使用產品 x 商店 x 日期層級的加權絕對百分比誤差 (WAPE) 做為預測指標,預測結果通常會低估總計層級的資料。如要補償這項整體偏差,請嘗試下列做法:
- 將
group_total_weight
設為10.0
。 - 請勿設定
group_columns
。 - 其他權重則維持未設定狀態。
這會匯總所有時間序列,並減少整體偏差。
減少時間偏誤
在長期規劃中,預測可能是在產品 x 區域 x 週層級進行,但相關指標的衡量標準可能是季節性總計。如要補償這項時間偏差,請嘗試下列做法:
- 將
temporal_total_weight
設為10.0
。 - 請勿設定
group_columns
。 - 其他權重則維持未設定狀態。
這會匯總時間序列預測期間的所有日期,並減少時間偏差。
減少群組層級的偏誤
若要預測補貨流程中的多種用途,產品 x 商店 x 日期/週層級的精細預測可能會匯總至產品 x 配送中心 x 日期層級,以利配送;或匯總至產品類別 x 日期層級,以利訂購物料。如要這麼做,請執行下列操作:
- 將
group_total_weight
設為10.0
。 - 設定
group_columns
,例如 ["region"] 或 ["region", "category"]。設定多個群組資料欄時,系統會使用這些資料欄的合併值來定義群組。為獲得最佳成效,請使用最多 100 個不同合併值的群組欄。 - 其他權重則維持未設定狀態。
這會匯總同一群組中同一日期的所有時間序列,並減少群組層級的偏差。
限制
- 系統僅支援一個層級的時間序列匯總。如果您指定多個分組欄 (例如「產品、商店」),只有在時間序列共用「產品」和「商店」的值時,才會屬於同一群組。
- 建議使用 100 個以下的群組。
後續步驟
- 評估模型。