Projet intégrateur — PredictRetail Analytics
Rossmann est l'une des plus grandes chaînes pharmaceutiques d'Europe — 3 000 magasins, 40 000 employés, présente dans 7 pays. Vous êtes recrutés comme consultants data : prédire les ventes futures de 1 115 points de vente à l'aide de modèles ML, et construire un dashboard Power BI permettant à la direction de piloter la performance et les prédictions en temps réel.
Le dataset provient d'une vraie compétition Kaggle lancée par Rossmann en 2015. Il est suffisamment riche et complexe pour nécessiter du feature engineering avancé, de la gestion de séries temporelles et des techniques de modélisation non triviales.
1 017 209 lignes · Ventes journalières de chaque magasin avec date, clients, promotions, jours fériés.
41 088 lignes · Les 6 semaines à prédire. Mêmes colonnes sans les ventes.
1 115 lignes · Infos par magasin : type, assortiment, distance concurrence, date ouverture promo.
| Colonne | Type | Enjeu analytique |
|---|---|---|
Sales | Cible (régression) | Variable à prédire. Distribution log-normale → transformation conseillée. Présence de 0 quand le magasin est fermé. |
Customers | Numérique | Fortement corrélé à Sales. À utiliser avec précaution en validation croisée temporelle car non disponible au moment de prédire. |
StateHoliday | Catégorielle (a/b/c/0) | Encodage ordinal ou one-hot selon le modèle. Impact différent selon le type de jour férié. |
SchoolHoliday | Binaire | Impact sur la fréquentation — corrélé aux vacances scolaires régionales. |
Promo | Binaire | Promotion du jour. Fort levier sur les ventes. Interaction avec Promo2. |
Promo2 | Binaire + dates | Programme de promotion cyclique — nécessite feature engineering pour extraire si une promo est active. |
StoreType | Catégorielle (a/b/c/d) | 4 formats de magasin avec comportements très différents. À encoder et analyser séparément. |
Assortment | Catégorielle (a/b/c) | Niveau d'assortiment produit. Corrélé au type de magasin et au volume de ventes. |
CompetitionDistance | Numérique (valeurs manquantes) | Distance en mètres du concurrent le plus proche. Nécessite imputation. |
CompetitionOpenSince | Année + mois | Feature engineering : calculer le nombre de mois depuis l'ouverture du concurrent. |
Customers est une data leakage potentielle — attention à sa présence dans les features de prédiction. (3) La validation croisée standard (KFold aléatoire) est invalide sur des séries temporelles — utiliser TimeSeriesSplit ou une validation out-of-time.
Explorer les données en profondeur, corriger les anomalies et construire les variables qui feront la différence en modélisation.
Charger train.csv, test.csv et store.csv. Merger les datasets. Analyser les types, les distributions, les valeurs manquantes. Produire un rapport de qualité des données.
Décomposition saisonnière par type de magasin. Analyse des tendances hebdomadaires, mensuelles et annuelles. Identifier l'impact des promotions et des jours fériés sur les volumes.
Extraction temporelle (DayOfWeek, Month, Year, WeekOfYear, Quarter, IsWeekend). Calcul des features Promo2 (actif ou non selon les mois). Ancienneté du concurrent (CompetitionMonths). Variables de lag (ventes N-7, N-14, N-1 an) et rolling means (7j, 30j, 90j).
Imputation des valeurs manquantes (CompetitionDistance → médiane par type). Encodage des variables catégorielles. Transformation log de la cible (log1p). Suppression ou traitement des jours fermés. Constitution du jeu de validation out-of-time (6 dernières semaines).
df_clean.parquet, (3) feature importance préliminaire via corrélation. Le notebook doit être exécutable de bout en bout sans erreur.
Entraîner, comparer et optimiser les modèles de prédiction. La métrique cible est le RMSPE (métrique officielle Kaggle).
Entraîner 2 baselines pour avoir un plancher : (1) Moyenne par store/DayOfWeek, (2) Random Forest avec hyperparamètres par défaut. Calculer le RMSPE sur le set de validation out-of-time.
Entraîner XGBoost et LightGBM sur le dataset complet avec les features engineered. Utiliser l'early stopping sur le set de validation. Comparer les performances et les temps d'entraînement.
Analyser quelles features contribuent le plus aux prédictions. Générer les SHAP values pour le meilleur modèle. Identifier si certaines features peuvent être supprimées (simplification).
Optimiser le meilleur modèle via Optuna (bayesian search) ou GridSearchCV. Générer les prédictions finales sur test.csv. Exporter predictions_final.csv pour Power BI et submission.csv pour Kaggle.
predictions_powerbi.csv exporté. Soumission sur Kaggle avec capture d'écran du score public.
Construire un dashboard interactif multi-pages permettant à la direction de piloter la performance réelle et les prédictions ML.
Page synthétique lisible en 30 secondes. La direction veut la situation globale, les alertes et les tendances — pas les détails.
| Visuel | Données | Interaction |
|---|---|---|
| 4 KPI cards | Ventes totales, Nb magasins actifs, RMSPE moyen, Croissance vs période précédente | Filtre date global |
| Line chart | Ventes réelles vs prédites sur la période de validation (par semaine) | Zoom timeline |
| Bar chart horizontal | Top 10 / Flop 10 magasins par RMSPE | Drill-through vers page magasin |
| Map (carte) | Répartition géographique des magasins avec indicateur de performance | Sélection région |
Analyse granulaire par point de vente. Le responsable régional veut comparer ses magasins et identifier les outliers.
| Visuel | Données | DAX clé |
|---|---|---|
| Slicer Store / StoreType / Assortment | Filtres hiérarchiques | — |
| Scatter plot | Ventes réelles vs prédites par magasin (1 point = 1 store) | AVERAGEX() |
| Heatmap matricielle | Ventes par DayOfWeek × Month (saisonnalité) | CALCULATE(SUM(), FILTER()) |
| Waterfall chart | Impact des promotions sur les ventes (avec vs sans Promo) | DIVIDE() |
| Table détail | Lignes par magasin : réel / prédit / écart / erreur % | Conditional formatting sur erreur |
Page dédiée à l'équipe data. Transparence sur le modèle : où prédit-il bien ? Où se trompe-t-il ? Pourquoi ?
| Visuel | Données | DAX clé |
|---|---|---|
| Distribution histogramme | Distribution de l'erreur relative (Error_Pct) par tranches | PERCENTILE.INC() |
| Box plot (R visual) | Dispersion des erreurs par StoreType et Assortment | R script intégré |
| Bar chart groupé | RMSPE par segment : StoreType / Promo / SchoolHoliday | RMSPE_Custom mesure DAX |
| Line chart dual axis | Erreur de prédiction dans le temps — détection de drift | Rolling window DAX |
Les prédictions sur les 6 semaines futures (test.csv). Alertes automatiques si un magasin est prédit en forte baisse. Aide à la planification des ressources.
PredictRetail_Dashboard.pbix avec les 4 pages, les relations entre tables correctement configurées, et au minimum 2 mesures DAX avancées. Le dashboard doit fonctionner sans connexion live (données embarquées).
Consolider les résultats, rédiger les recommandations business et défendre le projet devant le jury.
Synthèse de l'approche EDA, des choix de feature engineering justifiés, du processus de sélection de modèle et des limites identifiées. Maximum 8 pages.
Traduire les résultats techniques en recommandations actionnables pour la direction Rossmann : quels types de magasins sous-performent, quand la promo est-elle vraiment efficace, quels magasins nécessitent une attention prioritaire.
15 slides maximum. Structure : contexte & données (2) → EDA insights clés (3) → Modélisation résultats (4) → Dashboard live (4) → Recommandations (2). Démonstration live du dashboard Power BI obligatoire.
Customers comme feature dans le modèle de prédiction — data leakage évidentLes questions techniques sont posées individuellement à chaque membre. Les deux membres doivent maîtriser l'ensemble du projet.
Customers ?| Rigueur ML | Validation temporelle correcte · Feature engineering documenté · Pas de data leakage · RMSPE interprété |
| Maîtrise Power BI | Modèle de données propre · DAX avancé · Interactivité pertinente · Lien avec les prédictions ML |
| Vision business | Insights au-delà des métriques · Recommandations actionnables · Narration claire pour un non-technicien |
| Cohérence globale | ML et Power BI sont connectés · Les insights EDA informent les features · Le dashboard répond aux questions business posées |
Dataset : Rossmann Store Sales · Kaggle · 1 017 209 lignes · 1 115 magasins · RMSPE objectif : < 0.12