Accueil / Factory / Algos ML / Régression robuste (Huber) — factory / algos ML / apprentissage supervisé

RÉGRESSION ROBUSTE.

Une régression qui traite normalement les petits écarts, mais limite l'influence des grands. Une erreur de saisie qui multiplie un chiffre par dix ne tire plus toute la droite vers elle. On obtient les coefficients qu'on aurait eus sur des données propres, sans devoir chasser chaque anomalie à la main.

RégressionValeurs aberrantesQualité des donnéesModèle interprétableNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceAussi précise qu'une régression sur données propres
InterprétabilitéMêmes coefficients lisibles qu'une régression linéaire
VitesseQuelques itérations, calcul très rapide
Facilité de réglageUn paramètre, dont la valeur par défaut convient souvent
Tolérance aux données brutesRésiste aux extrêmes de la cible, pas aux manquants
EN 30 SECONDES

Un comité qui écoute tout le monde, mais qui plafonne le temps de parole. Celui qui crie plus fort que les autres n'obtient pas plus d'influence pour autant.

1. On ajuste une première droite

On calcule les écarts entre valeurs réelles et prévues, et une échelle de référence de ces écarts.

2. On change de règle pour les grands écarts

Sous un seuil (1,35 fois l'échelle), l'écart compte au carré, comme en régression classique. Au-delà, il ne compte plus qu'en valeur absolue : son influence est plafonnée.

3. On repondère et on recommence

Les points aux grands écarts reçoivent un poids plus faible, et on réajuste. Quelques itérations suffisent pour que la droite se stabilise.

LE CAS MÉTIER

retail · contrôle de gestion / réseau de magasins
EN ENTRÉE

Une base avec des erreurs de saisie

Le CA de 400 magasins avec surface, pub, concurrents et zone. Pour la démonstration, 20 CA ont été saisis avec un zéro de trop. C'est le cas typique d'une remontée manuelle depuis les régions.

EN SORTIE

Des coefficients qui ne bougent pas

Sur le jeu d'exemple, l'effet d'un concurrent passe de -15 k€ sur les données propres à -82 k€ avec la régression classique polluée. La régression de Huber, sur les mêmes données polluées, donne -16 k€.

CE QU'ON MESURE

La stabilité des coefficients

On compare les coefficients obtenus avec et sans les lignes suspectes. Les poids finaux de la régression robuste servent aussi de détecteur : les lignes fortement dévaluées sont celles à vérifier en priorité.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Données remontées à la main, avec des erreurs de saisie ou d'unité probables
  • Quelques valeurs extrêmes réelles qui ne doivent pas dicter le modèle
  • Besoin de coefficients lisibles, comme en régression linéaire
  • Repérer les lignes suspectes grâce aux poids du modèle

NON

  • Beaucoup d'aberrations, plus de 10 à 20 % des lignes : essayer une régression MM ou LTS, plus résistante
  • Extrêmes sur les variables explicatives, pas sur la cible : Huber les gère mal
  • Relations non linéaires : un modèle à base d'arbres
  • Besoin d'une fourchette plutôt que d'une moyenne : la régression quantile
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (MASS::rlm) et Python (scikit-learn).

k / epsilon

Le seuil de bascule, en multiples de l'échelle des écarts. 1,345 en R et 1,35 en Python : une valeur standard, efficace à 95 % si les données sont propres. Plus petit, plus robuste, moins précis.

method = "MM" (R)

rlm propose aussi l'estimation MM, qui résiste à une plus forte proportion d'aberrations. Utile quand beaucoup de lignes sont douteuses.

alpha (Python)

HuberRegressor ajoute une légère pénalité Ridge (alpha = 0,0001). Mettre les variables à l'échelle avant l'ajustement aide la convergence.

LE CODE MINIMAL

jeu d'exemple : magasins.csv ↓
# CA magasins avec erreurs de saisie : régression robuste (Huber) en R
library(MASS)

magasins <- read.csv("magasins.csv")
magasins$zone <- factor(magasins$zone)   # référence : centre_ville
# Démonstration : 20 CA saisis avec un zéro de trop (x 10)
set.seed(42)
erreurs <- sample(nrow(magasins), 20)
magasins$ca_saisi <- magasins$ca_k
magasins$ca_saisi[erreurs] <- magasins$ca_saisi[erreurs] * 10

propre <- lm(ca_k ~ surface_m2 + budget_pub_k + nb_concurrents + zone, data = magasins)
mco <- lm(ca_saisi ~ surface_m2 + budget_pub_k + nb_concurrents + zone, data = magasins)
huber <- rlm(ca_saisi ~ surface_m2 + budget_pub_k + nb_concurrents + zone, data = magasins,
             psi = psi.huber, k = 1.345, maxit = 100)

print(round(cbind(sans_erreur = coef(propre), mco_avec_erreurs = coef(mco),
                  huber_avec_erreurs = coef(huber))[-1, ], 2))
# Poids finaux : les lignes suspectes sont fortement dévaluées
cat("Poids moyen des 20 erreurs :", round(mean(huber$w[erreurs]), 3), "\n")
cat("Poids moyen des autres     :", round(mean(huber$w[-erreurs]), 3), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre régression robuste et suppression des valeurs aberrantes ?

Supprimer demande de fixer un seuil à la main, et on risque d'écarter des cas réels. La régression robuste garde toutes les lignes mais réduit automatiquement le poids des plus grands écarts. On peut ensuite examiner les lignes dévaluées.

Que fait la fonction de perte de Huber ?

Elle compte les petits écarts au carré, comme les moindres carrés, et les grands écarts en valeur absolue. Au-delà du seuil, l'influence d'un point cesse de croître avec son écart. C'est ce qui empêche une valeur aberrante de tirer le modèle.

La régression de Huber est-elle robuste à tout ?

Non. Elle protège contre les valeurs extrêmes de la cible. Un point extrême sur une variable explicative, dit point levier, peut encore influencer fortement le résultat. Pour ces cas, on utilise des estimateurs MM ou LTS.

LES ALGOS VOISINS

à comparer avant de choisir
la version sensible

Régression linéaire

Même équation, mais une seule ligne aberrante peut déplacer tous les coefficients.

Voir la fiche →
l'autre résistance

Régression quantile

La régression médiane résiste aussi aux extrêmes de la cible et donne des fourchettes.

Voir la fiche →
détecter avant de modéliser

Score z et IQR

Les règles de base pour repérer les valeurs extrêmes avant tout modèle.

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 →