Aller au contenu principal

Régression linéaire

Commençons par deux points et une droite. La pente incline la droite ; l’ordonnée à l’origine la déplace verticalement. Ajuster le modèle consiste à modifier ces deux nombres pour réduire les erreurs de prédiction. Essayez avant de passer aux matrices.

À vous d’essayer

Ajuster une droite à deux points

Les points verts sont les observations ; la droite bleue est votre prédiction. Réduisez les erreurs en pointillés avec les curseurs, puis essayez un pas de gradient. La MSE est la moyenne des erreurs au carré : plus elle est petite, mieux la droite s’ajuste à ces points.

xy01(0, 1)(1, 3)

ObservationsPrédiction

MSE 5.0000

5.00MSE après chaque pas0

ŷ = 0.000x + (0.000)∇L [b, w] = [-4.000, -3.000]

Essayez : repartez de zéro, faites un pas à 0.1, puis recommencez avec 1. Un grand pas peut augmenter l’erreur. Pouvez-vous ajuster la droite vous-même ?

Les paramètres restent entre −3 et 4. Un pas hors de cet intervalle est désactivé : réduisez le taux ou recommencez. La droite est coupée aux limites verticales du graphique. La lecture s’arrête après 60 pas, près de zéro ou si le panneau est masqué. Le mode à mouvements réduits conserve les pas manuels.
Voir le code · NumPy / JAX

L’interaction utilise JavaScript. Ces exemples Python reprennent les mêmes données et équations avec les valeurs initiales, pas celles des curseurs. JAX calcule le gradient de la perte avec jax.grad. Guide de différentiation JAX

Dans un nouveau projet local, enregistrez l’exemple dans demo.py. Installation CPU : uv init ai-labcd ai-labuv add numpy jaxuv run demo.py

import numpy as np

x = np.array([0., 1.])
y = np.array([1., 3.])
p = np.array([0., 0.]) # [b, w]

def loss(p):
return np.mean((p[1] * x + p[0] - y) ** 2)

def gradient(p):
error = p[1] * x + p[0] - y
return np.array([2 * error.mean(), 2 * (error * x).mean()])

p = p - 0.1 * gradient(p)
print(p, loss(p)) # [0.4, 0.3], 2.825

La régression linéaire prédit une cible numérique comme fonction affine des variables :

y^=xw+b.\hat{y} = \mathbf{x}^{\top}\mathbf{w} + b.

Pour nn observations, les lignes sont rassemblées dans une matrice de conception X\mathbf{X}. Si l’ordonnée à l’origine est représentée par une colonne supplémentaire de 1, le modèle devient

y^=Xθ.\hat{\mathbf{y}} = \mathbf{X}\boldsymbol{\theta}.

Le mot « linéaire » se rapporte aux paramètres. Les variables peuvent inclure des transformations telles que des interactions ou des termes polynomiaux, tandis que le modèle reste linéaire en θ\boldsymbol{\theta}.

Objectif d’erreur quadratique

Les moindres carrés ordinaires minimisent la somme des carrés des résidus, ou de manière équivalente l’erreur quadratique moyenne :

θ^=argminθ1nXθy22.\hat{\boldsymbol{\theta}} = \arg\min_{\boldsymbol{\theta}} \frac{1}{n}\left\|\mathbf{X}\boldsymbol{\theta}-\mathbf{y}\right\|_2^2.

Lorsqu’il n’existe pas de solution unique fondée sur une inverse, la pseudo-inverse de Moore–Penrose fournit une solution aux moindres carrés :

θ^=X+y.\hat{\boldsymbol{\theta}} = \mathbf{X}^{+}\mathbf{y}.

L’optimisation par gradient est utile lorsque le jeu de données est volumineux, que le modèle s’inscrit dans un système différentiable plus vaste ou que la régularisation modifie l’objectif.

Du résidu à la mise à jour

Avec dd variables et une constante, XX est de forme n×(d+1)n\times(d+1) et θ\theta possède d+1d+1 composantes. La dérivée de la MSE ci-dessus donne

θL=2nX(Xθy),θθηθL.\nabla_\theta L=\frac{2}{n}X^\top(X\theta-y), \qquad \theta\leftarrow\theta-\eta\nabla_\theta L.

Le taux d’apprentissage η>0\eta>0 règle l’amplitude du pas. Pour (x,y)=(0,1),(1,3)(x,y)=(0,1),(1,3), partons de (b,w)=(0,0)(b,w)=(0,0). Les erreurs « prédiction moins cible » XθyX\theta-y valent [1,3][-1,-3] et le gradient, dans l’ordre (b,w)(b,w), vaut [4,3][-4,-3]. Avec η=0.1\eta=0.1, les paramètres deviennent (0.4,0.3)(0.4,0.3) et la MSE passe de 55 à 2.8252.825. L’ajustement exact est (1,2)(1,2). L’inférence évalue seulement wx+bwx+b, sans cible ni mise à jour des poids.

Annuler le gradient donne les équations normales XXθ=XyX^\top X\theta=X^\top y. Le rang colonne plein assure l’unicité ; sinon, la pseudo-inverse choisit le minimiseur de norme euclidienne minimale. En calcul numérique, préférer QR ou SVD à l’inversion explicite de XXX^\top X, dont le conditionnement en norme 2 est le carré de celui de XX à rang colonne plein.

La dérivation par vraisemblance du manuel suppose des résidus gaussiens indépendants de même variance : la log-vraisemblance négative correspond alors à la MSE, à une échelle et une constante près. Minimiser la MSE n’exige pas de bruit gaussien. Avec une moyenne conditionnelle correctement spécifiée, E[ϵX]=0E[\epsilon\mid X]=0 et un rang colonne plein, les moindres carrés sont conditionnellement sans biais ; les erreurs-types homoscédastiques usuelles supposent en plus une variance constante.

Limites de l’interprétation

  • Un coefficient dépend des variables incluses dans le modèle et de leur échelle.
  • Une bonne prédiction n’établit pas de relation causale.
  • L’inférence statistique exige d’autres hypothèses que la seule minimisation de l’erreur quadratique ; prédiction et inférence sont des objectifs distincts.
  • La colinéarité peut rendre les coefficients instables même si les prédictions restent satisfaisantes.
  • L’extrapolation hors de la plage observée des variables dépend fortement de la forme fonctionnelle choisie.
  • Les graphiques des résidus et l’erreur hors échantillon révèlent des défaillances invisibles dans la perte d’entraînement.

La régression linéaire est utile à la fois comme modèle et comme référence. Une méthode plus complexe doit justifier son intérêt face à cette solution plus simple.

Pour un ajustement complet, les hypothèses d’incertitude et la régularisation, consultez les moindres carrés ordinaires. Cette note utilise la demi-MSE : son gradient de perte est la moitié de celui présenté ici. Comparez donc aussi les conventions d’échelle du taux d’apprentissage et des pénalités.

Poursuivez avec la régression softmax pour la classification en classes mutuellement exclusives. La principale référence externe est Dive into Deep Learning: Linear Neural Networks for Regression.

Explorer les liensOuvrir le réseau