Formation ML / Supervised Regression

Regression Lineaire

Debutant 30 min 13 sections

Apprenez les fondamentaux de la regression lineaire pour predire des valeurs continues a partir de variables explicatives.

Objectifs d'apprentissage

  • Comprendre le principe de la regression lineaire
  • Implementer un modele avec scikit-learn
  • Evaluer les performances avec MSE et R2
  • Visualiser la droite de regression

Prerequis

Notions de base en Python (variables, fonctions)

Theorie

Qu'est-ce que la regression lineaire?

La regression lineaire est une methode statistique qui permet de modeliser la relation entre une variable dependante ($y$) et une ou plusieurs variables independantes ($X$).

L'idee est simple: trouver une droite qui passe "au mieux" a travers les points de donnees.

Equation du modele:

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

Ou:

  • $y$ = valeur predite (ex: prix)
  • $x$ = variable explicative (ex: surface)
  • $a$ = pente (coefficient directeur)
  • $b$ = ordonnee a l'origine (intercept)

L'algorithme cherche les valeurs de $a$ et $b$ qui minimisent l'erreur entre les predictions et les valeurs reelles.

Theorie

Schema: Comment fonctionne la regression lineaire

Visualisation du concept:

Les points representent les donnees reelles. La droite de regression $y = ax + b$ passe "au mieux" a travers les points pour minimiser les erreurs.

Decomposition de l'equation $y = ax + b$:

flowchart LR P["Pente (a)
3500 EUR/m2"] X["Surface (x)
80 m2"] B["Intercept (b)
50000 EUR"] R["Prix predit
330000 EUR"] P -->|"×"| M["280000"] X -->|"×"| M M -->|"+"| R B -->|"+"| R style R fill:#F7E64D,color:#1A1A1A

Exemple concret - Estimation d'un appartement:

Un agent immobilier veut estimer le prix d'un appartement de $\textcolor{#3498db}{80 m^2}$.

Le modele 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}$$

Legende 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)

Interpretation: Chaque m2 supplementaire ajoute $\textcolor{#e67e22}{3500}$ EUR au prix. Le $\textcolor{#9B7AC4}{50000}$ EUR represente 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 carre (moindres carres).

flowchart TD D["Donnees
(x, y)"] M["Modele
y = ax + b"] E["Erreur
(y_reel - y_predit)²"] O["Optimisation
Minimiser Σ erreurs²"] R["Meilleurs a et b"] D --> M --> E --> O --> R style R fill:#F7E64D,color:#1A1A1A
Avance Exercice manuel: A vous de calculer!

Objectif: Maitriser les calculs de la regression lineaire multi-variable a la main.

Prenez une feuille et un stylo. Resolvez chaque partie AVANT de regarder la solution !

CONTEXTE

Un modele de regression lineaire a ete entraine sur des donnees immobilieres avec deux variables explicatives : la surface et le nombre de pieces.

Equation du modele :

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

Parametres appris par le modele :

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

PARTIE 1 : Predictions multi-variables (3 calculs)

Calculez le prix predit $\hat{y}$ pour chacun des biens suivants :

BienSurface (x1)Nb pieces (x2)
A55 m²2 pieces
B78 m²3 pieces
C120 m²5 pieces

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

PARTIE 2 : Calcul des erreurs

Voici les prix reels de vente pour ces 3 biens :

BienPrix predit (Partie 1)Prix reel (y)
A(votre reponse)190 000 EUR
B(votre reponse)248 000 EUR
C(votre reponse)378 000 EUR

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

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

PARTIE 3 : Metriques 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 : Interpretation des coefficients

Question 4.1 : D'apres les coefficients du modele, quelle variable a le plus d'impact sur le prix : la surface ou le nombre de pieces ? Justifiez.

Question 4.2 : Un proprietaire hesite entre deux renovations :

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

Quelle option augmentera le plus la valeur estimee du bien ? De combien ?

Question 4.3 : Le RMSE represente environ quel pourcentage du prix moyen des 3 biens ?

Avance Solution de l'exercice manuel

SOLUTION DETAILLEE

Prenez le temps de comparer avec vos reponses. Verifiez chaque etape !

RAPPEL DU MODELE

$$\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 : Predictions multi-variables

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

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

Decomposition :

  • Contribution surface : $2\,450 \times 55 = \textcolor{#e67e22}{134\,750}$ EUR
  • Contribution pieces : $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}$ pieces) :

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

Decomposition :

  • Contribution surface : $2\,450 \times 78 = \textcolor{#e67e22}{191\,100}$ EUR
  • Contribution pieces : $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}$ pieces) :

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

Decomposition :

  • Contribution surface : $2\,450 \times 120 = \textcolor{#e67e22}{294\,000}$ EUR
  • Contribution pieces : $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 prediction :

BienPrix reelPrix preditErreurInterpretation
A190 000 €183 750 €+6 250 €Sous-estime
B248 000 €248 600 €-600 €Sur-estime
C378 000 €368 500 €+9 500 €Sous-estime

Calculs detailles :

  • $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 carre :

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

PARTIE 3 : Metriques 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}$$

Interpretation : En moyenne, le modele 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 penalise davantage les grandes erreurs (bien C).

PARTIE 4 : Interpretation des coefficients

Question 4.1 - Variable avec le plus d'impact :

Comparons l'impact d'une unite supplementaire :

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

$\boxed{\text{Le nombre de pieces a plus d'impact par unite } (8\,500 > 2\,450)}$

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

Question 4.2 - Comparaison des renovations :

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 piece :

$$\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 : Meme si une piece 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 tres bonne pour un modele a 2 variables !

RESUME DES RESULTATS

MetriqueValeurInterpretation
MSE43 224 167 EUR²Difficile a interpreter (unite carree)
RMSE6 575 EURErreur typique de prediction
MAE5 450 EURErreur moyenne absolue
Erreur %2.4%Tres bon pour l'immobilier

Legende des couleurs :

  • $\textcolor{#3498db}{Bleu}$ : valeurs d'entree, erreurs positives (sous-estimation)
  • $\textcolor{#e67e22}{Orange}$ : coefficients, calculs intermediaires
  • $\textcolor{#9B7AC4}{Violet}$ : intercept, sommes, moyennes
  • $\textcolor{#F7E64D}{Jaune}$ : valeurs predites
  • $\textcolor{#27ae60}{Vert}$ : resultats finaux, prix reels
  • $\textcolor{#e74c3c}{Rouge}$ : erreurs negatives (sur-estimation)
Code

Charger et explorer les donnees

Cliquez sur "Executer" pour voir le resultat
Code

Visualiser la relation surface-prix

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

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