Polydesk-logotype
Polydesk.ai — Header

Clustering (Regroupement)

Le clustering est une technique d’apprentissage non supervisé qui consiste à regrouper des données non étiquetées en sous-groupes homogènes (clusters), de sorte que les points d’un même cluster soient plus similaires entre eux qu’avec ceux des autres clusters.

Contrairement à la classification supervisée où les catégories sont connues à l’avance, le clustering découvre la structure cachée des données sans aucun label. L’algorithme ne sait pas combien de groupes existent ni ce qu’ils représentent : il identifie les regroupements naturels en se basant uniquement sur la similarité entre les observations.

Le clustering est utilisé massivement en segmentation client, détection d’anomalies, compression de données, analyse exploratoire, bioinformatique, traitement d’images et bien d’autres domaines.

Fiche rapide : Clustering
Type
Apprentissage non supervisé
Entrée
Données non étiquetées (pas de labels)
Sortie
Affectation de chaque point à un cluster (ID de groupe)
Algorithmes principaux
K-Means, DBSCAN, hiérarchique, Gaussian Mixture
Métriques internes
Silhouette Score, inertie, Davies-Bouldin
Calcul Python
sklearn.cluster (KMeans, DBSCAN, AgglomerativeClustering)

Le principe du clustering

L’idée fondamentale est simple : mesurer la « distance » ou la « similarité » entre les observations dans un espace multidimensionnel, puis regrouper les observations les plus proches. La définition de « proche » dépend de la métrique de distance choisie :

Distance euclidienne : la plus courante. Mesure la distance « en ligne droite » entre deux points. Sensible à l’échelle des variables, d’où la nécessité de normaliser les données.

Distance de Manhattan : somme des différences absolues sur chaque dimension. Plus robuste aux outliers que l’euclidienne.

Distance cosinus : mesure l’angle entre deux vecteurs, indépendamment de leur magnitude. Très utilisée pour les données textuelles et les embeddings.

Distance de Mahalanobis : prend en compte les corrélations entre variables. Utile quand les clusters ont des formes ellipsoïdales.

Normalisez vos données avant le clustering Si vos features ont des échelles différentes (par exemple, âge en dizaines et revenu en milliers), les variables à grande échelle domineront le calcul de distance. Standardisez toujours vos données (moyenne 0, écart-type 1) avant d’appliquer un algorithme de clustering basé sur la distance.

Les grandes familles d’algorithmes de clustering

Clustering par partitionnement

K-Means : l’algorithme le plus utilisé. Divise les données en K clusters en assignant chaque point au centroïde le plus proche, puis recalcule les centroïdes itérativement jusqu’à convergence. Rapide (complexité O(n·K·t)), simple à implémenter, mais nécessite de fixer K à l’avance et ne fonctionne bien que sur des clusters sphériques de tailles similaires.

K-Medoids (PAM) : variante de K-Means qui utilise des points réels (medoids) comme centres de clusters au lieu de moyennes. Plus robuste aux outliers, mais plus lent.

Mini-Batch K-Means : version de K-Means qui utilise des sous-échantillons aléatoires à chaque itération. Beaucoup plus rapide sur les grands datasets, avec une légère perte de qualité.

Clustering par densité

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) : identifie les clusters comme des zones de haute densité séparées par des zones de faible densité. Avantages majeurs : pas besoin de fixer le nombre de clusters, détecte des clusters de forme arbitraire, et identifie automatiquement les outliers (points dans les zones de faible densité). Nécessite deux paramètres : epsilon (rayon de voisinage) et min_samples (nombre minimum de points pour former un cluster).

HDBSCAN : version hiérarchique de DBSCAN qui s’adapte automatiquement aux variations de densité. Un seul paramètre principal (min_cluster_size). Souvent considéré comme le meilleur choix par défaut pour le clustering exploratoire.

OPTICS : similaire à DBSCAN mais produit un ordonnancement des points qui peut être coupé à différents niveaux de densité. Plus flexible que DBSCAN mais plus complexe à interpréter.

Clustering hiérarchique

Construit une hiérarchie de clusters, visualisable sous forme de dendrogramme. Deux approches :

Agglomératif (bottom-up) : chaque point commence dans son propre cluster, puis les clusters les plus proches sont fusionnés itérativement. C’est l’approche la plus courante.

Divisif (top-down) : tous les points commencent dans un seul cluster, qui est divisé itérativement. Moins courant car plus coûteux en calcul.

La méthode de liaison (linkage) détermine comment mesurer la distance entre clusters : single (minimum), complete (maximum), average (moyenne), Ward (minimisation de la variance intra-cluster). Ward est généralement le meilleur choix par défaut.

Clustering probabiliste

Gaussian Mixture Models (GMM) : modélise les données comme un mélange de distributions gaussiennes. Chaque point a une probabilité d’appartenance à chaque cluster (soft clustering), contrairement au K-Means qui fait une assignation dure. Plus flexible que K-Means car il permet des clusters ellipsoïdaux de tailles différentes.

Comparaison des algorithmes

Algorithme Nombre de clusters Forme des clusters Scalabilité Détecte les outliers Quand l’utiliser
K-Means Fixé (K) Sphériques Excellent Non Grand dataset, clusters bien séparés
DBSCAN Automatique Arbitraire Bon Oui Clusters de forme irrégulière, données bruitées
HDBSCAN Automatique Arbitraire Bon Oui Densité variable, clustering exploratoire
Hiérarchique (Ward) À couper Convexes Limité (O(n²)) Non Petit dataset, besoin d’un dendrogramme
GMM Fixé (K) Ellipsoïdales Moyen Oui (probabilité) Soft clustering, clusters de tailles différentes

Clustering en Python avec scikit-learn

K-Means

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import numpy as np

# Normaliser les données
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# K-Means avec 4 clusters
kmeans = KMeans(n_clusters=4, n_init=10, random_state=42)
labels = kmeans.fit_predict(X_scaled)

# Centroïdes et inertie
print(f"Inertie : {kmeans.inertia_:.2f}")
print(f"Centroïdes :n{kmeans.cluster_centers_}")

DBSCAN

from sklearn.cluster import DBSCAN

# DBSCAN : pas besoin de fixer K
dbscan = DBSCAN(eps=0.5, min_samples=5)
labels = dbscan.fit_predict(X_scaled)

n_clusters = len(set(labels)) - (1 if -1 in labels else 0)
n_noise = list(labels).count(-1)
print(f"Clusters trouvés : {n_clusters}")
print(f"Points de bruit : {n_noise}")

Clustering hiérarchique avec dendrogramme

from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import dendrogram, linkage
import matplotlib.pyplot as plt

# Calcul du linkage pour le dendrogramme
Z = linkage(X_scaled, method='ward')

# Tracé du dendrogramme
plt.figure(figsize=(12, 6))
dendrogram(Z, truncate_mode='lastp', p=30)
plt.title('Dendrogramme (Ward)')
plt.xlabel('Échantillons')
plt.ylabel('Distance')
plt.tight_layout()
plt.show()

# Clustering agglomératif
agg = AgglomerativeClustering(n_clusters=4, linkage='ward')
labels = agg.fit_predict(X_scaled)

Comment choisir le nombre de clusters

Le choix de K est l’un des défis majeurs du clustering. Plusieurs méthodes existent :

Méthode du coude (Elbow)

Tracez l’inertie (somme des distances intra-cluster) en fonction de K. Le « coude » de la courbe (point d’inflexion où l’ajout d’un cluster n’apporte plus d’amélioration significative) suggère le K optimal.

inertias = []
K_range = range(2, 11)
for k in K_range:
    km = KMeans(n_clusters=k, n_init=10, random_state=42)
    km.fit(X_scaled)
    inertias.append(km.inertia_)

plt.plot(K_range, inertias, 'bo-')
plt.xlabel('Nombre de clusters (K)')
plt.ylabel('Inertie')
plt.title('Méthode du coude')
plt.show()

Score de silhouette

Le score de silhouette mesure la qualité de chaque assignation. Pour chaque point, il compare la distance moyenne aux points du même cluster (cohésion) avec la distance moyenne aux points du cluster le plus proche (séparation). Le score varie de -1 (mauvaise assignation) à +1 (assignation parfaite). Le K qui maximise le score de silhouette moyen est le meilleur candidat.

from sklearn.metrics import silhouette_score

for k in range(2, 11):
    km = KMeans(n_clusters=k, n_init=10, random_state=42)
    labels = km.fit_predict(X_scaled)
    score = silhouette_score(X_scaled, labels)
    print(f"K={k} : Silhouette = {score:.4f}")

BIC / AIC pour les GMM

Pour les modèles de mélange gaussien, les critères d’information de Bayes (BIC) et d’Akaike (AIC) pénalisent la complexité du modèle. Le K qui minimise le BIC est le choix optimal.

Conseil pratique Aucune méthode automatique ne remplace le jugement métier. Utilisez la méthode du coude et le silhouette score pour vous guider, mais vérifiez toujours que les clusters ont un sens dans votre contexte. Un clustering statistiquement « optimal » qui ne correspond à aucune réalité métier est inutile.

Évaluer la qualité du clustering

L’évaluation est plus complexe qu’en apprentissage supervisé car il n’y a pas de « bonne réponse » connue. Deux familles de métriques existent :

Métriques internes (sans labels de référence)

Métrique Plage Optimum Mesure quoi
Silhouette Score -1 à +1 Max (proche de 1) Cohésion vs séparation des clusters
Inertie (SSW) 0 à ∞ Min Variance intra-cluster (K-Means)
Davies-Bouldin Index 0 à ∞ Min (proche de 0) Ratio de dispersion intra/inter-cluster
Calinski-Harabasz 0 à ∞ Max Ratio de variance inter/intra-cluster

Métriques externes (si des labels existent)

Quand vous disposez de labels de référence (pour valider votre approche), vous pouvez mesurer la correspondance entre les clusters et les classes réelles avec l’Adjusted Rand Index (ARI), le Normalized Mutual Information (NMI) ou le V-Measure. L’ARI varie de -1 à +1, avec 0 correspondant à une assignation aléatoire et 1 à une correspondance parfaite.

Applications concrètes du clustering

Segmentation client

L’application la plus classique. On regroupe les clients selon leur comportement d’achat, leurs données démographiques et leurs interactions. Chaque cluster représente un segment avec des besoins distincts, permettant de personnaliser le marketing, les offres et la communication. Les modèles RFM (Récence, Fréquence, Montant) combinés au K-Means sont un standard de l’industrie.

Détection d’anomalies

Les points qui n’appartiennent à aucun cluster dense (outliers de DBSCAN) ou qui sont très éloignés de leur centroïde (K-Means) sont des candidats pour la détection d’anomalies : transactions frauduleuses, intrusions réseau, défauts de fabrication.

Compression de données et prétraitement

Remplacer les features originales d’une observation par son ID de cluster réduit drastiquement la dimensionnalité. Cette technique est utilisée en compression d’images (quantification de couleurs par K-Means) et comme prétraitement avant des modèles supervisés.

NLP et analyse de texte

Clustering de documents par sujet, regroupement de requêtes de recherche similaires, organisation automatique de tickets de support. Les embeddings de phrases ou de documents sont clustérisés pour identifier les thèmes émergents.

Bioinformatique

Clustering de gènes par profil d’expression, regroupement de séquences protéiques, identification de sous-types de cancer à partir de données omiques. C’est l’un des domaines historiques du clustering hiérarchique.

Pièges courants du clustering

Piège n°1 : ne pas normaliser les données

Si une variable est en milliers et une autre en dizaines, la variable à grande échelle domine le calcul de distance. Résultat : les clusters reflètent surtout cette variable, ignorant les autres. Standardisez toujours avant le clustering (sauf si l’échelle a une signification métier que vous voulez préserver).

Piège n°2 : choisir K arbitrairement

Fixer K = 3 « parce que ça semble raisonnable » sans validation est une erreur fréquente. Utilisez la méthode du coude, le silhouette score, et surtout la connaissance métier pour valider le choix.

Piège n°3 : utiliser K-Means sur des clusters non sphériques

K-Means suppose des clusters convexes de tailles similaires. Sur des données avec des clusters en forme de croissant, de spirale ou de densité variable, il échouera. Utilisez DBSCAN ou HDBSCAN pour des formes arbitraires.

Piège n°4 : le fléau de la dimensionnalité

En haute dimension (des centaines de features), les distances deviennent moins discriminantes : tous les points semblent « également éloignés ». Appliquez une réduction de dimensionnalité (PCA, UMAP) avant le clustering pour améliorer les résultats.

Piège n°5 : confondre clusters et vérité

Le clustering trouve toujours des groupes, même dans des données aléatoires. Un K-Means avec K = 5 produira toujours 5 clusters, même si la structure réelle est continue sans groupes distincts. Validez toujours avec des métriques (silhouette > 0,5 est un bon signe) et un sens métier.

Clustering vs classification

La confusion est fréquente mais la distinction est nette :

La classification est supervisée : les catégories sont connues à l’avance, le modèle apprend à les reproduire. Le clustering est non supervisé : les groupes sont découverts par l’algorithme, sans aucune catégorie prédéfinie.

En pratique, les deux sont souvent complémentaires. Le clustering peut servir de première étape pour découvrir des segments, qui sont ensuite utilisés comme labels pour entraîner un classifieur supervisé (semi-supervised learning). Inversement, un classifieur peut être utilisé pour affecter de nouvelles observations aux clusters découverts.

Verdict

Le clustering est l’outil fondamental de l’exploration de données non étiquetées. Pour un premier essai, commencez par K-Means (rapide, simple) et DBSCAN (pas besoin de fixer K, détecte les outliers). Si vous avez le temps, testez HDBSCAN, qui est souvent le meilleur compromis flexibilité/performance.

Le piège principal n’est pas algorithmique mais interprétatif : les clusters doivent avoir un sens métier. Un clustering statistiquement parfait (silhouette élevée) qui ne correspond à aucune réalité du domaine est un exercice mathématique inutile. Commencez par la question métier (« quels segments de clients existent ? »), puis utilisez le clustering comme outil de découverte.


Questions fréquentes sur le clustering

Quelle est la différence entre clustering et classification ?

La classification est une tâche supervisée : les catégories sont définies à l’avance et le modèle apprend à les prédire à partir d’exemples étiquetés. Le clustering est non supervisé : il découvre des groupes dans des données sans aucun label. En classification, vous dites au modèle « voici des chats et des chiens, apprends à les distinguer ». En clustering, vous dites « voici des données, trouve les groupes naturels ». Les algorithmes, les métriques et les cas d’usage sont fondamentalement différents.

Comment choisir entre K-Means et DBSCAN ?

Utilisez K-Means quand vous avez une idée du nombre de clusters, que vos clusters sont approximativement sphériques et de tailles similaires, et que vous avez un grand dataset (K-Means est très rapide). Utilisez DBSCAN quand vous ne connaissez pas le nombre de clusters, que vos données contiennent du bruit/des outliers, ou que les clusters ont des formes irrégulières. DBSCAN est aussi meilleur quand les densités sont homogènes. Si les densités varient, essayez HDBSCAN.

Comment savoir si le clustering est bon sans labels ?

Utilisez les métriques internes : le silhouette score (> 0,5 = bon, > 0,7 = excellent), le Davies-Bouldin Index (plus bas = mieux) et l’inspection visuelle (en projetant les données en 2D avec UMAP ou t-SNE). Mais la meilleure validation reste le sens métier : les clusters correspondent-ils à des segments réels et actionnables ? Un silhouette score de 0,3 avec des clusters qui ont une signification business claire vaut mieux qu’un score de 0,8 sur des groupes sans interprétation.

Faut-il normaliser les données avant le clustering ?

Oui, presque toujours. Les algorithmes basés sur la distance (K-Means, DBSCAN, hiérarchique) sont sensibles à l’échelle des variables. Une variable en milliers dominera une variable en dizaines. Standardisez les données (moyenne 0, écart-type 1) avec StandardScaler de scikit-learn. Exception : si l’échelle a une signification métier importante que vous voulez préserver (par exemple, des coordonnées géographiques avec DBSCAN pour trouver des zones géographiques).

Le clustering peut-il servir pour la détection d’anomalies ?

Oui, c’est l’un de ses usages les plus courants. Les points identifiés comme bruit par DBSCAN (label = -1) sont des anomalies candidates. Avec K-Means, les points très éloignés de leur centroïde (distance > seuil) peuvent être considérés comme anomalies. Avec les GMM, les points avec une faible probabilité d’appartenance à tous les clusters sont suspects. Pour une détection d’anomalies dédiée, des algorithmes spécialisés comme Isolation Forest ou LOF (Local Outlier Factor) sont souvent préférés.

Polydesk.ai — Footer