Accueil / Factory / Algos ML / Kaplan-Meier — factory / algos ML / analyse de survie

KAPLAN MEIER.

La courbe de survie de base : quelle part des clients est encore là après 6, 12 ou 24 mois. Elle tient compte des clients arrivés récemment, qu'on n'a pas encore pu suivre longtemps. C'est le premier graphique à tracer sur une question de rétention, avant tout modèle.

SurvieRétentionCensureStatistique descriptiveNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceDescriptif : décrit très bien, ne prévoit pas par client
InterprétabilitéUne courbe que tout comité sait lire
VitesseCalcul instantané
Facilité de réglageRien à régler
Tolérance aux données brutesExige une durée et un statut propres pour chaque individu
EN 30 SECONDES

Une course de fond où des coureurs rejoignent le départ à des moments différents. À chaque abandon, on calcule la part des coureurs encore en course parmi ceux qui étaient là, et on enchaîne ces fractions.

1. On range les durées

Pour chaque client : durée d'observation et statut, parti ou encore présent. Les présents sont « censurés ».

2. On calcule la chute à chaque départ

À chaque mois où des clients partent, on divise le nombre de départs par le nombre de clients encore présents à ce moment-là.

3. On multiplie les survies successives

La part de clients restants à 12 mois est le produit des parts restantes mois après mois. Un client censuré compte tant qu'il est observé, puis sort du calcul sans être compté comme départ.

LE CAS MÉTIER

rétention · abonnements / télécom / assurance
EN ENTRÉE

Une ancienneté, un statut, un contrat

Pour chaque client : ancienneté en mois, départ ou non, et type de contrat (mensuel, annuel, deux ans). Aucune autre variable n'est nécessaire.

EN SORTIE

Une courbe de rétention par contrat

Sur le jeu d'exemple, 94 % des clients sont encore là à 12 mois et 90 % à 24 mois. À 24 mois, 86 % des clients mensuels restent, contre 93 % des annuels et 95 % des contrats deux ans.

CE QU'ON MESURE

L'écart entre courbes, et le test du log-rank

On lit la survie à des horizons métier (12, 24 mois) avec leur intervalle de confiance. Le test du log-rank dit si les courbes des contrats diffèrent plus que ne le voudrait le hasard. Les derniers mois, où il reste peu de clients, se lisent avec prudence.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Mesurer la rétention ou la durée de vie d'une cohorte de clients, de contrats, de machines
  • Comparer deux ou trois groupes : type de contrat, canal d'acquisition, version de produit
  • Données avec des individus encore actifs, qu'une simple moyenne traiterait mal
  • Premier graphique avant un modèle de Cox

NON

  • Mesurer l'effet de plusieurs variables en même temps : modèle de Cox
  • Prévoir la durée d'un client précis : il faut un modèle avec variables explicatives
  • Départs liés à la raison de la censure (clients perdus de vue parce qu'ils partent) : la courbe est biaisée
  • Événements concurrents (départ vers un concurrent ou décès) : utiliser des méthodes à risques concurrents
LES 3 CHOIX QUI COMPTENT

Aucun hyperparamètre, mais trois décisions qui changent la courbe. Noms donnés pour R (survival) et Python (lifelines).

Définition de l'événement

Qu'est-ce qu'un départ : résiliation, non-renouvellement, inactivité de 90 jours ? Deux définitions donnent deux courbes différentes. À fixer avec le métier.

Origine du temps

La date de souscription pour une rétention, la mise en service pour une machine. Mélanger des origines différentes rend la courbe illisible.

times / survival_function_at_times

Les horizons de lecture. On choisit des dates qui parlent au métier (fin de période d'engagement, 12 mois) plutôt que la médiane, parfois jamais atteinte.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Rétention client par type de contrat : Kaplan-Meier en R
library(survival)

clients <- read.csv("clients_churn.csv")

# Durée = ancienneté en mois, événement = départ ; les clients encore là sont « censurés »
km <- survfit(Surv(anciennete, churn) ~ contrat, data = clients)

# Part de clients encore présents à 12 et 24 mois, avec intervalle à 95 %
print(summary(km, times = c(12, 24)))

# Courbes de survie par contrat
plot(km, col = c("black", "darkcyan", "orange"), xlab = "Ancienneté (mois)",
     ylab = "Part de clients restants", ylim = c(0.5, 1))
legend("bottomleft", legend = levels(factor(clients$contrat)),
       col = c("black", "darkcyan", "orange"), lty = 1)

# Test du log-rank : les courbes diffèrent-elles vraiment ?
print(survdiff(Surv(anciennete, churn) ~ contrat, data = clients))

QUESTIONS FRÉQUENTES

Pourquoi ne pas simplement calculer le taux de clients restants ?

Parce que les clients récents n'ont pas encore eu le temps de partir. Un taux brut à 24 mois ignorerait tous les clients de moins de 24 mois, ou les compterait à tort comme restés. Kaplan-Meier utilise chaque client tant qu'il est observé, ce qui donne une estimation non biaisée.

Comment lire une courbe de Kaplan-Meier ?

L'axe horizontal donne le temps, l'axe vertical la part d'individus sans événement. Chaque marche vers le bas correspond à des départs. On lit la survie à un horizon donné, et on compare les courbes de plusieurs groupes : plus une courbe est haute, meilleure est la rétention.

À quoi sert le test du log-rank ?

Il teste si deux courbes de survie ou plus diffèrent significativement. Il compare, à chaque départ, le nombre de départs observés dans chaque groupe au nombre attendu si tous les groupes avaient le même risque.

LES ALGOS VOISINS

à comparer avant de choisir
l'étape suivante

Modèle de Cox

Explique la survie par plusieurs variables à la fois et donne des hazard ratios.

Voir la fiche →
à horizon fixe

Régression logistique

Prévoit le départ à une date donnée, mais ignore les clients arrivés trop récemment.

Voir la fiche →
pour les parcours

Chaînes de Markov

Modélise le passage entre plusieurs états (actif, dormant, parti) au lieu d'un seul événement.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →