Random Forest

La forêt aléatoire (Random Forest) est un ensemble d'arbres de décision entraînés sur des échantillons bootstrap des données, avec une sous-sélection aléatoire de variables à chaque division. Les prédictions finales agrègent les arbres par vote majoritaire (classification) ou moyenne (régression).

Intuition

Un arbre seul capture des interactions non linéaires mais sur-apprend facilement (forte variance). La forêt aléatoire applique le bagging : entraîner de nombreux arbres sur des sous-échantillons différents puis les moyenner réduit la variance sans augmenter autant le biais.

La randomisation des features à chaque split décorrèle les arbres entre eux — condition nécessaire pour que l'agrégation améliore réellement la généralisation par rapport à un seul arbre profond.

Fonctionnement

  1. Bootstrap

    : pour chaque arbre , tirer observations avec remise parmi (environ 63 % d'observations uniques par arbre).

  2. Arbre non élagué : faire croître l'arbre jusqu'à une profondeur ou des critères d'arrêt fixés (max_depth, min_samples_leaf, etc.).

  3. Random subspace

    : à chaque nœud, ne considérer qu'un sous-ensemble de max_features variables pour choisir le meilleur split.

  4. Agrégation : classification → classe majoritaire ; régression → moyenne des prédictions des arbres.

Score out-of-bag (OOB) : les observations non incluses dans le bootstrap d'un arbre servent d'échantillon de validation implicite. Avec oob_score=True, on obtient une estimation de performance sans jeu de validation dédié — utile en première passe, mais pas un substitut à une validation croisée rigoureuse.

Hyperparamètres clés

ParamètreRôleValeurs typiques
n_estimatorsNombre d'arbres dans la forêt100–500 ; rendements décroissants au-delà
max_depthProfondeur maximale de chaque arbre

None (illimité) ou 10–30 selon bruit

min_samples_leafTaille minimale d'une feuille1–10 ; plus élevé = plus de régularisation
min_samples_splitÉchantillons minimum pour diviser un nœud2 (défaut) à 20+ en données bruitées
max_featuresVariables candidates par split

sqrt (classif.), 1/3 (régression) ; décorrélation des arbres

bootstrapÉchantillonnage avec remise

True (défaut) ; False → chaque arbre voit toutes les données

oob_scoreÉvaluation out-of-bag

True si bootstrap=True

class_weightPondération des classes déséquilibrées

balanced ou dictionnaire de poids

n_jobsParallélisation de l'entraînement

-1 pour tous les cœurs

Forces et limites

Forces

  • Robuste aux outliers et aux échelles de variables (pas de normalisation obligatoire)
  • Capture interactions et non-linéarités sans feature engineering explicite
  • Importance des variables intégrée ; score OOB gratuit
  • Parallélisable ; relativement peu d'hyperparamètres critiques

Limites

  • Moins interprétable qu'un arbre unique
  • Coût mémoire et latence croissants avec n_estimators
  • Régression : mauvaise extrapolation hors du domaine d'entraînement
  • Peut être dominé par le gradient boosting sur données tabulaires structurées
  • Sensible au concept drift et au non-iid sans adaptation

Comparaison avec les modèles voisins

ModèlePrincipevs Random Forest
Arbre de décisionUn seul arbre, splits déterministesPlus interprétable, variance beaucoup plus élevée
Extra TreesSplits aléatoires (seuils aléatoires parmi les candidats)

Encore plus de décorrélation, souvent plus rapide, parfois légèrement moins précis

Gradient Boosting (XGBoost…)Arbres séquentiels corrigeant les résidus

Souvent meilleur en compétition tabulaire ; plus sensible au tuning et au sur-apprentissage

Régression / logistiqueModèle linéaire

Baseline rapide et interprétable ; ne capture pas les interactions complexes

k-NNVoisinage local

Sensible à la métrique et à la dimension ; latence en prédiction élevée

Évaluation et réglage

ÉtapeRecommandation
Découpage des données

Train / validation / test ; en séries temporelles : walk-forward ou purged CV — voir validation croisée

Métriques

Classification : accuracy, F1, ROC AUC, log loss selon le coût métier ; régression : RMSE, MAE,

Recherche d'hyperparamètres

Commencer par n_estimators et max_depth ; affiner min_samples_leaf et max_features via grid ou random search

OOB

Indicateur rapide pendant le prototypage ; valider sur un hold-out ou une CV avant déploiement

Sur-apprentissage

Augmenter min_samples_leaf, réduire max_depth ; vérifier l'écart train/validation

Importance des variables

MéthodePrincipeLimites
Impureté (Gini / MSE)

Moyenne de la baisse d'impureté par variable, agrégée sur les arbres ( feature_importances_)

Biaisée vers variables à haute cardinalité ; corrélations entre features

Importance par permutationBaisse de performance quand une variable est permutée aléatoirementPlus fiable ; coût de calcul plus élevé
SHAPValeurs de Shapley par observation et par feature

Interprétation locale et globale — voir ML appliqué aux marchés

Applications

Je mettrai des exemples concrets et précis à l'avenir.

Références