Vue d'ensemble
Une solution de prévision des ventes complète et prête pour la production, développée lors de mon stage chez Decathlon Belgique. Ce projet industrialise la prédiction de 8 KPIs de vente clés (GMV, articles vendus) segmentés par canal (InStore/OutStore, 1P/3P) pour l'ensemble des 64 départements sportifs.
Remplacement des processus de prévision manuels par une solution ML automatisée et scalable. Obtention d'une amélioration de 15% des prévisions, mesurée avec le MAPE, grâce à une comparaison rigoureuse de modèles et un feature engineering avancé.Mes Responsabilités
- Traduction des besoins de forecasting des parties prenantes en exigences par KPI, canal et catégorie sportive
- Benchmark de Prophet, XGBoost, LightGBM et Chronos-Bolt face au processus manuel précédent
- Construction de features météo, jours fériés, variables décalées et moyennes glissantes avec traitement distribué et parallèle
- Industrialisation du suivi d'expériences, du registre de modèles, de l'inférence et des exports métier
- Ajout du CI/CD GitHub Actions, des quality gates SonarCloud, de la documentation Sphinx et d'une configuration de déploiement reproductible
Architecture Technique
ML & Traitement de Données
- Prophet - Bibliothèque de prévision de séries temporelles de Facebook pour les prédictions multi-sorties (sélectionnée après benchmarking)
- Comparaison de modèles - Évaluation rigoureuse de Prophet, XGBoost, LightGBM, Chronos-Bolt pour sélectionner la meilleure approche
- Apache Spark / PySpark - Traitement distribué de données à grande échelle
- Delta Lake - Transactions ACID et stockage de données versionné
- Pandas / NumPy - Manipulation de données et calcul numérique
- scikit-learn - Feature engineering et prétraitement
- joblib - Traitement parallèle avec backend threading pour l'entraînement concurrent de modèles
- Databricks - Plateforme analytique unifiée pour les notebooks, le calcul et l'orchestration
- Apache Airflow - Orchestration de workflows pour l'ensemble du pipeline de données (de l'ingestion à la livraison des prédictions)
- MLflow - Gestion complète du cycle de vie ML :
- Suivi d'expériences avec métriques et paramètres
- Model Registry avec versioning (prophet-sport-<sport_code>)
- Serving et déploiement de modèles
- Databricks Bundles - Infrastructure-as-code pour les déploiements Databricks
Infrastructure Cloud
- AWS S3 - Stockage data lake pour les entrées, sorties intermédiaires et prédictions finales
- Amazon SageMaker - Environnement d'entraînement et d'expérimentation ML
- Amazon Bedrock - Exploration de modèles fondation
- AWS SSO - Gestion des identités et des accès
Pipeline de Données
| Étape | Description |
|---|
| Feature Engineering | Sous-jobs parallèles : SalesFeaturesJob (features de lag, moyennes glissantes), WeatherJob (température, précipitations), HolidaysJob (jours fériés belges, vacances scolaires) |
| Entraînement | Un modèle Prophet par sport avec prédiction multi-sorties, enregistrement MLflow |
| Prédiction | Récupération du dernier modèle, génération des prévisions, analyse de progression YoY |
| Export | Intégration Google Sheets avec onglets par département |
CI/CD & Qualité
- GitHub Actions - Workflows multiples :
- checkers.yml - Vérifications de qualité du code
- sonarcloud.yml - Rapports de sécurité et de couverture
- sphinxdocs.yml - Documentation auto-générée
- publication-preprod.yml / publication-prod.yml - Pipelines de déploiement
- SonarCloud - Tableaux de bord de qualité de code et scan de vulnérabilités
- Pre-commit hooks - Vérifications automatisées avant les commits
Outils de Qualité de Code
- Ruff - Linting et formatage Python rapide
- Mypy - Vérification statique de types
- Bandit - Scanner de vulnérabilités de sécurité
- Sphinx - Documentation API hébergée sur GitHub Pages
Outils de Développement
- uv - Gestionnaire de paquets Python moderne
- Makefile - Automatisation des tâches (install, format, test, deploy)
- VS Code Workspace - Paramètres IDE configurés
- Cookiecutter / Cruft - Structure de projet basée sur des templates
Gestion de Projet
- Confluence - Documentation technique et spécifications
- Jira - Planification de sprints et suivi des tâches
Architecture du Pipeline
1. Feature Engineering (Exécution Parallèle)
Trois sous-jobs s'exécutent simultanément :
- SalesFeaturesJob : Attributs temporels, features de lag YoY, moyennes glissantes sur 28 jours
- WeatherJob : Alignement des données météo historiques et prévisionnelles
- HolidaysJob : Jours fériés belges et features de vacances scolaires
Sortie : training_dataset.parquet et predictive_dataset.parquet
2. Entraînement des Modèles
- Itère sur la liste configurée sports_to_train
- Entraîne un modèle Prophet multi-sorties par sport
- Enregistre dans le MLflow Model Registry avec un nommage unique
- Journalise les paramètres de transformation pour le contexte de prédiction
3. Prédiction & Export
- Récupère la dernière version du modèle depuis le registre
- Génère les prévisions pour la plage de dates spécifiée
- Calcule les métriques de progression YoY
- Exporte vers Google Sheets avec des onglets par département
Fonctionnalités Clés
Traitement Parallèle
Utilise le backend threading de joblib (n_jobs=-1) pour le traitement concurrent des sports, idéal pour les opérations MLflow à forte composante I/O.
Exécution Résiliente
Les erreurs sur un sport individuel n'interrompent pas le pipeline — les autres sports continuent leur traitement.
Support Multi-Environnement
- Local : I/O fichier avec backend MLflow SQLite
- Dev : Data lake S3 avec tracking MLflow Databricks
Résumé des Technologies
| Catégorie | Technologies |
|---|
| ML | Prophet, XGBoost, LightGBM, Chronos-Bolt, scikit-learn, joblib |
| Données | PySpark, Delta Lake, Pandas, NumPy |
| MLOps | Databricks, MLflow, Apache Airflow, Databricks Bundles |
| Cloud | AWS S3, SageMaker, Bedrock |
| CI/CD | GitHub Actions, SonarCloud |
| Qualité | Ruff, Mypy, Bandit, Sphinx |
| Outils | uv, Makefile, Cookiecutter |
| Intégrations | Google Sheets API |
Résultats
- Amélioration de 15% de la précision des prévisions (MAPE) par rapport au processus manuel précédent
- Prédiction des ventes pour 64 catégories sportives
- Prévision de 8 KPIs par sport (GMV, articles par canal)
- Remplacement de la prévision manuelle par un pipeline ML automatisé et scalable
- Traitement de données multi-sources (ventes, météo, jours fériés)
- Exécution via des jobs de production planifiés avec réentraînement automatisé
- Export vers Google Sheets pour les parties prenantes métier
Bonus : Lancement du Ballon Jupiler Pro League
Au cours de ce stage, j'ai également contribué au lancement officiel du nouveau ballon de la Jupiler Pro League. J'ai réalisé une démonstration de football freestyle et suis apparu dans la vidéo de présentation officielle aux côtés d'Antoine Griezmann, illustrant la synergie entre les passions des collaborateurs et les projets de marque chez Decathlon.