ML Learning Hub
Régressiondébutant

Arbres de Décision & Forêt Aléatoire

20 questions récursives : diviser la réalité en régions toujours plus pures

Comment les arbres de décision divisent les données (Gini, entropie), élagage, puis Random Forest comme ensemble baggé.

40 min
14 diagrammes
7 Concepts Couverts

Prérequis

Model Evaluation
Information Theory

Concepts Couverts

Gini ImpurityEntropyInformation GainPruningBaggingFeature ImportanceOOB Score

Formules Clés

Impureté de Gini

Probabilité de mal classer un échantillon aléatoire. Zéro = pureté parfaite

Gain d'Information

Réduction d'entropie obtenue par une division — choisir la division qui maximise ce gain

Entropie

Mesure du désordre / de l'imprévisibilité dans un nœud — nulle si pur, maximale si uniforme

Erreur OOB

Estimation de validation gratuite à partir d'échantillons absent de chaque bootstrap — pas besoin d'ensemble de validation séparé

Simulation Interactive

Loading visualization…
Loading visualization…

Architecture du Modèle

Loading visualization…
Loading visualization…
🎯

Le Modèle le Plus Simple et Puissant

motivation

Les arbres de décision imitent le raisonnement humain : 'Si âge > 40 ET fumeur ET cholestérol > 200 → risque élevé'. Ils sont interprétables, ne nécessitent pas de mise à l'échelle des caractéristiques, gèrent les types mixtes et capturent les relations non linéaires. Seuls, ils sur-ajustent beaucoup — mais comme bloc de construction pour la Forêt Aléatoire, XGBoost et LightGBM, ils constituent la structure de modèle la plus importante en ML tabulaire.

💡

Partitionnement Binaire Récursif

intuition

Un arbre de décision partitionne l'espace des caractéristiques en régions rectangulaires. À chaque étape, il demande : 'Quel seuil de caractéristique unique sépare le mieux les classes ?' Il mesure 'le mieux' en utilisant l'impureté (Gini ou entropie). Le processus récurse sur chaque sous-région jusqu'à atteindre un critère d'arrêt.

Un arbre de décision de profondeur 20 avec des divisions binaires peut représenter 2²⁰ ≈ 1 million de régions différentes. C'est pourquoi ils sur-ajustent si catastrophiquement sur des données brutes.

Gini vs Entropie : Les Critères de Division

math

Les deux mesurent l'impureté — plus c'est bas, mieux c'est. Le Gini est plus rapide à calculer (sans log). L'entropie est légèrement plus sensible aux probabilités de classe proches de 0,5. En pratique, ils produisent des arbres presque identiques.

Gini pour la classification binaire
🔬

Pourquoi la Forêt Aléatoire Fonctionne : Décomposition Biais-Variance

deepdive

Un arbre profond unique a un faible biais mais une variance catastrophiquement élevée — il mémorise le bruit d'entraînement. La Forêt Aléatoire exploite deux astuces : (1) L'échantillonnage bootstrap fait croître chaque arbre sur un sous-ensemble aléatoire différent de données. (2) Les sous-ensembles aléatoires de caractéristiques (√p caractéristiques par division) décorrèlent les arbres. Faire la moyenne d'estimateurs décorrélés à haute variance réduit la variance sans augmenter le biais.

Le 'aléatoire' dans la Forêt Aléatoire fait référence à la sélection aléatoire des caractéristiques à chaque division, pas seulement au bootstrap. C'est l'insight clé de Breiman (2001).

⚙️

Algorithme d'Entraînement de la Forêt Aléatoire

algorithm
1

Pour t = 1 à T (nombre d'arbres) :

Échantillon bootstrap Dₜ des données d'entraînement (n échantillons avec remplacement)

Faire croître l'arbre de décision hₜ sur Dₜ :

À chaque nœud, sélectionner aléatoirement m = √p caractéristiques

Trouver la meilleure division parmi ces m caractéristiques (Gini/entropie le plus bas)

Développer jusqu'à max_depth ou min_samples_leaf atteint

7

Prédiction finale : vote majoritaire (classification) ou moyenne (régression)

8

Estimation OOB : pour chaque échantillon, prédire en utilisant seulement les arbres qui ne l'ont pas vu

</>

Modèle de Production

code
python33 lines
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score, train_test_split
from sklearn.datasets import make_classification
import pandas as pd
import shap

class="tok-comment"># ── Données dclass="tok-str">'exemple ──────────────────────────────────────────────────
X_brut, y = make_classification(n_samples=class="tok-num">500, n_features=class="tok-num">10,
                                  n_informative=class="tok-num">5, random_state=class="tok-num">42)
feature_names = [f"var_{i}" for i in range(X_brut.shape[class="tok-num">1])]
X_train, X_test, y_train, y_test = train_test_split(
    X_brut, y, test_size=class="tok-num">0.2, random_state=class="tok-num">42)

class="tok-comment"># Entraînement
rf = RandomForestClassifier(
    n_estimators=class="tok-num">500,
    max_features='sqrtclass="tok-str">',        class="tok-comment"># Sous-ensembles de caractéristiques aléatoires
    max_depth=None,             class="tok-comment"># Entièrement développé (élagué par min_samples_leaf)
    min_samples_leaf=class="tok-num">1,
    oob_score=True,             class="tok-comment"># Estimation de validation gratuite
    random_state=class="tok-num">42,
    n_jobs=-class="tok-num">1
)
rf.fit(X_train, y_train)
print(f"Score OOB : {rf.oob_score_:.4f}")

class="tok-comment"># Importance des caractéristiques (Diminution Moyenne de l'Impureté)
importances = pd.Series(rf.feature_importances_, index=feature_names)
importances.nlargest(class="tok-num">20).sort_values().plot(kind=class="tok-str">'barh')

class="tok-comment"># SHAP pour l'importance correcte des caractéristiques
explainer = shap.TreeExplainer(rf)
shap_values = explainer.shap_values(X_test)
⚠️

Pièges de la Forêt Aléatoire

pitfall
1

L'importance des caractéristiques MDI est biaisée vers les caractéristiques à haute cardinalité. Utilisez l'importance par permutation ou SHAP.

2

Mémoire : 500 arbres profonds peuvent utiliser 2–10 Go. Définissez max_depth=15–20 en production.

3

Inférence lente : prédire sur 500 arbres en série est lent. Considérez n_estimators=100 pour le déploiement.

4

Déséquilibre des classes : utilisez class_weight='balanced' ou bootstrap stratifié.

?Vérification des Connaissances

La progression est sauvegardée dans votre navigateur — aucun compte requis.

Besoin d'un ingénieur IA ou data scientist ?

Je conçois des modèles ML sur mesure, des agents IA, de la vision par ordinateur et de l'automatisation — de l'idée à la production.