Formation ML / Supervised Regression

Random Forest Regressor

Intermediaire 40 min 14 sections

Maitrisez les forets aleatoires pour la regression, un algorithme d'ensemble puissant combinant plusieurs arbres de decision.

Objectifs d'apprentissage

  • Comprendre le principe du bagging et des forets aleatoires
  • Implementer un Random Forest avec scikit-learn
  • Analyser l'importance des features
  • Optimiser les hyperparametres

Prerequis

Modules Regression Lineaire et Arbre de Decision recommandes

Theorie

Qu'est-ce qu'une foret aleatoire?

Une foret aleatoire (Random Forest) est un algorithme d'ensemble qui combine plusieurs arbres de decision pour obtenir de meilleures predictions.

Principe du Bagging (Bootstrap Aggregating):

  1. Creer plusieurs echantillons aleatoires des donnees (avec remise)
  2. Entrainer un arbre de decision sur chaque echantillon
  3. Agreger les predictions de tous les arbres

Specificite du Random Forest:

En plus du bagging, chaque split d'arbre ne considere qu'un sous-ensemble aleatoire des features.

Avantages:

  • Reduit l'overfitting (par rapport a un seul arbre)
  • Robuste aux outliers et au bruit
  • Calcule automatiquement l'importance des features
  • Pas besoin de normalisation des donnees

Inconvenients:

  • Moins interpretable qu'un seul arbre
  • Plus lent a entrainer
  • Necessite plus de memoire
Theorie

Schema: Architecture d'une foret aleatoire

Comment fonctionne le Random Forest:

flowchart TD D["Dataset Original
(100 echantillons)"] subgraph Bootstrap ["Bootstrap Sampling"] B1["Echantillon 1
(100 avec remise)"] B2["Echantillon 2
(100 avec remise)"] B3["Echantillon 3
(100 avec remise)"] end subgraph Trees ["Arbres de Decision"] T1["Arbre 1"] T2["Arbre 2"] T3["Arbre 3"] end subgraph Predictions ["Predictions"] 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 style AGG fill:#F7E64D,color:#1A1A1A

Randomisation des features a chaque split:

flowchart LR F["Toutes les Features
(surface, nb_rooms, ...)"] S["Selection Aleatoire
(sqrt(n) features)"] B["Meilleur Split
parmi la selection"] F --> S --> B style B fill:#F7E64D,color:#1A1A1A

Cette double randomisation (echantillons + features) reduit la correlation entre les arbres et ameliore la generalisation.

Exemple concret - Prediction du prix d'un appartement:

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

Predictions de chaque arbre:

  • $\textcolor{#9B7AC4}{Arbre 1}$ : $\textcolor{#9B7AC4}{248000}$ EUR (entraine sur echantillon A)
  • $\textcolor{#F7E64D}{Arbre 2}$ : $\textcolor{#F7E64D}{252000}$ EUR (entraine sur echantillon B)
  • $\textcolor{#e74c3c}{Arbre 3}$ : $\textcolor{#e74c3c}{250000}$ EUR (entraine sur echantillon C)

Agregation (moyenne):

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

Legende des couleurs:

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

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

Avance Exercice manuel: A vous de calculer!

Objectif: Comprendre le fonctionnement de Random Forest a la main (agregation, vote majoritaire).

CONTEXTE

Vous avez entraine un Random Forest avec 5 arbres pour classifier des emails (SPAM/HAM).

Un nouvel email arrive avec les caracteristiques suivantes :

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

Les 5 arbres donnent les predictions suivantes :

ArbrePredictionConfiance
1SPAM0.8
2HAM0.6
3SPAM0.9
4SPAM0.7
5HAM0.55

PARTIE 1 : Vote majoritaire

1.1) Combien d'arbres predisent SPAM ? HAM ?

1.2) Quelle est la prediction finale du Random Forest ?

PARTIE 2 : Probabilite moyenne

2.1) Calculez la probabilite moyenne pour la classe SPAM

2.2) Calculez la probabilite moyenne pour la classe HAM

2.3) Quelle est la confiance finale du modele ?

PARTIE 3 : Interpretation

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 ?

Avance Solution de l'exercice manuel

SOLUTION DETAILLEE

PARTIE 1 : Vote majoritaire

1.1) Decompte :

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

1.2) Prediction finale :

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

PARTIE 2 : Probabilite moyenne

2.1) Probabilite 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) Probabilite HAM :

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

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

PARTIE 3 : Interpretation

3.1) Random Forest est plus robuste car :

  • Chaque arbre voit des donnees differentes (bootstrap)
  • Les erreurs individuelles se compensent
  • Le vote/moyenne reduit la variance

3.2) Plus d'arbres → predictions plus stables (jusqu'a convergence)

Legende : $\textcolor{#e74c3c}{Rouge}$: SPAM, $\textcolor{#27ae60}{Vert}$: HAM

Code

Explorer les donnees

Cliquez sur "Executer" pour voir le resultat
Code

Visualiser les relations

Cliquez sur "Executer" pour voir le resultat
Contenu verrouille section restante
6 / 14

Continuez votre apprentissage

Vous avez explore 6 sections de ce module. Connectez-vous pour debloquer le reste du cours, incluant les exercices pratiques et les solutions.

Console Python

Raccourcis clavier
Ctrl/Cmd+Enter Executer
Ctrl/Cmd+Shift+/ Commenter
Tab Indenter
Shift+Tab Desindenter
Ctrl/Cmd+Z Annuler
Ctrl/Cmd+Y Retablir
Ctrl+Enter pour executer
Cliquez sur "Executer" pour voir le resultat