Accueil / Factory / Algos ML / Régression PLS — factory / algos ML / apprentissage supervisé · réduction de dimension

RÉGRESSION PLS.

Une régression qui commence par résumer des centaines de variables corrélées en quelques composantes, choisies pour prédire la cible. On régresse ensuite sur ces composantes. C'est la méthode de référence quand on a plus de variables que de lignes, comme un spectre de 300 longueurs d'onde mesuré sur 60 échantillons.

RégressionChimiométrieVariables corréléesPlus de variables que de lignesNiveau : avancé

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceExcellente sur des mesures très corrélées, comme des spectres
InterprétabilitéCoefficients par variable lisibles, composantes plus abstraites
VitesseQuelques composantes à calculer, très rapide
Facilité de réglageUn réglage principal : le nombre de composantes
Tolérance aux données brutesTolère la redondance, pas les manquants ni les extrêmes
EN 30 SECONDES

Un jury de 300 dégustateurs qui disent presque tous la même chose. Plutôt que d'écouter chacun, on résume leurs avis en trois tendances, en gardant celles qui prédisent le mieux la note finale.

1. On cherche la direction qui prédit le mieux

La première composante est une combinaison des 300 variables, choisie pour être la plus liée à la cible. C'est la différence avec l'ACP, qui ignore la cible.

2. On retire ce qui est expliqué et on recommence

La deuxième composante cherche ce que la première n'a pas capté, et ainsi de suite. Chaque composante est décorrélée des précédentes.

3. On choisit le nombre de composantes

Trop peu, le modèle rate de l'information ; trop, il apprend le bruit. On garde le nombre qui minimise l'erreur en validation croisée.

LE CAS MÉTIER

chimiométrie · agroalimentaire / pharmacie / chimie
EN ENTRÉE

Un spectre par lot

Pour chaque lot de farine, un spectre proche infrarouge : l'absorbance sur 300 longueurs d'onde. Le taux de protéines, mesuré au laboratoire, est connu sur 60 lots. Une régression classique est impossible : 300 variables pour 60 lignes.

EN SORTIE

Un taux de protéines en quelques secondes

Le modèle prédit le taux à partir du seul spectre, sans analyse chimique. Sur la simulation, il repère seul la bande d'absorption des protéines et ignore celle de l'eau, qui brouille pourtant le spectre.

CE QU'ON MESURE

L'erreur en validation croisée, par composante

Sur la simulation, l'erreur moyenne tombe de 0,9 point de % avec une composante à 0,23 avec trois, puis remonte légèrement. On retient trois composantes : au-delà, le modèle commence à apprendre le bruit.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Plus de variables que de lignes : spectres, capteurs, signaux, profils
  • Variables très corrélées entre elles, que la régression classique ne sait pas traiter
  • Contrôle qualité rapide par mesure indirecte, en remplacement d'une analyse de laboratoire
  • Plusieurs cibles à prédire en même temps à partir des mêmes mesures

NON

  • Peu de variables peu corrélées : une régression linéaire suffit et se lit mieux
  • Relations fortement non linéaires : essayer un modèle à base d'arbres ou un réseau de neurones
  • Besoin de désigner quelques variables clés : préférer le Lasso ou Elastic Net
  • Données tabulaires classiques de gestion : un gradient boosting est en général plus précis
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (pls) et Python (scikit-learn).

ncomp / n_components

Le nombre de composantes. Le réglage essentiel, toujours choisi par validation croisée. En R, selectNcomp() propose le plus petit nombre dont l'erreur reste proche du minimum.

scale / scale

Mise à l'échelle des variables. Pour des spectres, on centre sans réduire, pour garder la forme des bandes : c'est le défaut en R, scale=False en Python. Pour des variables d'unités différentes, on réduit.

Prétraitements

En chimiométrie, on corrige souvent les spectres avant la PLS : dérivée, correction de ligne de base, correction de diffusion (SNV, MSC). Ils pèsent souvent plus que le modèle lui-même.

LE CODE MINIMAL

données simulées dans le code
# Taux de protéines par spectre proche infrarouge : régression PLS en R
library(pls)

# Simulation : 60 lots de farine, spectre mesuré sur 300 longueurs d'onde
set.seed(42)
onde <- seq(0, 1, length.out = 300)
bande <- function(centre) exp(-((onde - centre) / 0.05)^2)
proteines <- runif(60, 9, 15)   # taux à prédire (%)
eau <- runif(60, 10, 16)        # composant parasite
spectres <- outer(proteines, bande(0.3)) + outer(eau, bande(0.6)) +
  outer(rnorm(60, 0, 3), onde) + matrix(rnorm(60 * 300, 0, 1), 60, 300)
donnees <- data.frame(proteines = proteines, spectre = I(spectres))
cat("Lignes :", nrow(spectres), "| variables :", ncol(spectres), "\n")

# Choix du nombre de composantes par validation croisée (10 blocs)
modele <- plsr(proteines ~ spectre, ncomp = 6, data = donnees, validation = "CV", segments = 10)
print(RMSEP(modele))
k <- selectNcomp(modele, method = "onesigma")
cat("Composantes retenues :", k, "\n")

# Où le modèle regarde : longueur d'onde au plus fort coefficient
coefs <- coef(modele, ncomp = max(k, 1))[, 1, 1]
cat("Longueur d'onde la plus utile (0 à 1) :", round(onde[which.max(abs(coefs))], 2), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre régression PLS et régression sur composantes principales ?

Les deux résument les variables en composantes avant de régresser. L'ACP choisit les composantes qui résument le mieux les variables, sans regarder la cible. La PLS choisit celles qui prédisent le mieux la cible, ce qui demande souvent moins de composantes.

Que signifie PLS ?

Partial Least Squares, en français moindres carrés partiels. On parle aussi de projection sur structures latentes. Proposée à l'origine en économétrie, la méthode s'est imposée en chimiométrie, où les spectres ont bien plus de variables que d'échantillons.

Combien de composantes garder en régression PLS ?

On trace l'erreur de validation croisée selon le nombre de composantes, puis on garde le plus petit nombre proche du minimum. Au-delà, le modèle apprend le bruit des données d'entraînement et prévoit moins bien.

LES ALGOS VOISINS

à comparer avant de choisir
la réduction sans cible

ACP

Résume aussi les variables en composantes, mais sans regarder la cible. Suivie d'une régression, elle donne la PCR.

Voir la fiche →
l'autre réponse aux corrélations

Ridge

Garde toutes les variables avec des poids freinés. Souvent proche de la PLS en précision.

Voir la fiche →
pour sélectionner

Elastic Net

Met à zéro une partie des variables et garde ensemble celles qui sont corrélées.

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 →