Formation ML / Apprentissage supervisé - Régression

Random Forest Regressor

Intermédiaire 40 min 14 sections

Cent arbres entraînés sur des échantillons et features tirés au sort, dont la moyenne bat un arbre seul.

Objectifs d'apprentissage

  • Comprendre le principe du bagging et des forêts aléatoires
  • Implémenter un Random Forest avec scikit-learn
  • Analyser l'importance des features
  • Optimiser les hyperparamètres

Prérequis

Modules Régression linéaire et Arbre de décision recommandés

Théorie

Qu'est-ce qu'une forêt aléatoire?

Une forêt aléatoire (Random Forest) est un algorithme d'ensemble qui combine plusieurs arbres de décision pour obtenir de meilleures prédictions.

Principe du Bagging (Bootstrap Aggregating):

  1. Créer plusieurs échantillons aléatoires des données (avec remise)
  2. Entraîner un arbre de décision sur chaque échantillon
  3. Agréger les prédictions de tous les arbres

Spécificité du Random Forest:

En plus du bagging, chaque split d'arbre ne considère qu'un sous-ensemble aléatoire des features.

Avantages:

  • Réduit l'overfitting (par rapport à un seul arbre)
  • Robuste aux outliers et au bruit
  • Calcule automatiquement l'importance des features
  • Pas besoin de normalisation des données

Inconvénients:

  • Moins interprétable qu'un seul arbre
  • Plus lent à entraîner
  • Nécessite plus de mémoire
Théorie

Schéma: Architecture d'une forêt aléatoire

Comment fonctionne le Random Forest:

flowchart TD D["Dataset Original
(100 échantillons)"] subgraph Bootstrap ["Bootstrap Sampling"] B1["Échantillon 1
(100 avec remise)"] B2["Échantillon 2
(100 avec remise)"] B3["Échantillon 3
(100 avec remise)"] end subgraph Trees ["Arbres de Décision"] T1["Arbre 1"] T2["Arbre 2"] T3["Arbre 3"] end subgraph Predictions ["Prédictions"] P1["Pred 1
250k"] P2["Pred 2
245k"] P3["Pred 3
255k"] end AGG["Moyenne
250k"] D --> B1 --> T1 --> P1 D --> B2 --> T2 --> P2 D --> B3 --> T3 --> P3 P1 --> AGG P2 --> AGG P3 --> AGG class AGG ml-node-accent

Randomisation des features à chaque split:

flowchart LR F["Toutes les Features
(surface, nb_rooms, ...)"] S["Sélection Aléatoire
(sqrt(n) features)"] B["Meilleur Split
parmi la sélection"] F --> S --> B class B ml-node-accent

Cette double randomisation (échantillons + features) réduit la corrélation entre les arbres et améliore la généralisation.

Exemple concret - Prédiction du prix d'un appartement:

Un appartement de $\textcolor{#3498db}{85 m^2}$ avec $\textcolor{#e67e22}{3}$ pièces.

Prédictions de chaque arbre:

  • $\textcolor{#9B7AC4}{Arbre 1}$ : $\textcolor{#9B7AC4}{248000}$ EUR (entraîné sur échantillon A)
  • $\textcolor{#F7E64D}{Arbre 2}$ : $\textcolor{#F7E64D}{252000}$ EUR (entraîné sur échantillon B)
  • $\textcolor{#e74c3c}{Arbre 3}$ : $\textcolor{#e74c3c}{250000}$ EUR (entraîné sur échantillon C)

Agrégation (moyenne):

$$\text{Prix} = \frac{\textcolor{#9B7AC4}{248000} + \textcolor{#F7E64D}{252000} + \textcolor{#e74c3c}{250000}}{3} = \textcolor{#27ae60}{\mathbf{250000}} \text{ EUR}$$

Légende des couleurs:

  • $\textcolor{#3498db}{Bleu}$ : surface ($\textcolor{#3498db}{85 m^2}$)
  • $\textcolor{#e67e22}{Orange}$ : nombre de pièces ($\textcolor{#e67e22}{3}$)
  • $\textcolor{#9B7AC4}{Violet}$ : prédiction Arbre 1
  • $\textcolor{#F7E64D}{Jaune}$ : prédiction Arbre 2
  • $\textcolor{#e74c3c}{Rouge}$ : prédiction Arbre 3
  • $\textcolor{#27ae60}{Vert}$ : prédiction finale (moyenne)

Pourquoi c'est puissant? Chaque arbre peut se tromper un peu, mais en moyennant leurs prédictions, les erreurs individuelles se compensent!

Avancé Exercice manuel: À vous de calculer!

Objectif: Comprendre le fonctionnement de Random Forest à la main (agrégation, vote majoritaire).

CONTEXTE

Vous avez entraîné un Random Forest avec 5 arbres pour classifier des emails (SPAM/HAM). Un nouvel email arrive avec les caractéristiques suivantes :

  • Nombre de liens : 3
  • Mots en majuscules : 15

Les 5 arbres donnent les prédictions suivantes :

ArbrePrédictionConfiance
1SPAM0.8
2HAM0.6
3SPAM0.9
4SPAM0.7
5HAM0.55

PARTIE 1 : Vote majoritaire

1.1) Combien d'arbres prédisent SPAM ? HAM ? 1.2) Quelle est la prédiction finale du Random Forest ?

PARTIE 2 : Probabilité moyenne

2.1) Calculez la probabilité moyenne pour la classe SPAM 2.2) Calculez la probabilité moyenne pour la classe HAM 2.3) Quelle est la confiance finale du modèle ?

PARTIE 3 : Interprétation

3.1) Pourquoi Random Forest est-il plus robuste qu'un seul arbre ? 3.2) Que se passe-t-il si on augmente le nombre d'arbres ?

Avancé Solution de l'exercice manuel

SOLUTION DÉTAILLÉE

PARTIE 1 : Vote majoritaire

1.1) Décompte :

  • SPAM : Arbres 1, 3, 4 → $\textcolor{#e74c3c}{3 votes}$
  • HAM : Arbres 2, 5 → $\textcolor{#27ae60}{2 votes}$

1.2) Prédiction finale :

$\boxed{\text{SPAM} \text{ (3 votes contre 2)}}$

PARTIE 2 : Probabilité moyenne

2.1) Probabilité SPAM :

$$P(SPAM) = \frac{0.8 + (1-0.6) + 0.9 + 0.7 + (1-0.55)}{5}$$

$$= \frac{0.8 + 0.4 + 0.9 + 0.7 + 0.45}{5} = \frac{3.25}{5} = \textcolor{#e74c3c}{\mathbf{0.65}}$$

2.2) Probabilité HAM :

$$P(HAM) = 1 - 0.65 = \textcolor{#27ae60}{\mathbf{0.35}}$$

2.3) Confiance finale : $\boxed{65\%}$ pour SPAM

PARTIE 3 : Interprétation

3.1) Random Forest est plus robuste car :

  • Chaque arbre voit des données différentes (bootstrap)
  • Les erreurs individuelles se compensent
  • Le vote/moyenne réduit la variance

3.2) Plus d'arbres → prédictions plus stables (jusqu'à convergence)

Légende : $\textcolor{#e74c3c}{Rouge}$: SPAM, $\textcolor{#27ae60}{Vert}$: HAM

Code

Explorer les données

Ctrl+Entrée
Cliquez sur "Exécuter" pour voir le résultat
Code

Visualiser les relations

Ctrl+Entrée
Cliquez sur "Exécuter" pour voir le résultat
Contenu verrouillé
6 / 14

Continuez votre apprentissage

Vous avez exploré 6 sections de ce module. Connectez-vous pour débloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Exécuter
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Désindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Rétablir
Ctrl+Entrée pour exécuter
Cliquez sur "Exécuter" pour voir le résultat