Le pipeline complet
Un projet de prévision de séries temporelles suit toujours le même pipeline : exploration (EDA), pré-traitement, sélection et entraînement du modèle, évaluation, déploiement et monitoring. Dans cet article, nous suivons ce pipeline sur un dataset de ventes retail.
Étape 1 : exploration et diagnostics
Avant tout modèle, visualisez vos données. Identifiez la tendance (trend), la saisonnalité (annuelle, hebdomadaire, quotidienne), les outliers et les ruptures structurelles (changements de comportement permanents).
Testez la stationnarité avec le test ADF (Augmented Dickey-Fuller). Si la série n'est pas stationnaire, vous devrez la différencier avant d'appliquer certains modèles (ARIMA).
Étape 2 : choisir le bon modèle
Prophet (Meta) : notre recommandation par défaut
Prophet est robuste, facile à configurer et gère nativement les données manquantes, les jours fériés et les changements de tendance. Pour 80% des cas de prévision de ventes, c'est notre point de départ.
SARIMA : quand vous maîtrisez l'économétrie
SARIMA (Seasonal ARIMA) est plus puissant que Prophet sur les séries avec une saisonnalité bien définie et peu de données manquantes. La sélection des paramètres (p,d,q)(P,D,Q)s peut être automatisée avec auto_arima.
LightGBM avec features temporelles
Pour les séries avec beaucoup de variables explicatives (météo, prix, promotions, données concurrents), un gradient boosting avec des features temporelles (lag variables, rolling averages) surpasse souvent les modèles classiques.
Anti-pattern à éviter : ne jamais entraîner sur des données futures. Le train/test split sur les séries temporelles doit respecter l'ordre chronologique. Utilisez TimeSeriesSplit de scikit-learn.
Étape 3 : évaluation correcte
MAPE (Mean Absolute Percentage Error) pour comparer entre produits de volumes différents. MAE pour l'erreur absolue moyenne en unités. RMSE pour pénaliser les erreurs importantes.
Évaluez toujours sur plusieurs horizons : 1 semaine, 1 mois, 3 mois. La performance se dégrade avec l'horizon, mais ce n'est pas linéaire.
Mise en production avec confidence intervals
En production, communiquez toujours des intervalles de confiance, pas juste un point de prévision. "Ventes prévues : 1200 unités, avec 90% de probabilité dans la fourchette [950, 1450]" est infiniment plus utile qu'un simple "1200".
Les séries temporelles et la prévision font partie du bloc Python du Bootcamp Data Analyst.