Silhouette (clustering)
# Silhouette (clustering)

En partitionnement de données (clustering), le coefficient de silhouette est une mesure de qualité d'une partition d'un ensemble de données en classification automatique. Pour chaque point, son coefficient de silhouette est la différence entre la distance moyenne avec les points du même groupe que lui (cohésion) et la distance moyenne avec les points des autres groupes voisins (séparation). Si cette différence est négative, le point est en moyenne plus proche du groupe voisin que du sien : il est donc mal classé. À l'inverse, si cette différence est positive, le point est en moyenne plus proche de son groupe que du groupe voisin : il est donc bien classé.

Le coefficient de silhouette proprement dit est la moyenne du coefficient de silhouette pour tous les points.

## Expression

### Position du problème

Si l'on note X{\textstyle X} la matrice des données, dont chaque ligne correspond à un individu (ou observation) et chaque colonne correspond à un prédicteur (ou variable). On note N{\textstyle N} le nombre d'individus et p{\textstyle p} le nombre de prédicteurs :

$X=\left({\begin{array}{ccc}x_{1}^{1}&...&x_{p}^{1}\\\vdots &&\vdots \\x_{1}^{N}&...&x_{p}^{N}\\\end{array}}\right)$

Notons $d(x^i,$ $x^{i′}){\textstyle$ d(x^{i}, x^{i'})} la dissimilarité entre les individus $x^{i}=(x_{1}^{i},...,x_{p}^{i})$ et $x^{i'}=(x_{1}^{i'},...,x_{p}^{i'})$ (respectivement, ligne $i$ et $i'$de $X$). Notons $K\geqslant 2$ le nombre de groupes que l'on souhaite former.

Un algorithme de partitionnement donnera une fonction d'attribution $C:[\![1,N]\!]\longrightarrow [\![1,K]\!]$ dont on cherche à évaluer la pertinence par un score. L'ensemble des points appartenant à un groupe k{\textstyle k} est alors donné par $I_k={i∈[[1,$ N]]/ C(i)=k}{\textstyle I_{k}=\{i\in [\![1, N]\!]/\ C(i)=k\}}.

### Expression du coefficient de silhouette

Le coefficient (ou score) de silhouette se définit d'abord sur un point i{\textstyle i} dont le groupe est k=C(i){\textstyle k=C(i)}. Il se base sur la distance moyenne du point à son groupe : $a(i)=1/|I_k|−1$ $∑_{j∈Ik, j≠i}d(x^i,$ $x^j){\textstyle$ a(i)={\frac {1}{\vert I_{k}\vert -1}}\sum _{j\in I_{k}, j\neq i}d(x^{i}, x^{j})} et la distance moyenne du point à son groupe voisin $b(i)=min_{k′≠k}$ $1/|I_{k′}|$ $∑_{i′∈Ik′}d(x^i,$ $x^{i′}){\textstyle$ b(i)=\min _{k'\neq k}{\frac {1}{\vert I_{k'}\vert }}\sum _{i'\in I_{k'}}d(x^{i}, x^{i'})}. Le coefficient de silhouette du point i{\textstyle i} s'écrit alors :

$s_{sil}(i)={\frac {b(i)-a(i)}{\max(a(i),b(i))}}$

On peut le moyenner groupe par groupe pour comparer leurs homogénéités : ceux avec les coefficient de silhouette les plus forts sont les plus homogènes. Sur l'ensemble de la classification, il aura pour expression :

$S_{sil}={\frac {1}{K}}\sum _{k=1}^{K}{\frac {1}{\vert I_{k}\vert }}\sum _{i\in I_{k}}s_{sil}(i)$

## Propriétés

### Domaine de variation

Le coefficient de silhouette varie entre -1 (pire classification) et 1 (meilleure classification).

