Riduci il bias di previsione con l'aggregazione gerarchica

Questa pagina spiega che cos'è la previsione gerarchica, quali sono i suoi obiettivi e mostra alcune strategie di addestramento che puoi utilizzare per ridurre i bias nei modelli di previsione.

Per istruzioni dettagliate su come configurare le previsioni gerarchiche durante l'addestramento del modello di previsione utilizzando l'API, consulta Addestrare 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 prevedi le vendite future, le previsioni per i prodotti di una categoria devono sommarsi alla previsione per la categoria stessa e così via fino alla cima della gerarchia.

Una gerarchia di prodotti e categorie.

Analogamente, la dimensione temporale di una singola serie temporale può anche presentare una gerarchia. Ad esempio, le vendite previste per un singolo prodotto a livello giornaliero devono sommarsi alle vendite settimanali previste del prodotto. La seguente figura mostra questo gruppo e la gerarchia temporale come una matrice:

Una matrice di serie temporali.

La previsione gerarchica ha tre obiettivi:

  • Riduci il bias complessivo per migliorare le metriche in tutte le serie temporali (vendite totali).
  • Riduci il bias temporale per migliorare le metriche nell'arco di tempo considerato (vendite stagionali).
  • Riduci il bias a livello di gruppo per migliorare le metriche in un gruppo di serie temporali (vendite di articoli).

In Vertex AI, la previsione gerarchica prende in considerazione la struttura gerarchica delle serie temporali incorporando termini di perdita aggiuntivi per le previsioni 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 previsioni a livello di "categoria" sono la somma delle previsioni per tutti i "prodotti" nella categoria. Se l'obiettivo del modello è l'errore assoluto medio (MAE), la perdita includerà l'errore assoluto medio per le previsioni sia a livello di "prodotto" sia a livello di "categoria". Ciò contribuisce a migliorare la coerenza delle predizioni a 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 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 pesi per aumentare la priorità della minimizzazione della perdita aggregata rispetto alla perdita individuale. Ad esempio, se il peso è impostato su 2.0, verrà ponderato il doppio della perdita singola.

group_columns

Nomi delle colonne nella tabella di input dell'addestramento che identificano il raggruppamento per il livello della gerarchia. Le colonne devono essere time_series_attribute_columns. Se la colonna 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 se non è impostato.

temporal_total_weight

Peso della perdita aggregata nel tempo rispetto alla perdita individuale. Disattivato se impostato su 0.0 o se non è impostato.

group_temporal_total_weight

Peso della perdita aggregata totale (gruppo x tempo) rispetto alla perdita singola. 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 su 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, quindi dimezzare o raddoppiare il valore in base ai risultati.

Ridurre il bias complessivo

Nelle previsioni granulari per la distribuzione delle scorte nei negozi, dove viene utilizzato l'errore percentuale assoluto ponderato (WAPE) a livello di prodotto x negozio x data come metrica di previsione, le previsioni spesso sottostimano i livelli aggregati. Per compensare questo bias complessivo, puoi provare quanto segue:

  • Imposta group_total_weight su 10.0.
  • Lascia group_columns non impostato.
  • Lascia gli altri pesi non impostati.

Questo valore viene aggregato in tutte le serie temporali e riduce il pregiudizio 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 su 10.0.
  • Lascia group_columns non impostato.
  • Lascia gli altri pesi non impostati.

Questo valore viene aggregato su tutte le date nell'orizzonte di una serie temporale e riduce la distorsione temporale.

Riduci il bias a livello di gruppo

Per le previsioni multiuso nel processo di riassortimento, 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 su 10.0.
  • Imposta group_columns, ad esempio ["regione"] o ["regione", "categoria"]. L'impostazione di più colonne di gruppo utilizza il loro valore combinato per definire il gruppo. Per risultati ottimali, utilizza colonne di gruppo con massimo 100 valori combinati distinti.
  • Lascia gli altri pesi non impostati.

Il valore viene aggregato in tutte le serie temporali dello stesso gruppo per la stessa data e riduce la distorsione a livello di gruppo.

Limiti

  • È supportato un solo livello di aggregazione delle serie temporali. Se viene specificata più di una colonna di raggruppamento, ad esempio "product, store", le serie temporali appartengono allo stesso gruppo solo se condividono gli stessi valori sia di "product" sia di "store".
  • Ti consigliamo di utilizzare al massimo 100 gruppi.

Passaggi successivi