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
- Bootstrap
: pour chaque arbre , tirer observations avec remise parmi (environ 63 % d'observations uniques par arbre).
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.).- Random subspace
: à chaque nœud, ne considérer qu'un sous-ensemble de
max_featuresvariables pour choisir le meilleur split. 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ètre | Rôle | Valeurs typiques |
|---|---|---|
n_estimators | Nombre d'arbres dans la forêt | 100–500 ; rendements décroissants au-delà |
max_depth | Profondeur maximale de chaque arbre |
|
min_samples_leaf | Taille minimale d'une feuille | 1–10 ; plus élevé = plus de régularisation |
min_samples_split | Échantillons minimum pour diviser un nœud | 2 (défaut) à 20+ en données bruitées |
max_features | Variables candidates par split |
|
bootstrap | Échantillonnage avec remise |
|
oob_score | Évaluation out-of-bag |
|
class_weight | Pondération des classes déséquilibrées |
|
n_jobs | Parallélisation de l'entraînement |
|
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èle | Principe | vs Random Forest |
|---|---|---|
| Arbre de décision | Un seul arbre, splits déterministes | Plus interprétable, variance beaucoup plus élevée |
| Extra Trees | Splits 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 / logistique | Modèle linéaire | Baseline rapide et interprétable ; ne capture pas les interactions complexes |
| k-NN | Voisinage local | Sensible à la métrique et à la dimension ; latence en prédiction élevée |
Évaluation et réglage
| Étape | Recommandation |
|---|---|
| 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 |
| OOB | Indicateur rapide pendant le prototypage ; valider sur un hold-out ou une CV avant déploiement |
| Sur-apprentissage | Augmenter |
Importance des variables
| Méthode | Principe | Limites |
|---|---|---|
| Impureté (Gini / MSE) | Moyenne de la baisse d'impureté par variable, agrégée sur les arbres (
| Biaisée vers variables à haute cardinalité ; corrélations entre features |
| Importance par permutation | Baisse de performance quand une variable est permutée aléatoirement | Plus fiable ; coût de calcul plus élevé |
| SHAP | Valeurs de Shapley par observation et par feature | Interprétation locale et globale — voir ML appliqué aux marchés |
Applications
Références
• scikit-learn —
RandomForestClassifier
,
RandomForestRegressor
• cuML —
RandomForestClassifier
,
RandomForestRegressor