Questa pagina spiega la previsione gerarchica, i suoi obiettivi e mostra le strategie di addestramento che puoi utilizzare per ridurre i bias nei modelli di previsione.
Per istruzioni dettagliate su come configurare la previsione gerarchica durante l'addestramento del modello di previsione utilizzando l'API, consulta Addestra un modello di previsione.
Che cos'è la previsione gerarchica
Le serie temporali sono spesso strutturate in una gerarchia nidificata. Ad esempio, l'intero inventario di prodotti di un rivenditore può essere suddiviso in categorie di prodotti. Le categorie possono essere ulteriormente suddivise in singoli prodotti. Quando si prevedono le vendite future, le previsioni per i prodotti di una categoria devono corrispondere alla previsione per la categoria stessa e così via nella gerarchia.
Allo stesso modo, anche la dimensione temporale di una singola serie temporale può presentare una gerarchia. Ad esempio, le vendite previste per un singolo prodotto a livello giornaliero devono corrispondere alle vendite settimanali previste per il prodotto. La seguente figura mostra questo gruppo e la gerarchia temporale come una matrice:
La previsione gerarchica ha tre obiettivi:
- Ridurre la distorsione complessiva per migliorare le metriche in tutte le serie temporali (vendite totali).
- Ridurre il bias temporale per migliorare le metriche nel tempo (vendite stagionali).
- Ridurre la distorsione a livello di gruppo per migliorare le metriche in un gruppo di serie temporali (vendite di articoli).
In Vertex AI, la previsione gerarchica tiene conto della struttura gerarchica delle serie temporali incorporando termini di perdita aggiuntivi per le inferenze aggregate.
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)
Ad esempio, se il gruppo gerarchico è "categoria", le inferenze a livello di "categoria" sono la somma delle inferenze per tutti i "prodotti" della categoria. Se l'obiettivo del modello è l'errore medio assoluto (MAE), la perdita include il MAE per le inferenze sia a livello di "prodotto" che di "categoria". Ciò contribuisce a migliorare la coerenza delle previsioni a diversi livelli della gerarchia e, in alcuni casi, potrebbe persino migliorare le metriche al livello più basso.
Configurare l'aggregazione gerarchica per l'addestramento del modello
Configura l'aggregazione gerarchica durante l'addestramento dei modelli di previsione configurando
AutoMLForecastingTrainingJob
nell'SDK Vertex AI
o configurando
hierarchyConfig
nell'API Vertex AI.
I parametri disponibili per AutoMLForecastingTrainingJob
e hierarchyConfig
includono:
group_columns
group_total_weight
temporal_total_weight
group_temporal_total_weight
I parametri consentono diverse combinazioni di perdite aggregate per gruppo e tempo. Inoltre, ti consentono di assegnare ponderazioni per aumentare la priorità di
riduzione al minimo della perdita aggregata rispetto alla perdita individuale. Ad esempio, se
la ponderazione è 2.0
, viene ponderata il doppio rispetto alla perdita individuale.
group_columns
I nomi delle colonne nella tabella di input di addestramento identificano il raggruppamento per il
livello gerarchico. Le colonne devono essere time_series_attribute_columns
. Se non imposti la colonna del gruppo, tutte le serie temporali vengono trattate come parte dello stesso gruppo e vengono aggregate in tutte le serie temporali.
group_total_weight
Peso della perdita aggregata del gruppo rispetto alla perdita individuale. Disattivato se
impostato su 0.0
o non impostato.
temporal_total_weight
Peso della perdita aggregata nel tempo rispetto alla perdita individuale. Disattivato se
impostato su 0.0
o non impostato.
group_temporal_total_weight
Peso della perdita aggregata totale (gruppo x tempo) rispetto alla perdita individuale. Disattivato se impostato su 0.0
o se non viene configurato. Se non imposti la colonna del gruppo, tutte le serie temporali vengono trattate come parte dello stesso gruppo e vengono aggregate in tutte le serie temporali.
Strategie per ridurre il bias
Inizia con un tipo di aggregazione (gruppo o tempo) con un peso di
10.0
, poi dimezza o raddoppia il valore in base ai risultati.
Ridurre il bias complessivo
Nelle previsioni granulari per la distribuzione delle scorte nei negozi in cui l'errore percentuale assoluto ponderato (WAPE) a livello di prodotto x negozio x data viene utilizzato come metrica di previsione, le previsioni spesso sottostimano a livello aggregato. Per compensare questo bias complessivo, prova a:
- Imposta
group_total_weight
su10.0
. - Lascia
group_columns
non impostato. - Lascia gli altri pesi non impostati.
Questo valore viene aggregato su tutte le serie temporali e riduce il bias complessivo.
Ridurre il bias temporale
Nella pianificazione a lungo termine, le previsioni potrebbero essere effettuate a livello di prodotto x regione x settimana, ma le metriche pertinenti potrebbero essere misurate rispetto ai totali stagionali. Per compensare questo bias temporale, prova quanto segue:
- Imposta
temporal_total_weight
su10.0
. - Lascia
group_columns
non impostato. - Lascia gli altri pesi non impostati.
Esegue l'aggregazione su tutte le date dell'orizzonte di una serie temporale e riduce il bias temporale.
Ridurre il bias a livello di gruppo
Per le previsioni multiuso nel processo di rifornimento, le previsioni granulari a livello di prodotto x negozio x data o settimana potrebbero essere aggregate fino ai livelli prodotto x centro di distribuzione x data per la distribuzione o categoria di prodotto x data per gli ordini di materiali. Per farlo:
- Imposta
group_total_weight
su10.0
. - Imposta
group_columns
, ad esempio ["region"] o ["region", "category"]. L'impostazione di più colonne di raggruppamento utilizza il loro valore combinato per definire il gruppo. Per risultati ottimali, utilizza colonne di raggruppamento con un massimo di 100 valori combinati distinti. - Lascia gli altri pesi non impostati.
Questo valore viene aggregato in tutte le serie temporali dello stesso gruppo per la stessa data e riduce il bias a livello di gruppo.
Limiti
- È supportato un solo livello di aggregazione delle serie temporali. Se specifichi più di una colonna di raggruppamento, ad esempio "prodotto, negozio", la serie temporale si trova nello stesso gruppo solo se condivide gli stessi valori di "prodotto" e "negozio".
- Ti consigliamo di utilizzare al massimo 100 gruppi.