Accueil / Factory / Algos ML / Régression polynomiale — factory / algos ML / apprentissage supervisé

RÉGRESSION POLYNOMIALE.

Une régression linéaire à laquelle on ajoute la variable au carré, au cube, et ainsi de suite. La droite devient une courbe, mais le calcul reste celui des moindres carrés. On l'utilise quand la relation monte puis redescend, ou plafonne, et qu'une droite passe à côté.

RégressionRelation courbeModèle interprétableMaintenanceNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBonne sur une courbe simple, instable au-delà du degré 4
InterprétabilitéLa courbe se lit, les coefficients un par un beaucoup moins
VitesseMoindres carrés : calcul instantané
Facilité de réglageUn seul réglage, le degré, mais il change tout
Tolérance aux données brutesTrès sensible aux extrêmes, surtout aux bords des données
EN 30 SECONDES

Une règle souple qu'on plie pour suivre la forme des points. Un degré 2 donne une seule bosse, un degré 3 permet une montée puis une descente puis une remontée.

1. On fabrique des puissances

À partir de l'heure de la journée, on crée heure², heure³… Ces nouvelles colonnes s'ajoutent au tableau comme des variables ordinaires.

2. On ajuste une régression linéaire

Le modèle reste linéaire dans ses coefficients : a × heure + b × heure² + c × heure³. La méthode des moindres carrés s'applique telle quelle.

3. On choisit le degré sur des données non vues

On compare les degrés en validation croisée. On garde le plus petit degré au-delà duquel l'erreur ne baisse plus.

LE CAS MÉTIER

maintenance · industrie / énergie / data centers
EN ENTRÉE

Une mesure par heure

La température d'une machine relevée toutes les heures pendant près de trois mois. En régime normal, elle suit un cycle de 24 heures : plus chaude vers 6 h du matin sur le jeu d'exemple, plus fraîche vers 18 h.

EN SORTIE

Un profil normal heure par heure

Le modèle donne la température attendue à chaque heure. Tout écart au profil devient un signal. Sur le jeu d'exemple, les 8 pics anormaux de la période saine ressortent seuls, et après l'heure 1400 la machine tourne en moyenne 4,4 °C au-dessus de son profil.

CE QU'ON MESURE

L'erreur en °C, degré par degré

On compare l'erreur moyenne en validation croisée selon le degré. Ici, elle tombe de 1,4 °C (droite) à 0,7 °C au degré 3, puis ne bouge presque plus : le degré 3 suffit.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Relation courbe avec une seule bosse ou un plafond : dose / effet, prix / volume, profil horaire
  • Besoin d'une formule simple à recoder dans un tableur ou un automate
  • Peu de variables explicatives, pour garder la courbe lisible
  • Premier test pour savoir si une relation non linéaire existe

NON

  • Prévoir hors de la plage observée : un polynôme part vers l'infini aux bords
  • Variable cyclique (heure, mois) où minuit doit rejoindre 23 h : préférer sinus et cosinus
  • Formes complexes ou nombreuses variables : préférer un GAM ou MARS
  • Degré élevé sur peu de données : la courbe se met à osciller, c'est du surapprentissage
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (poly dans lm) et Python (PolynomialFeatures de scikit-learn).

degree (poly en R, PolynomialFeatures en Python)

Le seul vrai réglage. 2 ou 3 suffisent dans la grande majorité des cas métier. Au-delà de 4, la courbe devient instable, surtout aux extrémités.

Polynômes orthogonaux : poly(raw = FALSE)

Par défaut, R crée des puissances décorrélées entre elles, ce qui stabilise le calcul. Les coefficients ne se lisent plus un par un, mais les prévisions sont identiques.

interaction_only / include_bias

Avec plusieurs variables, PolynomialFeatures crée aussi tous les produits croisés. Le nombre de colonnes explose vite : on limite le degré ou on passe à Ridge.

LE CODE MINIMAL

jeu d'exemple : capteurs_machine.csv ↓
# Profil horaire de température : régression polynomiale en R
capteurs <- read.csv("capteurs_machine.csv")
capteurs$heure <- as.integer(substr(capteurs$horodatage, 12, 13))
normal <- capteurs[1:1400, ]   # période de fonctionnement normal

# Choix du degré : AIC de chaque modèle (plus bas = meilleur compromis)
for (degre in 1:6) {
  m <- lm(temperature ~ poly(heure, degre), data = normal)
  cat("Degré", degre, ": AIC", round(AIC(m), 1), "\n")
}

# Modèle retenu : degré 3, puis écart à la normale après l'heure 1400
modele <- lm(temperature ~ poly(heure, 3), data = normal)
ecart <- capteurs$temperature - predict(modele, newdata = capteurs)
cat("Écart moyen après l'heure 1400 :", round(mean(ecart[1401:2000]), 2), "°C\n")
cat("Heures à plus de 3 °C au-dessus du profil : avant", sum(ecart[1:1400] > 3),
    "/ après", sum(ecart[1401:2000] > 3), "\n")

QUESTIONS FRÉQUENTES

La régression polynomiale est-elle un modèle linéaire ?

Oui. Elle est linéaire dans ses coefficients, même si la courbe obtenue ne l'est pas en fonction de la variable. C'est ce qui permet d'utiliser les moindres carrés et les mêmes outils que la régression linéaire classique.

Comment choisir le degré d'une régression polynomiale ?

On compare plusieurs degrés sur des données que le modèle n'a pas vues, par validation croisée, ou avec un critère comme l'AIC. On retient le plus petit degré au-delà duquel l'erreur ne diminue plus nettement.

Peut-on extrapoler avec une régression polynomiale ?

C'est déconseillé. Hors de la plage observée, le terme de plus haut degré domine et la courbe part très vite vers le haut ou le bas. Pour prévoir une tendance, un modèle de série temporelle est plus adapté.

LES ALGOS VOISINS

à comparer avant de choisir
la version droite

Régression linéaire

Le même calcul sans puissances. À essayer d'abord : si la droite suffit, inutile de courber.

Voir la fiche →
des courbes plus sages

Modèle additif généralisé (GAM)

Des splines au lieu de puissances : la courbe s'adapte localement et ne s'emballe pas aux bords.

Voir la fiche →
quand les puissances s'accumulent

Ridge

Freine les coefficients quand les termes polynomiaux et croisés deviennent nombreux et corrélés.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →