Accueil / Factory / Algos ML / Arbre de décision (CART) — factory / algos ML / apprentissage supervisé

ARBRE DE DÉCISION.

Une suite de questions oui / non sur les variables, qui mène à une décision. L'arbre se lit comme une procédure : par exemple, un client qui a appelé le support plus de 5 fois est à risque. On l'utilise quand les équipes doivent comprendre, vérifier et appliquer les règles elles-mêmes.

ClassificationRégressionRègles métierDonnées tabulairesNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceUn arbre seul reste derrière une forêt ou un boosting
InterprétabilitéDes règles si / alors lisibles par tous
VitesseEntraînement et prédiction quasi instantanés
Facilité de réglageLa profondeur doit être bridée, sinon il apprend par cœur
Tolérance aux données brutesPas de normalisation, peu sensible aux valeurs extrêmes
EN 30 SECONDES

Le jeu « Qui est-ce ? » : à chaque tour, on pose la question qui élimine le plus de mauvaises pistes.

1. On cherche la meilleure question

L'algorithme teste chaque variable et chaque seuil possible (plus de 2 appels au support ? contrat mensuel ?) et garde celui qui sépare le mieux partants et fidèles, au sens de l'indice de Gini.

2. On recommence dans chaque branche

Chaque groupe obtenu est redécoupé de la même façon, jusqu'à une profondeur maximale ou un effectif minimum par feuille.

3. On élague

Un arbre trop profond apprend le bruit. On coupe les branches qui n'améliorent pas assez le modèle, selon un paramètre de complexité.

4. On lit la feuille

Un nouveau client descend l'arbre question par question. La feuille où il arrive donne sa classe et la part de partants observée dans ce groupe.

LE CAS MÉTIER

churn · télécom / énergie / assurance
EN ENTRÉE

Une ligne par client

Ancienneté, nombre d'appels au support, montant mensuel, type de contrat, incidents des 3 derniers mois. Et la colonne à prédire : le client est-il parti ?

EN SORTIE

Quelques segments et leurs règles

Huit feuilles au plus, chacune décrite par une règle et un taux de départ. Sur le jeu d'exemple, les clients qui ont appelé le support plus de 5 fois partent près de 2 fois sur 3, contre 22 % en moyenne.

CE QU'ON MESURE

Des règles qui tiennent sur des clients neufs

On compare le taux de départ de chaque feuille entre entraînement et test. Une règle qui annonce 70 % à l'entraînement et 30 % en test a été apprise par cœur : on ne la transmet pas aux équipes.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Règles à transmettre à une équipe terrain ou à coder dans un CRM
  • Explorer un problème et repérer les seuils qui comptent
  • Variables mélangées (numériques, catégorielles) et peu préparées
  • Segmentation à présenter à un comité non technique

NON

  • Performance maximale recherchée : passer à une Random Forest ou à XGBoost
  • Modèle à réentraîner souvent : quelques lignes en plus peuvent changer tout l'arbre
  • Effet progressif (le risque baisse mois après mois) : l'arbre le découpe en marches, une régression logistique le suit mieux
  • Petite base : les règles reposent sur trop peu de cas
LES 4 RÉGLAGES QUI COMPTENT

Les trois premiers empêchent l'arbre d'apprendre par cœur. Noms donnés pour R (rpart) et Python (scikit-learn).

maxdepth / max_depth

Profondeur maximale. Trois niveaux donnent huit règles au plus, quatre niveaux seize : au-delà, plus personne ne les lit.

minbucket / min_samples_leaf

Nombre minimum de clients par feuille. Fixé à 50, il évite les règles bâties sur une poignée de cas.

cp / ccp_alpha

Complexité : une branche n'est gardée que si elle améliore assez le modèle. Même principe, échelles différentes. En R, printcp() affiche l'erreur en validation croisée pour choisir où élaguer.

parms (prior) / class_weight

Poids des classes. Avec class_weight="balanced", une feuille est étiquetée 1 dès que son taux de départ dépasse la moyenne de la base, et non plus 50 %.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Churn clients : arbre de décision (CART) en R
library(rpart)

clients <- read.csv("clients_churn.csv")
clients$churn <- factor(clients$churn)
clients$contrat <- factor(clients$contrat)

set.seed(42)
idx <- sample(nrow(clients), round(0.7 * nrow(clients)))
train <- clients[idx, ]
test <- clients[-idx, ]

arbre <- rpart(churn ~ anciennete + appels_support + montant + contrat + incidents_3m,
               data = train, method = "class",
               control = rpart.control(maxdepth = 3, minbucket = 50, cp = 0.001))

# Élagage : on garde le cp qui minimise l'erreur en validation croisée (xerror)
printcp(arbre)
arbre <- prune(arbre, cp = arbre$cptable[which.min(arbre$cptable[, "xerror"]), "CP"])

# Les règles : effectif, classe prédite et part de partants (yprob) par nœud
print(arbre)

# Chaque feuille : taux prévu (entraînement) en nom, taux observé en test en valeur
proba <- predict(arbre, newdata = test, type = "prob")[, "1"]
print(round(tapply(test$churn == "1", round(proba, 2), mean), 2))

QUESTIONS FRÉQUENTES

Qu'est-ce que l'indice de Gini dans un arbre de décision ?

C'est une mesure du mélange dans un groupe : 0 si tous les clients ont la même issue, 0,5 au maximum avec deux classes à parts égales. À chaque découpage, CART choisit la question qui fait le plus baisser ce mélange. Il ne faut pas le confondre avec le coefficient de Gini utilisé en économie ou en scoring.

Comment éviter le surapprentissage d'un arbre de décision ?

En limitant sa croissance : profondeur maximale, effectif minimum par feuille, puis élagage par le paramètre de complexité. Ces réglages se choisissent en regardant la performance sur des données de validation, jamais sur les données d'entraînement.

Quelle différence entre CART, C4.5 et CHAID ?

CART découpe toujours en deux branches et traite classification comme régression. C4.5 choisit ses questions avec le ratio de gain d'information et peut créer une branche par modalité. CHAID s'appuie sur des tests du khi-deux et découpe en plusieurs branches à la fois.

LES ALGOS VOISINS

à comparer avant de choisir
la version en comité

Random Forest

Des centaines d'arbres entraînés sur des tirages différents qui votent. Bien plus précise et stable, mais illisible.

Voir la fiche →
l'autre modèle lisible

Régression logistique

Des coefficients au lieu de règles. Plus stable, et meilleure quand l'effet d'une variable est progressif.

Voir la fiche →
le cousin marketing

CHAID

Un arbre qui découpe en plusieurs branches à la fois selon des tests du khi-deux. Très utilisé en études.

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 →