Formation ML / Apprentissage supervisé - Régression

Régression linéaire

Débutant 30 min 13 sections

Une droite ajustée par moindres carrés sur des prix immobiliers, et ce que MSE et R² en disent.

Objectifs d'apprentissage

  • Comprendre le principe de la régression linéaire
  • Implémenter un modèle avec scikit-learn
  • Évaluer les performances avec MSE et R²
  • Visualiser la droite de régression

Prérequis

Notions de base en Python (variables, fonctions)

Théorie

Qu'est-ce que la régression linéaire?

La régression linéaire est une méthode statistique qui permet de modéliser la relation entre une variable dépendante ($y$) et une ou plusieurs variables indépendantes ($X$).

L'idée est simple: trouver une droite qui passe "au mieux" à travers les points de données.

Équation du modèle:

$$y = a \cdot x + b$$

Ou:

  • $y$ = valeur prédite (ex: prix)
  • $x$ = variable explicative (ex: surface)
  • $a$ = pente (coefficient directeur)
  • $b$ = ordonnée à l'origine (intercept)

L'algorithme cherche les valeurs de $a$ et $b$ qui minimisent l'erreur entre les prédictions et les valeurs réelles.

Théorie

Schéma: Comment fonctionne la régression linéaire

Visualisation du concept:

Les points représentent les données réelles. La droite de régression $y = ax + b$ passe "au mieux" à travers les points pour minimiser les erreurs.

Décomposition de l'équation $y = ax + b$:

flowchart LR P["Pente (a)
3500 EUR/m2"] X["Surface (x)
80 m2"] B["Intercept (b)
50000 EUR"] R["Prix prédit
330000 EUR"] P -->|"×"| M["280000"] X -->|"×"| M M -->|"+"| R B -->|"+"| R class R ml-node-accent

Exemple concret - Estimation d'un appartement:

Un agent immobilier veut estimer le prix d'un appartement de $\textcolor{#3498db}{80 m^2}$. Le modèle a appris: $\textcolor{#e67e22}{a = 3500}$ EUR/m2 (pente) et $\textcolor{#9B7AC4}{b = 50000}$ EUR (intercept).

Calcul du prix:

$$\text{Prix} = \textcolor{#e67e22}{a} \times \textcolor{#3498db}{x} + \textcolor{#9B7AC4}{b} = \textcolor{#e67e22}{3500} \times \textcolor{#3498db}{80} + \textcolor{#9B7AC4}{50000}$$

$$\text{Prix} = \textcolor{#e67e22}{280000} + \textcolor{#9B7AC4}{50000} = \textcolor{#27ae60}{\mathbf{330000}} \text{ EUR}$$

Légende des couleurs:

  • $\textcolor{#3498db}{Bleu}$ : surface de l'appartement ($\textcolor{#3498db}{80 m^2}$)
  • $\textcolor{#e67e22}{Orange}$ : contribution de la surface ($\textcolor{#e67e22}{3500 \times 80 = 280000}$ EUR)
  • $\textcolor{#9B7AC4}{Violet}$ : prix de base/intercept ($\textcolor{#9B7AC4}{50000}$ EUR)
  • $\textcolor{#27ae60}{Vert}$ : prix final estime ($\textcolor{#27ae60}{330000}$ EUR)

Interprétation: Chaque m2 supplémentaire ajoute $\textcolor{#e67e22}{3500}$ EUR au prix. Le $\textcolor{#9B7AC4}{50000}$ EUR représente un "prix de base" (frais fixes, terrain, etc.).

Objectif de l'algorithme - Minimiser les erreurs:

L'algorithme cherche les valeurs de $a$ et $b$ qui minimisent la somme des erreurs au carré (moindres carrés).

flowchart TD D["Données
(x, y)"] M["Modèle
y = ax + b"] E["Erreur
(y_réel - y_prédit)²"] O["Optimisation
Minimiser Σ erreurs²"] R["Meilleurs a et b"] D --> M --> E --> O --> R class R ml-node-accent
Avancé Exercice manuel: À vous de calculer!

Objectif: Maîtriser les calculs de la régression linéaire multi-variable à la main.

Prenez une feuille et un stylo. Résolvez chaque partie AVANT de regarder la solution !

CONTEXTE

Un modèle de régression linéaire a été entraîné sur des données immobilières avec deux variables explicatives : la surface et le nombre de pièces.

Équation du modèle :

$$\hat{y} = \textcolor{#e67e22}{a_1} \cdot x_1 + \textcolor{#e67e22}{a_2} \cdot x_2 + \textcolor{#9B7AC4}{b}$$

Paramètres appris par le modèle :

  • $\textcolor{#e67e22}{a_1 = 2\,450}$ EUR/m² (coefficient pour la surface)
  • $\textcolor{#e67e22}{a_2 = 8\,500}$ EUR/pièce (coefficient pour le nombre de pièces)
  • $\textcolor{#9B7AC4}{b = 32\,000}$ EUR (intercept)

PARTIE 1 : Prédictions multi-variables (3 calculs)

Calculez le prix prédit $\hat{y}$ pour chacun des biens suivants :

BienSurface (x1)Nb pièces (x2)
A55 m²2 pièces
B78 m²3 pièces
C120 m²5 pièces

Rappel : $\hat{y} = 2\,450 \times x_1 + 8\,500 \times x_2 + 32\,000$

PARTIE 2 : Calcul des erreurs

Voici les prix réels de vente pour ces 3 biens :

BienPrix prédit (Partie 1)Prix réel (y)
A(votre réponse)190 000 EUR
B(votre réponse)248 000 EUR
C(votre réponse)378 000 EUR

Question 2.1 : Calculez l'erreur de prédiction pour chaque bien : $e_i = y_i - \hat{y}_i$

Question 2.2 : Calculez l'erreur au carré pour chaque bien : $e_i^2$

PARTIE 3 : Métriques de performance

Question 3.1 - MSE : Calculez le Mean Squared Error.

$$MSE = \frac{1}{n} \sum_{i=1}^{n} e_i^2$$

Question 3.2 - RMSE : Calculez le Root Mean Squared Error.

$$RMSE = \sqrt{MSE}$$

Question 3.3 - MAE : Calculez le Mean Absolute Error.

$$MAE = \frac{1}{n} \sum_{i=1}^{n} |e_i|$$

PARTIE 4 : Interprétation des coefficients

Question 4.1 : D'après les coefficients du modèle, quelle variable a le plus d'impact sur le prix : la surface ou le nombre de pièces ? Justifiez.

Question 4.2 : Un propriétaire hésite entre deux rénovations :

  • Option A : Agrandir de 10 m² (sans ajouter de pièce)
  • Option B : Diviser une grande pièce en 2 (sans changer la surface)

Quelle option augmentera le plus la valeur estimée du bien ? De combien ?

Question 4.3 : Le RMSE représente environ quel pourcentage du prix moyen des 3 biens ?

Avancé Solution de l'exercice manuel

SOLUTION DÉTAILLÉE

Prenez le temps de comparer avec vos réponses. Vérifiez chaque étape !

RAPPEL DU MODÈLE

$$\hat{y} = \textcolor{#e67e22}{a_1} \cdot x_1 + \textcolor{#e67e22}{a_2} \cdot x_2 + \textcolor{#9B7AC4}{b}$$

Avec : $\textcolor{#e67e22}{a_1 = 2\,450}$, $\textcolor{#e67e22}{a_2 = 8\,500}$, $\textcolor{#9B7AC4}{b = 32\,000}$

PARTIE 1 : Prédictions multi-variables

Bien A ($x_1 = \textcolor{#3498db}{55}$ m², $x_2 = \textcolor{#3498db}{2}$ pièces) :

$$\hat{y}_A = \textcolor{#e67e22}{2\,450} \times \textcolor{#3498db}{55} + \textcolor{#e67e22}{8\,500} \times \textcolor{#3498db}{2} + \textcolor{#9B7AC4}{32\,000}$$

Décomposition :

  • Contribution surface : $2\,450 \times 55 = \textcolor{#e67e22}{134\,750}$ EUR
  • Contribution pièces : $8\,500 \times 2 = \textcolor{#e67e22}{17\,000}$ EUR
  • Intercept : $\textcolor{#9B7AC4}{32\,000}$ EUR

$$\hat{y}_A = 134\,750 + 17\,000 + 32\,000 = \textcolor{#F7E64D}{\mathbf{183\,750}} \text{ EUR}$$

$\boxed{\hat{y}_A = \textcolor{#F7E64D}{183\,750} \text{ EUR}}$

Bien B ($x_1 = \textcolor{#3498db}{78}$ m², $x_2 = \textcolor{#3498db}{3}$ pièces) :

$$\hat{y}_B = \textcolor{#e67e22}{2\,450} \times \textcolor{#3498db}{78} + \textcolor{#e67e22}{8\,500} \times \textcolor{#3498db}{3} + \textcolor{#9B7AC4}{32\,000}$$

Décomposition :

  • Contribution surface : $2\,450 \times 78 = \textcolor{#e67e22}{191\,100}$ EUR
  • Contribution pièces : $8\,500 \times 3 = \textcolor{#e67e22}{25\,500}$ EUR
  • Intercept : $\textcolor{#9B7AC4}{32\,000}$ EUR

$$\hat{y}_B = 191\,100 + 25\,500 + 32\,000 = \textcolor{#F7E64D}{\mathbf{248\,600}} \text{ EUR}$$

$\boxed{\hat{y}_B = \textcolor{#F7E64D}{248\,600} \text{ EUR}}$

Bien C ($x_1 = \textcolor{#3498db}{120}$ m², $x_2 = \textcolor{#3498db}{5}$ pièces) :

$$\hat{y}_C = \textcolor{#e67e22}{2\,450} \times \textcolor{#3498db}{120} + \textcolor{#e67e22}{8\,500} \times \textcolor{#3498db}{5} + \textcolor{#9B7AC4}{32\,000}$$

Décomposition :

  • Contribution surface : $2\,450 \times 120 = \textcolor{#e67e22}{294\,000}$ EUR
  • Contribution pièces : $8\,500 \times 5 = \textcolor{#e67e22}{42\,500}$ EUR
  • Intercept : $\textcolor{#9B7AC4}{32\,000}$ EUR

$$\hat{y}_C = 294\,000 + 42\,500 + 32\,000 = \textcolor{#F7E64D}{\mathbf{368\,500}} \text{ EUR}$$

$\boxed{\hat{y}_C = \textcolor{#F7E64D}{368\,500} \text{ EUR}}$

PARTIE 2 : Calcul des erreurs

Question 2.1 - Erreurs de prédiction :

BienPrix réelPrix préditErreurInterprétation
A190 000 €183 750 €+6 250 €Sous-estime
B248 000 €248 600 €-600 €Sur-estime
C378 000 €368 500 €+9 500 €Sous-estime

Calculs détaillés :

  • $e_A = 190\,000 - 183\,750 = \textcolor{#3498db}{+6\,250}$ EUR
  • $e_B = 248\,000 - 248\,600 = \textcolor{#e74c3c}{-600}$ EUR
  • $e_C = 378\,000 - 368\,500 = \textcolor{#3498db}{+9\,500}$ EUR

Question 2.2 - Erreurs au carré :

BienErreurErreur²
A+6 25039 062 500
B-600360 000
C+9 50090 250 000

PARTIE 3 : Métriques de performance

Question 3.1 - MSE :

$$MSE = \frac{1}{n} \sum_{i=1}^{n} e_i^2 = \frac{1}{3} \times (e_A^2 + e_B^2 + e_C^2)$$

$$MSE = \frac{1}{3} \times (\textcolor{#e67e22}{39\,062\,500} + \textcolor{#e67e22}{360\,000} + \textcolor{#e67e22}{90\,250\,000})$$

$$MSE = \frac{\textcolor{#9B7AC4}{129\,672\,500}}{3} = \textcolor{#27ae60}{\mathbf{43\,224\,167}} \text{ EUR}^2$$

$\boxed{MSE = \textcolor{#27ae60}{43\,224\,167} \text{ EUR}^2}$

Question 3.2 - RMSE :

$$RMSE = \sqrt{MSE} = \sqrt{43\,224\,167} \approx \textcolor{#27ae60}{\mathbf{6\,575}} \text{ EUR}$$

Interprétation : En moyenne, le modèle se trompe d'environ 6 575 EUR sur le prix.

$\boxed{RMSE \approx \textcolor{#27ae60}{6\,575} \text{ EUR}}$

Question 3.3 - MAE :

$$MAE = \frac{1}{n} \sum_{i=1}^{n} |e_i| = \frac{1}{3} \times (|e_A| + |e_B| + |e_C|)$$

$$MAE = \frac{1}{3} \times (|\textcolor{#3498db}{6\,250}| + |\textcolor{#e74c3c}{-600}| + |\textcolor{#3498db}{9\,500}|)$$

$$MAE = \frac{1}{3} \times (6\,250 + 600 + 9\,500) = \frac{16\,350}{3} = \textcolor{#27ae60}{\mathbf{5\,450}} \text{ EUR}$$

$\boxed{MAE = \textcolor{#27ae60}{5\,450} \text{ EUR}}$

Note : MAE < RMSE car le RMSE pénalise davantage les grandes erreurs (bien C).

PARTIE 4 : Interprétation des coefficients

Question 4.1 - Variable avec le plus d'impact :

Comparons l'impact d'une unité supplémentaire :

  • $+1$ m² $\rightarrow$ $+\textcolor{#e67e22}{2\,450}$ EUR
  • $+1$ pièce $\rightarrow$ $+\textcolor{#e67e22}{8\,500}$ EUR

$\boxed{\text{Le nombre de pièces a plus d'impact par unité } (8\,500 > 2\,450)}$

Cependant, en pratique, il est plus facile d'ajouter des m² que des pièces !

Question 4.2 - Comparaison des rénovations :

Option A - Agrandir de 10 m² :

$$\Delta y_A = \textcolor{#e67e22}{a_1} \times 10 = 2\,450 \times 10 = \textcolor{#27ae60}{\mathbf{+24\,500}} \text{ EUR}$$

Option B - Ajouter 1 pièce :

$$\Delta y_B = \textcolor{#e67e22}{a_2} \times 1 = 8\,500 \times 1 = \textcolor{#27ae60}{\mathbf{+8\,500}} \text{ EUR}$$

$\boxed{\text{Option A est meilleure : } +24\,500 \text{ EUR vs } +8\,500 \text{ EUR}}$

Conclusion : Même si une pièce individuelle vaut plus qu'un m², agrandir de 10 m² rapporte presque 3 fois plus !

Question 4.3 - RMSE en pourcentage :

Prix moyen des 3 biens :

$$\bar{y} = \frac{190\,000 + 248\,000 + 378\,000}{3} = \frac{816\,000}{3} = \textcolor{#9B7AC4}{272\,000} \text{ EUR}$$

Pourcentage d'erreur :

$$\text{Erreur \%} = \frac{RMSE}{\bar{y}} \times 100 = \frac{6\,575}{272\,000} \times 100 \approx \textcolor{#27ae60}{\mathbf{2.4\%}}$$

$\boxed{\text{Erreur relative} \approx \textcolor{#27ae60}{2.4\%}}$

Conclusion : Une erreur de ~2.4% est très bonne pour un modèle à 2 variables !

RÉSUMÉ DES RÉSULTATS

MétriqueValeurInterprétation
MSE43 224 167 EUR²Difficile à interpréter (unité carrée)
RMSE6 575 EURErreur typique de prédiction
MAE5 450 EURErreur moyenne absolue
Erreur %2.4%Très bon pour l'immobilier

Légende des couleurs :

  • $\textcolor{#3498db}{Bleu}$ : valeurs d'entrée, erreurs positives (sous-estimation)
  • $\textcolor{#e67e22}{Orange}$ : coefficients, calculs intermédiaires
  • $\textcolor{#9B7AC4}{Violet}$ : intercept, sommes, moyennes
  • $\textcolor{#F7E64D}{Jaune}$ : valeurs prédites
  • $\textcolor{#27ae60}{Vert}$ : résultats finaux, prix réels
  • $\textcolor{#e74c3c}{Rouge}$ : erreurs négatives (sur-estimation)
Code

Charger et explorer les données

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

Visualiser la relation surface-prix

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

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