Accueil / Factory / Algos ML / SVD — factory / algos ML / réduction de dimension

DÉCOMPOSITION SVD.

La décomposition en valeurs singulières découpe n'importe quel tableau de chiffres en couches classées par importance. En ne gardant que les plus lourdes, on compresse, on débruite ou on prédit les cases vides d'une matrice clients x produits. L'ACP, l'AFC et l'analyse sémantique de textes reposent sur ce calcul.

Réduction de dimensionRecommandationCompressionAlgèbre linéaireNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBonne base de recommandation, dépassée par les méthodes dédiées
InterprétabilitéAxes lisibles via leurs clients et produits extrêmes
VitesseTrès rapide en version tronquée, même sur matrices creuses
Facilité de réglageUn choix principal : le nombre d'axes k
Tolérance aux données brutesCases vides à remplir, sensible à l'échelle et aux extrêmes
EN 30 SECONDES

Un morceau de musique décomposé en pistes : on garde la voix, la basse et la batterie, qui font l'essentiel du morceau, et on jette les pistes de souffle.

1. On écrit le tableau comme une somme de couches

Toute matrice s'écrit U x D x V transposée. Chaque couche associe un profil de lignes (des clients), un profil de colonnes (des produits) et un poids, la valeur singulière.

2. On classe les couches par importance

Les valeurs singulières sont rangées de la plus grande à la plus petite. Les premières portent la structure du tableau, les dernières surtout du bruit.

3. On tronque et on reconstruit

En ne gardant que les k premières couches, on obtient la meilleure approximation du tableau à k axes, au sens des moindres carrés. Les cases vides reçoivent une valeur : c'est la prédiction.

LE CAS MÉTIER

recommandation · e-commerce / distribution
EN ENTRÉE

Une matrice clients x produits à trous

600 clients ont chacun noté entre 8 et 29 produits sur 120, de 1 à 5. La matrice est donc vide à plus de 80 %. On cache 10 % des notes pour évaluer les recommandations.

EN SORTIE

3 axes de goût, une note prédite

Sur le jeu d'exemple, trois valeurs singulières se détachent (16,1 ; 15,4 ; 14,7) avant un palier vers 12. On garde 3 axes de goût. La reconstruction donne une note prédite pour chaque case vide, et on recommande à chaque client les produits les mieux prédits.

CE QU'ON MESURE

La note réelle des produits recommandés

On classe les notes cachées selon la prédiction. Dans le quart le mieux prédit, 58 % des notes réelles valent 4 ou 5, contre 27 % sur l'ensemble. La note moyenne y est de 3,6, contre 2,6 dans le quart le moins bien prédit.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Première recommandation à partir d'une matrice clients x produits
  • Compresser un grand tableau numérique en gardant l'essentiel (images, capteurs)
  • Texte : SVD de la matrice TF-IDF, dite analyse sémantique latente (LSA)
  • Débruiter des données avant de les passer à un autre modèle

NON

  • Millions de clients et matrice très creuse : une factorisation dédiée (ALS) apprend sur les seules notes observées
  • Besoin d'axes lisibles comme des thèmes : la NMF, à valeurs positives, se lit mieux
  • Structures non linéaires : autoencodeur ou UMAP
  • Variables qualitatives brutes : passer par une AFC ou une ACM
LES 3 CHOIX QUI COMPTENT

Noms donnés pour R (svd, package base) et Python (numpy, ou TruncatedSVD de scikit-learn pour les matrices creuses).

k, nombre d'axes

On regarde où les valeurs singulières décrochent, puis on valide sur des notes cachées. Trop d'axes réintroduisent le bruit : sur l'exemple, 3 axes prédisent mieux les notes cachées que 10.

Centrage et cases vides

Remplir les trous par 0 sur des notes brutes revient à dire « note nulle ». On centre d'abord sur la moyenne de chaque client, pour que 0 signifie « dans sa moyenne ». Des versions itératives affinent ensuite ce remplissage.

SVD complète ou tronquée

svd() et np.linalg.svd calculent toutes les couches. Sur une grande matrice creuse, on ne calcule que les k premières : irlba en R, TruncatedSVD ou scipy.sparse.linalg.svds en Python.

LE CODE MINIMAL

jeu d'exemple : notes_produits.csv ↓
# Recommandation produits : SVD en R
notes <- read.csv("notes_produits.csv")
set.seed(42)
test_idx <- sample(nrow(notes), round(0.1 * nrow(notes)))   # notes cachées pour l'évaluation
train <- notes[-test_idx, ]
test <- notes[test_idx, ]

# Matrice clients x produits, centrée sur la moyenne de chaque client
produits <- sort(unique(notes$id_produit))
M <- matrix(NA, nrow = max(notes$id_client), ncol = length(produits))
M[cbind(train$id_client, match(train$id_produit, produits))] <- train$note
C <- M - rowMeans(M, na.rm = TRUE)
C[is.na(C)] <- 0   # case vide = note moyenne du client

d <- svd(C)
print(round(d$d[1:6], 1))   # valeurs singulières

# On garde 3 axes de goût et on reconstruit toutes les cases
k <- 3
P <- d$u[, 1:k] %*% diag(d$d[1:k]) %*% t(d$v[, 1:k])
pred <- P[cbind(test$id_client, match(test$id_produit, produits))]

# Notes réelles selon le quart de recommandation (4 = produits les plus recommandés)
quart <- cut(pred, quantile(pred, 0:4 / 4), labels = 1:4, include.lowest = TRUE)
print(round(tapply(test$note, quart, mean), 2))

QUESTIONS FRÉQUENTES

À quoi sert la SVD en data science ?

À résumer un tableau de chiffres en quelques axes. Elle sert au calcul de l'ACP, à la compression, au débruitage, à l'analyse sémantique de textes (LSA) et aux premiers systèmes de recommandation, popularisés par le concours Netflix Prize à la fin des années 2000.

Quelle différence entre SVD et ACP ?

L'ACP est une SVD appliquée au tableau centré, et souvent réduit. La SVD est l'outil de calcul, plus général : elle s'applique aussi à des tableaux non centrés, creux ou rectangulaires, comme une matrice clients x produits.

Comment choisir le nombre de valeurs singulières à garder ?

On cherche le décrochage dans la courbe des valeurs singulières, puis on valide sur des données mises de côté. En recommandation, on retient le k qui donne les meilleures recommandations sur des notes cachées, pas celui qui reconstruit le mieux le tableau d'entraînement.

LES ALGOS VOISINS

à comparer avant de choisir
un cas particulier

ACP

L'ACP est une SVD du tableau centré, et souvent réduit. Même calcul, lecture orientée variables.

Voir la fiche →
le standard en recommandation

Factorisation de matrice (ALS)

N'apprend que sur les notes observées, sans remplir les trous. Plus précise sur les grandes bases très creuses.

Voir la fiche →
la version positive

NMF

Impose des valeurs positives : les axes deviennent des parties additives, lisibles comme des thèmes.

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 →