Note sur les données. Ce snapshot Kaggle (974 lignes clients MTN Nigeria) est approximativement uniforme aléatoire sur les covariables testées — voir le carnet jumeau
08-customer-survival-mtn-tenure/README.mdpour les détails. L’AUC de la logistique et le F1 du RF s’effondrent ; l’AUC XGBoost = 0,71 reflète des interactions non linéaires dans des one-hots à grande cardinalité, pas un signal interprétable substantivement. Ce carnet est une démonstration pédagogique de la classification binaire du churn — régression logistique, random forest, XGBoost, diagnostics ROC / PR / calibration, file de rétention. Pour un vrai benchmark : IBM Watson Telco Customer Churn (7 043 clients).
Quels clients ont le plus de chance de churner au prochain trimestre, et quelles features pilotent leur risque ? Un classifieur binaire ordonne les clients par probabilité de churn pour que les campagnes de rétention ciblent le segment à plus haut risque.
(Compagnon du projet 08, qui modélise les mêmes données comme un problème de survie — mêmes données, deux angles analytiques, tous deux utiles.)
Lancer python download_data.py.
| Famille | Modèle |
|---|---|
| Linéaire | Régression logistique avec pénalité L2 (baseline interprétable) |
| Arbres | Random Forest, Gradient Boosting (XGBoost) |
Chiffres en tête (test) :
| Modèle | ROC-AUC | PR-AUC | P@50 | Lift@50 | P@100 | Lift@100 |
|---|---|---|---|---|---|---|
| XGBoost | 0,71 | 0,51 | 0,52 | 1,78× | 0,40 | 1,37× |
| Random Forest | 0,59 | 0,36 | 0,34 | 1,16× | 0,38 | 1,30× |
| LogReg | 0,48 | 0,27 | 0,20 | 0,68× | 0,30 | 1,03× |
Seule la file top-50 de XGBoost porte un lift significatif (1,78× vs aléatoire). La top-50 de la LogReg est pire qu’aléatoire, signe que le scoring linéaire capte de l’anti-signal sur ces données (quasi-aléatoires). Voir la note dataset en haut pour le contexte.