本頁說明階層式預測的定義和目標,並介紹一些訓練策略,協助您減少預測模型中的偏誤。
如要瞭解如何使用 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 個以下的群組。
後續步驟
- 評估模型。