concessionnaire d'equipment en Afrique, avait besoin d'identifier les clients pièces détachées qui s'éloignaient discrètement, assez tôt pour qu'un appel change encore la donne. Le piège : l'export de données utilisé est plafonné à exactement 1 000 000 de lignes par an, et ce plafond ne supprime pas un échantillon aléatoire, il supprime des clients entiers. Vérification faite sur la seule fenêtre de données non tronquée disponible, l'entrepôt ne conservait que 37 % des clients ayant réellement acheté début 2024. Le silence étant le seul signal de churn disponible, entraîner un modèle sur la liste complète des clients revenait à apprendre à détecter le bug d'export plutôt que le vrai churn.
La solution : restreindre la modélisation aux 230 clients observés assez régulièrement (au moins 6 mois sur 12) pour que leur silence soit crédible, construire 39 variables par compte (récence, fréquence, tendance monétaire, couverture contractuelle, mix produit) strictement à partir de données antérieures à la date de coupure, puis comparer 17 familles de classificateurs en validation croisée imbriquée avec intervalles de confiance bootstrap, 36 cas de churn confirmés ne suffisant pas à faire confiance à un simple split train/test. Un test de sensibilité au seuil de cohorte l'a démontré directement : en élargissant la cohorte, les variables dominantes du modèle gagnant passent de la récence d'achat au pays du client, soit exactement la signature du bug d'export que cette restriction visait à éviter.
Les modèles retenus (Bernoulli Naive Bayes et régression logistique, sélectionnés sur le rappel à seuil de précision fixe, non sur la précision brute) surpassent le classement par simple récence avec des intervalles de confiance non chevauchants. Livré sous forme d'application Streamlit avec simulateur de scénarios en direct, explications détaillées par compte, et registre de modèles MLflow avec surveillance automatisée de la dérive des données.
Segmentation non supervisée de 2 635 clients réels en 4 segments (ARI bootstrap de 0,97), révélant une liste de réactivation de 668 000 $ extraite d'un export tronqué.
Combine process mining et machine learning pour détecter les réclamations d'assurance frauduleuses à partir de journaux d'événements.
Application web en microservices en production (Django + ReactJS) automatisant le calcul des aides et la génération des réclamations, réduisant un processus de plusieurs jours à quelques minutes.