Retourner au courant

Régression par moindres carrés - Exemples

Les moindres carrés linéaires estiment les paramètres d'un modèle en minimisant la somme des carrés des résidus. Cet article dérive et applique la solution.

ENFR

L’idée

À partir d’observations (xi,yi)(x_i,y_i), la régression linéaire simple cherche une droite y=mx+by=mx+b. Un résidu est l’écart vertical yi(mxi+b)y_i-(mx_i+b) entre une observation et sa prédiction.

Points, résidus et droite ajustée

La méthode des moindres carrés choisit mm et bb en minimisant la somme des carrés des résidus :

E(m,b)=i=1n(yi(mxi+b))2.E(m,b)=\sum_{i=1}^{n}\left(y_i-(mx_i+b)\right)^2.

Le carré empêche les résidus positifs et négatifs de s’annuler et pénalise davantage les grandes erreurs. Lorsque les entrées ne sont pas constantes, cet objectif est convexe et possède un minimum unique.

Courbes de niveau de l'erreur quadratique autour de son minimum

Une variable explicative

Pour une régression simple, dériver E(m,b)E(m,b) par rapport à mm et bb donne

m^=i=1n(xixˉ)(yiyˉ)i=1n(xixˉ)2,b^=yˉm^xˉ.\hat m=\frac{\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y)}{\sum_{i=1}^n(x_i-\bar x)^2},\qquad \hat b=\bar y-\hat m\bar x.

Le dénominateur est non nul lorsque les valeurs observées xix_i ne sont pas toutes identiques.

Plusieurs variables explicatives

Pour nn observations et pp variables explicatives, rassemblons les observations dans une matrice de conception XRn×(p+1)X\in\mathbb R^{n\times(p+1)}. Sa première colonne contient des 1 pour l’ordonnée à l’origine ; chaque autre colonne contient une variable. Les coefficients inconnus forment βRp+1\beta\in\mathbb R^{p+1} et les valeurs observées forment yRny\in\mathbb R^n :

y=Xβ+ε.y=X\beta+\varepsilon.

Organisation des observations, coefficients et prédictions dans l'équation matricielle

L’estimateur des moindres carrés est

β^=arg minβXβy22.\hat\beta=\operatorname*{arg\,min}_{\beta}\|X\beta-y\|_2^2.

Son gradient vaut

βXβy22=2XT(Xβy).\nabla_{\beta}\|X\beta-y\|_2^2=2X^T(X\beta-y).

Au minimum, ce gradient est nul, ce qui donne les équations normales

XTXβ^=XTy.X^TX\hat\beta=X^Ty.

Si XX est de rang colonne plein, XTXX^TX est inversible et

β^=(XTX)1XTy.\hat\beta=(X^TX)^{-1}X^Ty.

Sans cette hypothèse, le minimiseur peut ne pas être unique. La solution de norme minimale est β^=X+y\hat\beta=X^+y, où X+X^+ est la pseudo-inverse de Moore–Penrose. En calcul numérique, on préfère généralement une décomposition QR ou en valeurs singulières au calcul explicite de (XTX)1(X^TX)^{-1}.

Exemple en Python

Cet exemple génère des observations bruitées autour de y=2x+3y=2x+3 et résout la régression avec numpy.linalg.lstsq :

import numpy as np

rng = np.random.default_rng(42)
x = np.linspace(0, 10, 100)
y = 2 * x + 3 + rng.normal(0, 1, len(x))

X = np.column_stack((x, np.ones(len(x))))
coefficients, residuals, rank, singular_values = np.linalg.lstsq(
    X, y, rcond=None
)

pente, ordonnee_origine = coefficients
predictions = X @ coefficients
print(pente, ordonnee_origine)

Observations bruitées suivant une tendance linéaire

La construction reste identique avec davantage de variables : il suffit d’ajouter une colonne à XX pour chaque variable. L’objet ajusté devient alors un hyperplan dans l’espace des variables ; il ne s’obtient pas en intersectant plusieurs hyperplans séparés.

Résidus mesurés verticalement entre observations et prédictions