Backtesting (ou test rétro-actif de validité)

Notebook-as-a-book illustration







Par Joannès Vermorel, août 2013

Dans le contexte de la prévision de séries temporelles, la notion de backtesting renvoie au processus consistant à évaluer la précision d'une méthode de prévision en utilisant les données historiques existantes. Ce processus est généralement itératif et répété à des dates multiples de l'historique de données. Le backtesting est employé pour estimer la précision future attendue d'une méthode de prévision, ce qui est utile pour évaluer quel modèle de prévision peut être considéré comme le plus précis.

Le fonctionnement du backtesting

Le processus de backtesting débute par la sélection d'une liste de dates jalons au sein d'un laps de temps couvert par l'historique de données. Dans le graphique ci-dessous, les jalons sont notés T1, T2, T3 et T4.

Le backtesting est un processus permettant de vérifier la précision des prévisions d'un modèle statistique temporel à l'aide de données historiques.


Ensuite, pour chaque jalon,

  • l'historique de données est tronqué au niveau du jalon,
  • le modèle de prévision est entraîné et appliqué aux données tronquées,
  • les prévisions sont comparées avec les données originales non tronquées.

Pour finir, une erreur de prévision moyenne est établie sur l'ensemble des jalons.

Cette erreur moyenne peut être interprétée comme une estimation de l'erreur qui sera associée au modèle lorsqu'il produira de véritables prévisions (sur le futur). Le choix d'un jeu de jalons adéquat implique généralement un certain savoir-faire sur le problème considéré. En règle générale, accroître le nombre de jalons améliore souvent la résilience du processus au phénomène de suraprentissage.|

Dans l'optique de l'optimisation des stocks, étant donné qu'il y a typiquement des centaines de SKUs (Stock Keeping Units) impliquées, seule une poignée de jalons est nécessaire pour pouvoir décider, avec un degré de confiance assez élevé, si une méthode de prévision est meilleure qu'une autre.

Une erreur courante : apprendre une seule fois pour faire de multiples prévisions

Le backtesting est généralement assez intensif en termes de puissance de calcul, étant donné qu'un nouveau modèle de prévision doit être entraîné sur chaque jalon. En conséquence, on observe régulièrement des praticiens qui entraînent leurs modèles de prévision une seule fois, typiquement en utilisant toute la gamme de l'historique de données, avant de passer directement aux itérations de backtesting. L'avantage que l'on peut trouver immédiatement à cette approche est une accélération massive du backtesting.

Cependant, ce genre d' astuce est malavisé et entraîne des problèmes significatifs de surapprentissage. En effet, implicitement, puisque les données futures sont mises à disposition du modèle de prévision, l'estimation de variable, quelle qu'elle soit, qui a lieu durant la phase d'apprentissage aura l'effet suivant : le modèle incluera certaines des information sur ce futur. Par conséquent, la précision mesurée lors des backtests ne reflétera pas la capacité du modèle à généraliser, mais plutôt sa capacité à mémoriser, c'est-à-dire la capacité du modèle à reproduire des situations identiques à celles qui se trouvent dans le jeu de données d'entraînement.

L'approche de Lokad

Le backtesting est au coeur de la technologie de prévision de Lokad. Nous l'utilisons pour chaque série temporelle afin de sélectionner le modèle qui sera utilisé pour produire la prévision finale. Cependant, la vision simple du backtesting présentée dans cet article n'est pas adaptée à toutes les situations que l'on peut trouver dans les domaines de la distribution ou de la fabrication. Par exemple, pour des produits nouvellement lancés, les séries temporelles peuvent être trop courtes pour effectuer un backtesting significatif. Les promotions et les lancements de produits requièrent des approches dédiées.