Réduire le biais de prévision à l'aide de l'agrégation hiérarchique

Vous trouverez sur cette page des informations sur les prévisions hiérarchiques et leurs objectifs, ainsi que les stratégies d'entraînement que vous pouvez utiliser pour réduire les biais de vos modèles de prévision.

Pour obtenir des instructions détaillées sur la configuration de la prévision hiérarchique lors de l'entraînement de votre modèle de prévision à l'aide de l'API, consultez la section Entraîner un modèle de prévision.

Qu'est-ce que la prévision hiérarchique ?

Les séries temporelles sont souvent structurées dans une hiérarchie imbriquée. Par exemple, l'inventaire complet des produits vendus par un marchand peut être divisé en catégories de produits. Les catégories peuvent être divisées en produits individuels. Lorsque vous prévoyez des ventes futures, les prévisions pour les produits d'une catégorie doivent correspondre à celles de la catégorie elle-même, et ainsi de suite dans la hiérarchie.

Hiérarchie de produits et de catégories

De même, la dimension temporelle d'une seule série temporelle peut également présenter une hiérarchie. Par exemple, les ventes prévues pour un produit spécifique au niveau de la journée doivent être ajoutées aux ventes hebdomadaires prévues pour ce produit. La figure suivante illustre cette hiérarchie temporelle et de groupe sous forme de matrice :

Matrice de séries temporelles

La prévision hiérarchique répond à trois objectifs :

  • Réduire le biais global pour améliorer les métriques sur l'ensemble des séries temporelles (nombre total de ventes).
  • Réduire le biais temporel pour améliorer les métriques à l'horizon (ventes saisonnières).
  • Réduire le biais au niveau du groupe pour améliorer les métriques sur un groupe de séries temporelles (ventes d'articles).

Dans Vertex AI, la prévision hiérarchique prend en compte la structure hiérarchique des séries temporelles en intégrant des termes de perte supplémentaires pour les prédictions agrégées.

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)

Par exemple, si le groupe hiérarchique est "catégorie", les prédictions au niveau de "catégorie" correspondent à la somme des prédictions pour tous les "produits" de la catégorie. Si l'objectif du modèle est une erreur absolue moyenne (EAM), la perte inclut l'EAM pour les prédictions aux niveaux "produit" et "catégorie". Cela permet d'améliorer la cohérence des prévisions à différents niveaux de la hiérarchie et, dans certains cas, d'améliorer les métriques au niveau le plus bas.

Configurer l'agrégation hiérarchique pour l'entraînement de modèle

Vous pouvez configurer l'agrégation hiérarchique lorsque vous entraînez vos modèles de prévision en configurant AutoMLForecastingTrainingJob dans le SDK Vertex AI. ou en configurant hierarchyConfig dans l'API Vertex AI.

Les paramètres disponibles pour AutoMLForecastingTrainingJob et hierarchyConfig sont les suivants :

  • group_columns
  • group_total_weight
  • temporal_total_weight
  • group_temporal_total_weight

Les paramètres permettent différentes combinaisons de pertes groupées et temporelles agrégées. Ils vous permettent également d'attribuer des pondérations afin d'augmenter la priorité de minimisation de la perte agrégée par rapport à la perte individuelle. Par exemple, si la pondération est définie sur 2.0, elle sera pondérée deux fois plus que la perte individuelle.

group_columns

Noms de colonnes de votre table d'entrée d'entraînement qui identifient le regroupement au niveau de la hiérarchie. La ou les colonnes doivent être time_series_attribute_columns. Si la colonne de groupe n'est pas définie, toutes les séries temporelles seront traitées dans le même groupe et agrégées sur toutes les séries temporelles.

group_total_weight

Pondération de la perte agrégée du groupe par rapport à la perte individuelle. Désactivée si cette valeur est définie sur 0.0 ou n'est pas définie.

temporal_total_weight

Pondération de la perte agrégée de temps par rapport à la perte individuelle. Désactivée si cette valeur est définie sur 0.0 ou n'est pas définie.

group_temporal_total_weight

Pondération de la perte totale (groupe x temps) par rapport à la perte individuelle. Désactivée si cette valeur est définie sur 0.0 ou n'est pas définie. Si la colonne de groupe n'est pas définie, toutes les séries temporelles seront traitées dans le même groupe et agrégées sur toutes les séries temporelles.

Stratégies visant à réduire le biais

Envisagez de commencer par un type d'agrégation (groupe ou heure) avec une pondération de 10.0, puis divisez ou doublez cette valeur en fonction des résultats.

Réduire le biais global

Dans les prévisions précises de la répartition des stocks entre les magasins, où le pourcentage d'erreur absolue pondérée (WAPE) est appliqué au niveau du produit x espace de stockage x date, il est utilisé comme métrique de prévision. Les prévisions sont souvent sous-prédictives au niveau des ensembles de données. Pour compenser ce biais global, vous pouvez essayer ce qui suit :

  • Définissez group_total_weight sur 10.0.
  • Laissez group_columns non défini.
  • Ne définissez pas les autres pondérations.

Cela permet d'agréger toutes les séries temporelles et de réduire le biais global.

Réduire le biais temporel

Dans le cadre de la planification à long terme, les prévisions peuvent être établies au niveau du produit x la région x la semaine, mais les métriques pertinentes peuvent être mesurées par rapport aux totaux saisonniers. Pour compenser ce biais temporel, vous pouvez essayer les solutions suivantes :

  • Définissez temporal_total_weight sur 10.0.
  • Laissez group_columns non défini.
  • Ne définissez pas les autres pondérations.

Cette méthode agrège toutes les dates dans l'horizon d'une série temporelle et réduit le biais temporel.

Réduire le biais au niveau du groupe

Pour les prévisions polyvalentes dans le cadre du processus de réapprovisionnement, les prévisions précises au niveau du produit x l'espace de stockage x la date ou la semaine peuvent être agrégées jusqu'à atteindre le niveau du produit x le centre de distribution x la date pour les niveaux de la distribution ou de la catégorie de produits x la date pour les commandes de matériaux. Pour ce faire, procédez comme suit :

  • Définissez group_total_weight sur 10.0.
  • Définissez group_columns, par exemple, ["region"] ou ["region", "category"]. La définition de plusieurs colonnes de groupe utilise leur valeur combinée pour définir le groupe. Pour de meilleurs résultats, utilisez des colonnes de groupe comportant 100 valeurs combinées distinctes ou moins.
  • Ne définissez pas les autres pondérations.

Cela permet d'agréger l'ensemble des séries temporelles d'un même groupe pour la même date et de réduire le biais au niveau du groupe.

Limites

  • Un seul niveau d'agrégation de séries temporelles est accepté. Si plusieurs colonnes de regroupement sont spécifiées (par exemple, "product", store"), les séries temporelles appartiennent au même groupe que si elles partagent les mêmes valeurs de "product" et de "store".
  • Nous vous recommandons de n'utiliser que 100 groupes maximum.

Étape suivante