Projets
MLOps8 février 2026

Prévision des Ventes Sports Belgique

Pipeline ML en production automatisant les prévisions de huit KPI de ventes sur 64 catégories sportives, avec benchmark, feature engineering, MLflow, CI/CD et delivery métier.

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

Plateforme MLOps

  • 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

ÉtapeDescription
Feature EngineeringSous-jobs parallèles : SalesFeaturesJob (features de lag, moyennes glissantes), WeatherJob (température, précipitations), HolidaysJob (jours fériés belges, vacances scolaires)
EntraînementUn modèle Prophet par sport avec prédiction multi-sorties, enregistrement MLflow
PrédictionRécupération du dernier modèle, génération des prévisions, analyse de progression YoY
ExportInté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égorieTechnologies
MLProphet, XGBoost, LightGBM, Chronos-Bolt, scikit-learn, joblib
DonnéesPySpark, Delta Lake, Pandas, NumPy
MLOpsDatabricks, MLflow, Apache Airflow, Databricks Bundles
CloudAWS S3, SageMaker, Bedrock
CI/CDGitHub Actions, SonarCloud
QualitéRuff, Mypy, Bandit, Sphinx
Outilsuv, Makefile, Cookiecutter
IntégrationsGoogle 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.