Formation ML / Apprentissage supervisé - Régression

Gradient Boosting

Intermédiaire 45 min 12 sections

Chaque arbre apprend l'erreur que les précédents ont laissée, séquentiellement, là où la forêt aléatoire les moyenne.

Objectifs d'apprentissage

  • Comprendre la différence entre bagging et boosting
  • Implémenter Gradient Boosting avec scikit-learn
  • Comparer avec XGBoost et LightGBM
  • Régler les hyperparamètres clés

Prérequis

Module Random Forest recommandé

Théorie

Bagging vs Boosting

Il existe deux approches principales pour combiner plusieurs modèles:

Bagging (Random Forest):

  • Arbres entraînés en parallèle
  • Chaque arbre est indépendant
  • Prédiction = moyenne des prédictions
  • Réduit la variance (overfitting)

Boosting (Gradient Boosting):

  • Arbres entraînés séquentiellement
  • Chaque arbre corrige les erreurs du précédent
  • Prédiction = somme pondérée des prédictions
  • Réduit le biais (underfitting)

Intuition du Gradient Boosting:

  1. Arbre 1 fait des prédictions
  2. On calcule les erreurs (résidus)
  3. Arbre 2 apprend à prédire ces erreurs
  4. On répète jusqu'à convergence

La prédiction finale: $\hat{y} = \sum_{i=1}^{n} \alpha_i \cdot h_i(x)$

Ou $h_i$ est le i-ème arbre et $\alpha_i$ son poids (learning rate).

Théorie

Schéma: Fonctionnement du Gradient Boosting

Entraînement séquentiel - Étape par étape:

flowchart LR subgraph Etape1 ["Étape 1"] D1["y réel"] T1["Arbre 1"] P1["Prédiction 1"] D1 --> T1 --> P1 end subgraph Etape2 ["Étape 2"] E1["Erreur 1
y - pred1"] T2["Arbre 2"] P2["Corrige
erreur 1"] E1 --> T2 --> P2 end subgraph Etape3 ["Étape 3"] E2["Erreur 2
restante"] T3["Arbre 3"] P3["Corrige
erreur 2"] E2 --> T3 --> P3 end P1 --> E1 P2 --> E2 class D1 ml-node-secondary class T1 ml-node-success class T2 ml-node-success class T3 ml-node-success class E1 ml-node-danger class E2 ml-node-danger class P1 ml-node-warning class P2 ml-node-warning class P3 ml-node-warning

Prédiction finale = Somme des contributions:

flowchart LR P1["Arbre 1
300k EUR"] PLUS1["+"] P2["Arbre 2
+15k
x learning_rate"] PLUS2["+"] P3["Arbre 3
+8k
x learning_rate"] EQ["="] F["323k EUR"] P1 --> PLUS1 --> P2 --> PLUS2 --> P3 --> EQ --> F class P1 ml-node-success class P2 ml-node-warning class P3 ml-node-warning class F ml-node-accent class PLUS1 ml-node-plain class PLUS2 ml-node-plain class EQ ml-node-plain

Exemple concret:

  • Maison réelle: 350k EUR
  • Arbre 1 prédit: 300k (erreur = +50k)
  • Arbre 2 corrige: +15k (erreur restante = +35k)
  • Arbre 3 corrige: +8k (erreur restante = +27k)
  • ... et ainsi de suite jusqu'à convergence

Comparaison Bagging vs Boosting:

flowchart TB subgraph BAG ["BAGGING - Parallèle"] DB["Données"] BA1["Arbre 1"] BA2["Arbre 2"] BA3["Arbre 3"] BM["Moyenne"] DB --> BA1 DB --> BA2 DB --> BA3 BA1 --> BM BA2 --> BM BA3 --> BM end subgraph BOOST ["BOOSTING - Séquentiel"] DBo["Données"] Bo1["Arbre 1"] Bo2["Arbre 2"] Bo3["Arbre 3"] BS["Somme"] DBo --> Bo1 Bo1 --> Bo2 Bo2 --> Bo3 Bo3 --> BS end class BM ml-node-brand class BS ml-node-accent class DB ml-node-secondary class DBo ml-node-secondary
Avancé Exercice manuel: À vous de calculer!

Objectif: Comprendre le boosting à la main (résidus, apprentissage séquentiel).

CONTEXTE

Vous predisez le prix d'une maison (valeur réelle : 300 000 EUR).

Le premier modèle (arbre faible) prédit : $\hat{y}_1 = 250\,000$ EUR

Learning rate : $\eta = 0.5$

PARTIE 1 : Calcul du résidu

1.1) Calculez le résidu $r_1 = y_{vrai} - \hat{y}_1$ 1.2) Que représente ce résidu ?

PARTIE 2 : Deuxième modèle

Le 2ème modèle apprend à prédire le résidu et prédit : $\hat{r}_2 = 40\,000$ EUR

2.1) Calculez la prédiction combinée : $\hat{y}_2 = \hat{y}_1 + \eta \cdot \hat{r}_2$ 2.2) Quel est le nouveau résidu ?

PARTIE 3 : Troisième itération

Le 3ème modèle prédit un résidu de : $\hat{r}_3 = 25\,000$ EUR

3.1) Calculez $\hat{y}_3$ 3.2) Quelle est l'erreur finale ?

PARTIE 4 : Interprétation

4.1) Pourquoi utilise-t-on un learning rate < 1 ? 4.2) Quel est le risque d'un learning rate trop élevé ?

Avancé Solution de l'exercice manuel

SOLUTION DÉTAILLÉE

PARTIE 1 : Calcul du résidu

1.1) Résidu : $$r_1 = 300\,000 - 250\,000 = \textcolor{#e74c3c}{\mathbf{50\,000}}$$ EUR

1.2) Le résidu représente l'erreur du modèle précédent. Le prochain modèle essaiera de corriger cette erreur.

PARTIE 2 : Deuxième modèle

2.1) Prédiction combinée :

$$\hat{y}_2 = 250\,000 + 0.5 \times 40\,000$$

$$= 250\,000 + 20\,000 = \textcolor{#F7E64D}{\mathbf{270\,000}}$$ EUR

2.2) Nouveau résidu : $$r_2 = 300\,000 - 270\,000 = \textcolor{#e67e22}{30\,000}$$ EUR

PARTIE 3 : Troisième itération

3.1) Prédiction finale :

$$\hat{y}_3 = 270\,000 + 0.5 \times 25\,000$$

$$= 270\,000 + 12\,500 = \textcolor{#27ae60}{\mathbf{282\,500}}$$ EUR

3.2) Erreur finale : $$\text{Erreur} = |300\,000 - 282\,500| = \textcolor{#e74c3c}{17\,500}$$ EUR (5.8%)

ItérationPrédictionRésidu
1250 00050 000
2270 00030 000
3282 50017 500

PARTIE 4 : Interprétation

4.1) Learning rate < 1 :

  • Évite le sur-apprentissage
  • Chaque modèle contribue partiellement
  • Plus stable mais nécessite plus d'itérations

4.2) Learning rate trop élevé :

  • Risque d'overfitting
  • Oscillations autour de la solution
  • Moins de généralisation

Légende : $\textcolor{#e74c3c}{Rouge}$: résidus/erreurs, $\textcolor{#F7E64D}{Jaune}$: prédictions intermédiaires, $\textcolor{#27ae60}{Vert}$: résultat final

Code

Explorer les données

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

Continuez votre apprentissage

Vous avez exploré 5 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