Accueil / Factory / Algos ML / Clustering spectral — factory / algos ML / apprentissage non supervisé

CLUSTERING SPECTRAL.

Une méthode qui transforme les données en graphe : chaque point est relié à ceux qui lui ressemblent. Elle cherche ensuite comment couper ce graphe en groupes reliés entre eux, mais peu reliés au reste. Elle retrouve des groupes de formes allongées ou enroulées que K-means, qui raisonne en distance au centre, découpe mal.

ClusteringGraphe de similaritéFormes non convexesNon superviséNiveau : avancé

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceExcellent sur les formes non convexes, si le graphe est bien construit
InterprétabilitéLes groupes se lisent, le passage par le graphe beaucoup moins
VitesseMatrice de similarité et vecteurs propres : lourd au-delà de 10 000
Facilité de réglageNombre de groupes et construction du graphe à choisir
Tolérance aux données brutesStandardisation et choix de la similarité déterminants
EN 30 SECONDES

Un réseau social : on ne regarde pas où habitent les gens, mais qui est ami avec qui. Les communautés sont des cercles très connectés entre eux, peu connectés au reste.

1. On construit le graphe des ressemblances

Chaque point est relié à ses plus proches voisins, ou à tous avec un poids qui décroît avec la distance. Deux points proches dans une même chaîne restent connectés, même si la chaîne est enroulée.

2. On calcule une nouvelle représentation

À partir du graphe, on calcule les vecteurs propres d'une matrice appelée laplacien. Dans ce nouvel espace, les points bien connectés entre eux se retrouvent regroupés.

3. On découpe dans ce nouvel espace

Un K-means, ou une autre méthode simple, découpe les points dans cette représentation. Les groupes obtenus sont renvoyés aux données d'origine.

LE CAS MÉTIER

tri de documents · banque / assurance / logistique
EN ENTRÉE

1 797 chiffres manuscrits sans étiquette

Chaque image est décrite par ses 64 pixels (8 × 8). On veut regrouper les images semblables avant tout étiquetage, pour trier des documents numérisés ou préparer une vérification humaine.

EN SORTIE

10 groupes d'images qui se ressemblent

Relié par un graphe des 10 plus proches voisins, le clustering spectral retrouve mieux les chiffres que K-means sur les mêmes pixels. Certains groupes sont presque purs (0, 4, 6) ; d'autres mélangent des chiffres proches, comme le 3 et le 9.

CE QU'ON MESURE

L'accord avec les vrais chiffres (ARI)

Les vraies étiquettes servent seulement au contrôle. L'indice de Rand ajusté vaut 0,753 pour le spectral et 0,667 pour K-means (1 = accord parfait, 0 = hasard). En production, sans étiquettes, on contrôle la pureté sur un petit échantillon vérifié à la main.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Groupes de formes allongées, enroulées ou imbriquées
  • Données où la notion de voisinage compte plus que la distance au centre
  • Données déjà sous forme de graphe ou de matrice de similarité : réseau de clients, co-achats
  • Quelques centaines à quelques milliers de points

NON

  • Plus de quelques dizaines de milliers de points : trop lourd, préférer HDBSCAN ou K-means
  • Nombre de groupes inconnu : il faut le fournir, sinon HDBSCAN
  • Segments ronds et bien séparés : K-means fait aussi bien, plus vite
  • Bruit important : aucun point n'est mis de côté, DBSCAN le fait
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (kernlab::specc) et Python (scikit-learn).

centers / n_clusters

Le nombre de groupes, à fournir. L'écart entre valeurs propres successives (eigengap) donne une indication, à confirmer par le sens métier.

kernel, kpar / affinity, n_neighbors

La construction du graphe, réglage décisif. En Python, affinity="nearest_neighbors" relie chaque point à ses n_neighbors voisins ; le noyau gaussien (défaut) dépend de gamma. En R, kpar="local" adapte la largeur du noyau à chaque point.

assign_labels (Python)

La méthode de découpage dans le nouvel espace : "kmeans" (défaut), "discretize" ou "cluster_qr", plus déterministe et sans départ aléatoire.

LE CODE MINIMAL

jeu d'exemple : chiffres_manuscrits.csv ↓
# Regrouper des chiffres manuscrits sans étiquette : clustering spectral en R
library(kernlab)

chiffres <- read.csv("chiffres_manuscrits.csv")
X <- as.matrix(chiffres[, 1:64])   # la vraie étiquette ne sert qu'au contrôle final

# Noyau gaussien à échelle locale : chaque image adapte la largeur à son voisinage
set.seed(42)
modele <- specc(X, centers = 10, kpar = "local")
groupes <- modele@.Data

# Comparaison avec K-means sur les mêmes pixels
km <- kmeans(X, centers = 10, nstart = 10)
purete <- function(g) sum(apply(table(g, chiffres$chiffre), 1, max)) / nrow(X)
cat("Pureté spectral :", round(purete(groupes), 3), "\n")
cat("Pureté K-means  :", round(purete(km$cluster), 3), "\n")

# Chiffres présents dans chaque groupe
print(table(groupe = groupes, chiffre = chiffres$chiffre))

QUESTIONS FRÉQUENTES

Quand utiliser le clustering spectral plutôt que K-means ?

Quand les groupes ne sont pas des boules : chaînes, anneaux, formes imbriquées, ou données où seule la proximité locale a un sens. K-means découpe l'espace en zones autour de centres et coupe ces formes en morceaux. Le spectral suit les connexions de proche en proche.

Pourquoi le clustering spectral est-il lent ?

Il calcule une matrice de similarité entre tous les points, puis des vecteurs propres de cette matrice. Le coût grimpe vite avec le nombre de points. Un graphe des plus proches voisins, creux, aide beaucoup ; au-delà de quelques dizaines de milliers de points, d'autres méthodes sont préférables.

Que veut dire « spectral » ?

Le spectre d'une matrice est l'ensemble de ses valeurs propres. La méthode utilise les vecteurs propres du laplacien du graphe de similarité pour représenter les points, d'où son nom.

LES ALGOS VOISINS

à comparer avant de choisir
l'étape finale

K-means

Utilisé dans le nouvel espace du spectral. Seul, sur les données brutes, il suppose des groupes ronds.

Voir la fiche →
formes libres, avec bruit

DBSCAN

Trouve aussi des groupes de formes libres, sans fixer leur nombre, et isole les points isolés.

Voir la fiche →
même idée de graphe

UMAP

Construit aussi un graphe de voisins, pour projeter les données en 2D. Souvent combiné à un clustering par densité.

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 →