Skip to content

Tutoriel : Régression polynomiale

Introduction

La régression polynomiale est une application directe du modèle linéaire présenté au Chapitre 2. L'objectif est d'approximer des données par un polynôme de degré fixé.

Problématique

Soit m observations (t1,x1),,(tm,xm)tk sont des abscisses (par exemple des temps) et xk sont des ordonnées bruités. Nous cherchons à modéliser la relation entre t et x par un polynôme de degré p :

x(t)=s0+s1t+s2t2++sptp

Formulation en modèle linéaire

Construction de la matrice de design

Bien que nous cherchions un polynôme (non linéaire en t), le problème est linéaire en les coefficients s=[s0,s1,,sp]T. Nous pouvons écrire :

x=As+n

où :

  • x=[x1,,xm]T est le vecteur des observations
  • s=[s0,s1,,sp]T est le vecteur des coefficients du polynôme ((p+1) paramètres)
  • n est le bruit gaussien
  • ARm×(p+1) est la matrice de Vandermonde :
A=[1t1t12t1p1t2t22t2p1tmtm2tmp]

Remarque : Chaque ligne k de A contient les puissances successives de tk.

Estimateur des moindres carrés

D'après le chapitre 2, l'estimateur du MLE (qui coïncide avec les moindres carrés) est :

s^MLE=(ATA)1ATx

Le polynôme ajusté est alors :

x^(t)=s^0+s^1t+s^2t2++s^ptp

Exemple numérique

Données

Considérons m=20 observations générées à partir d'un polynôme de degré 3 bruité :

x(tk)=1+2tk0.5tk2+0.1tk3+nk,tk[0,5]

avec nkN(0,0.52).

Ajustement

Nous cherchons à estimer les coefficients avec un polynôme de degré p=3 (ordre correct).

Matrice de design (premières lignes) :

A=[10.000.000.0010.260.070.0210.530.280.15]

Résultats : Le script Python ci-dessous génère les données et estime les coefficients.

Régression polynomiale

Figure 1: Ajustement polynomial de degré 3

Choix de l'ordre du polynôme

Sur-ajustement et sous-ajustement

  • Sous-ajustement (p trop petit) : Le modèle est trop simple, l'erreur est élevée
  • Bon ajustement (p correct) : Le modèle capture la tendance des données
  • Sur-ajustement (p trop grand) : Le modèle colle trop aux données bruitées, mauvaise généralisation
Comparaison des ordres

Figure 2: Comparaison de différents ordres de polynômes

Critère de sélection

Pour choisir p, on peut utiliser :

  • Validation croisée : Séparer données d'entraînement/test
  • Critères d'information : AIC, BIC qui pénalisent la complexité

Propriétés de l'estimateur

Biais et variance

  • Biais : E[s^MLE]=s (sans biais)
  • Matrice de covariance : Cov(s^MLE)=σ2(ATA)1

Remarque : La matrice ATA peut être mal conditionnée pour p grand, rendant l'inversion numérique instable.

Intervalle de confiance

Pour chaque coefficient sj, un intervalle de confiance asymptotique à 95% est :

IC0.95(sj)=[s^j1.96[Cov(s^)]jj,s^j+1.96[Cov(s^)]jj]

Exercices

  1. Générer des données polynomiales de degré 2 et ajuster des polynômes de degrés 1, 2, 3, 5
  2. Comparer l'erreur quadratique moyenne pour chaque ordre
  3. Étudier l'effet du nombre d'observations m sur la qualité de l'estimation
  4. Investiguer le conditionnement de ATA en fonction de p

Code Python

Le script complet est disponible dans src/polynomial_regression.py.