Aller au contenu

Validation et pièges (time-based CV, data leakage)

·3 mins·
Time Series Feature Engineering
TimeSeries - Cet article fait partie d'une série.
Partie 10: Cet article

En séries temporelles, la validation est plus délicate que dans un cadre classique. On ne peut pas mélanger le passé et le futur sans risquer de biaiser complètement les résultats.


🔁 Time-based cross-validation
#

On ne peut pas utiliser une cross-validation aléatoire classique. On doit respecter l’ordre temporel.

Deux approches principales :

Rolling window (fenêtre glissante) On entraîne sur une fenêtre fixe qui avance dans le temps.

Train: [1 → 100] → Test: [101 → 110]
Train: [11 → 110] → Test: [111 → 120]

👉 Utile si on pense que les données anciennes deviennent moins pertinentes.


Expanding window (fenêtre croissante) On entraîne sur tout l’historique disponible.

Train: [1 → 100] → Test: [101 → 110]
Train: [1 → 110] → Test: [111 → 120]

👉 Plus stable, mais peut intégrer du “vieux signal”.


💡 En pratique :

  • rolling = plus adaptatif
  • expanding = plus robuste

⚠️ Data leakage (le piège numéro 1)
#

Le modèle ne doit jamais avoir accès au futur.

Exemples classiques :

  • utiliser une moyenne calculée sur toute la série (incluant le futur)
  • créer des features avec un mauvais décalage (lags mal définis)
  • normaliser avec des statistiques globales

👉 Résultat : performances artificiellement excellentes… mais inutilisables en production.

💡 Règle simple :

à chaque instant t, on ne doit utiliser que l’information disponible à t


🎯 Horizon de prédiction
#

Prédire à +1 jour n’est pas la même chose que prédire à +30 jours.

Deux points importants :

  • la difficulté augmente avec l’horizon
  • le modèle optimal peut changer selon l’horizon

Exemples :

  • court terme → modèles autoregressifs performants
  • long terme → besoin de variables explicatives (exogènes)

💡 Toujours préciser :

“on prédit quoi, et à quelle échéance ?”


🔄 Backtesting réaliste
#

On simule des conditions réelles de production.

Pas juste un split train/test unique, mais plusieurs évaluations dans le temps.

Objectifs :

  • reproduire le comportement du modèle dans le futur
  • mesurer la variabilité des performances

📉 Stabilité dans le temps
#

Un modèle performant une fois peut être instable.

On regarde :

  • performance moyenne
  • variance des performances
  • dégradation dans le temps

👉 Un modèle légèrement moins performant mais stable est souvent préférable.


🧱 Baseline obligatoire
#

On compare toujours à un modèle naïf.

Exemples :

  • naïf : ( y_t = y_{t-1} )
  • moyenne historique
  • saisonnalité simple

👉 Si le modèle ne bat pas une baseline simple :

  • soit il est inutile
  • soit il y a un problème dans la validation

💡 C’est un garde-fou extrêmement puissant.


🧠 À retenir
#

  • On respecte toujours la temporalité
  • Le data leakage est le risque principal
  • Le backtesting doit simuler la réalité
  • La stabilité compte autant que la performance
  • Une baseline simple est indispensable
Thibault CLEMENT - Intechnia
Auteur
Thibault CLEMENT - Intechnia
Data scientist
TimeSeries - Cet article fait partie d'une série.
Partie 10: Cet article