Aller au contenu principal

Module 3 — Choix du nombre de groupes : coude et score de silhouette

Les k-moyennes exigent un kk que personne ne connaît. Ce module donne les deux outils qui permettent de le choisir de façon défendable — et surtout, la façon de les lire sans se raconter d'histoires. C'est la question la plus posée du partitionnement, et celle où l'on se trompe le plus volontiers.

Pourquoi l'inertie seule ne peut pas répondre

Rappel du module 2 : l'inertie décroît toujours quand kk augmente. Avec autant de groupes que de points, elle vaut zéro. Minimiser l'inertie conduirait donc mécaniquement à un groupe par observation — un résultat parfait et parfaitement inutile.

L'inertie n'est pas pour autant à jeter : c'est sa vitesse de décroissance qui porte l'information. C'est l'idée de la méthode du coude.

La méthode du coude : lire un ralentissement

On trace l'inertie en fonction de kk et l'on cherche le point où la courbe cesse de chuter pour s'aplatir — le « coude ». L'interprétation est intuitive : jusqu'à ce point, chaque groupe supplémentaire révèle une structure réelle et fait tomber l'inertie ; après, on ne fait plus que découper des groupes déjà homogènes, pour un gain marginal.

inerties = []
for k in range(2, 11):
inerties.append(KMeans(n_clusters=k, n_init=10, random_state=42).fit(X_s).inertia_)

Le défaut de la méthode est son honnêteté : le coude est souvent ambigu. Sur des données réelles, la courbe s'infléchit doucement et deux personnes y verront 3 et 5 groupes. La méthode du coude délimite une plage plausible ; elle ne tranche pas. D'où l'outil suivant, plus exigeant.

Le score de silhouette : compacité et séparation

Le score de silhouette évalue, pour chaque point, s'il est dans le bon groupe, en comparant deux distances moyennes : celle à son propre groupe (aa) et celle au groupe voisin le plus proche (bb).

s=bamax(a,b)[1,1]s = \frac{b - a}{\max(a, b)} \in [-1, 1]

La lecture est directe et c'est ce qui fait la valeur de l'indicateur :

ValeurInterprétation
proche de 1point bien à sa place, groupes bien séparés
proche de 0point à la frontière entre deux groupes
négativepoint probablement mal classé

En moyennant sur tous les points, on obtient un score global comparable entre plusieurs kk — et cette fois, on peut retenir le maximum.

from sklearn.metrics import silhouette_score, silhouette_samples
silhouette_score(X_s, km.labels_) # score global, comparable entre k
silhouette_samples(X_s, km.labels_) # score par point : bien plus informatif

Le second appel mérite le détour. Un score global de 0,55 peut cacher trois groupes très nets et un quatrième incohérent, dont les points sont proches de zéro voire négatifs. Examiner la distribution par groupe révèle exactement où le partitionnement tient et où il craque, ce qu'une moyenne dissimule.

Arbitrer : les critères ne décident pas seuls

Coude et silhouette délimitent un espace de solutions raisonnables ; le choix final intègre deux considérations que la géométrie ignore :

  • la stabilité (module 1) : relancez avec d'autres graines aléatoires, ou sur 90 % des données tirées au hasard. Si les groupes se recomposent en profondeur, ce kk n'est pas fiable, quel que soit son score ;
  • l'utilité métier : 4 segments interprétables et actionnables valent mieux que 7 segments au meilleur score dont personne ne sait quoi faire. Un partitionnement qu'on ne peut pas nommer ne sera pas utilisé.
Quand aucun k ne convient

Un score de silhouette qui plafonne bas (disons sous 0,25) pour tous les kk n'est pas un échec de réglage : c'est un résultat. Il dit qu'il n'y a probablement pas de groupes sphériques nets dans ces données. Trois suites possibles, dans cet ordre : revoir les variables et l'échelle (le signal est peut-être noyé), essayer une méthode qui ne suppose pas des sphères (DBSCAN au module 5, mélanges gaussiens au module 9), ou accepter que la structure soit continue plutôt que groupée — auquel cas la réduction de dimension du module 6 est le bon outil.

En résumé

  • L'inertie décroît toujours avec kk : c'est son ralentissement qu'on lit, via la méthode du coude, qui délimite une plage sans trancher.
  • Le score de silhouette compare compacité et séparation dans [1,1][-1, 1] et se compare entre plusieurs kk ; le maximum est un candidat sérieux.
  • Le score par point révèle les groupes fragiles qu'une moyenne globale masque.
  • Le choix final intègre stabilité et utilité métier ; un score bas pour tous les kk est une information, pas un échec.

Module suivant : le partitionnement hiérarchique, qui construit une arborescence de groupes sans fixer kk à l'avance.