Questa pagina spiega cos'è la previsione gerarchica, quali sono i suoi obiettivi e mostra alcune strategie di addestramento che puoi utilizzare per ridurre il 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 dei prodotti venduti da 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, la dimensione temporale di una singola serie temporale può anche mostrare 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 includerà l'errore medio assoluto per le inferenze sia a livello di "prodotto" che di "categoria". Ciò contribuisce a migliorare la coerenza delle previsioni ai diversi livelli della gerarchia e, in alcuni casi, può persino migliorare le metriche al livello più basso.
Configurare l'aggregazione gerarchica per l'addestramento del modello
Puoi configurare 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 è impostata su 2.0
, verrà ponderata il doppio rispetto alla perdita
individuale.
group_columns
Nomi delle colonne nella tabella di input di addestramento che identificano il raggruppamento per il
livello gerarchico. Le colonne devono essere time_series_attribute_columns
. Se la colonna del gruppo non è impostata, tutte le serie temporali verranno trattate come parte dello stesso gruppo e verranno 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 è impostato. Se la colonna del gruppo non è impostata, tutte le serie temporali verranno trattate come parte dello stesso gruppo e verranno aggregate in tutte le serie temporali.
Strategie per ridurre il bias
Ti consigliamo di iniziare con un tipo di aggregazione (gruppo o tempo) con un peso di
10.0
, per poi dimezzare o raddoppiare 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, puoi provare 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 possono essere effettuate a livello di prodotto x regione x settimana, ma le metriche pertinenti possono essere misurate rispetto ai totali stagionali. Per compensare questo bias temporale, puoi provare a:
- Imposta
temporal_total_weight
su10.0
. - Lascia
group_columns
non impostato. - Lascia gli altri pesi non impostati.
Questa operazione aggrega tutte le date nell'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 possono essere aggregate fino a livello di prodotto x centro di distribuzione x data per la distribuzione o di 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 vengono specificate più colonne 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.