# Silhouette (clustering)

Silhouette se refiere a un método de interpretación y validación de la coherencia dentro del análisis de grupos. La técnica proporciona una representación gráfica sucinta de lo bien que se ha clasificado cada objeto.
El valor de la silueta es una medida de cuán similar es un objeto a su propio cúmulo (cohesión) en comparación con otros cúmulos (separación). La silueta va de -1 a +1, donde un valor alto indica que el objeto está bien emparejado con su propio cúmulo y mal emparejado con los cúmulos vecinos. Si la mayoría de los objetos tienen un valor alto, entonces la configuración del cúmulo es apropiada. Si muchos puntos tienen un valor bajo o negativo, entonces la configuración de cúmulos puede tener demasiados o muy pocos cúmulos.
La silueta puede ser calculada con cualquier métrica distancia, como la distancia euclidiana o la distancia Manhattan.

## Definición

Supongamos que los datos han sido agrupados mediante cualquier técnica, como k-means, en $k$ clusters.
Para un punto de datos $i\in C_{I}$ (punto de datos $i$ en el cluster $C_{i}$), tenemos
    $a(i)={\frac {1}{|C_{I}|-1}}\sum _{j\in C_{I},i\neq j}d(i,j)$
siendo la distancia media entre $i$ y todos los demás puntos de datos en el mismo cúmulo, donde $d(i,j)$ es la distancia entre los puntos de datos $i$ y $j$ en el cúmulo $C_{I}$ (dividimos por $|C_{I}|-1$ porque no incluimos la distancia $d(i,i)$ en la suma). Podemos interpretar $a(i)$ como una medida de lo bien que $i$ está asignada a su cúmulo (cuanto más pequeño es el valor, mejor es la asignación).
Luego definimos la diferencia media del punto $i$ a algún cúmulo $C_{K}$ como la media de la distancia desde $i$ a todos los puntos en $C_{K}$ (donde $C_{K}\neq C_{I}$).
Para cada punto de datos $i\in C_{I}$, definimos ahora
    $b(i)=\min _{k\neq i}{\frac {1}{|C_{k}|}}\sum _{j\in C_{k}}d(i,j)$
para ser el más pequeño (de ahí el operador $\min$ en la fórmula) distancia media de $i$ a todos los puntos de cualquier otro cúmulo, del cual $i$ no es miembro. Se dice que el cúmulo con esta diferencia media más pequeña es el "cúmulo vecino" de $i$ porque es el siguiente cúmulo que mejor se ajusta al punto $i$.
Ahora definimos una silhouette (valor) de un punto de datos $i$
    $s(i)={\frac {b(i)-a(i)}{\max\{a(i),b(i)\}}}$, if $|C_{I}|>1$
y
    $s(i)=0$, if $|C_{I}|=1$
El cual puede ser escrito como:
    $s(i)={\begin{cases}1-a(i)/b(i),&{\mbox{if }}a(i)<b(i)\\0,&{\mbox{if }}a(i)=b(i)\\b(i)/a(i)-1,&{\mbox{if }}a(i)>b(i)\\\end{cases}}$
De la anterior definición está claro que
    $-1\leq s(i)\leq 1$
Además, note que la puntuación es 0 para los grupos con tamaño = 1. Esta restricción se añade para evitar que el número de cúmulos aumente significativamente.
Para que $s(i)$ esté cerca de 1 requerimos que $a(i)\ll b(i)$. Como $a(i)$ es una medida de cuán disímil es $i$ a su propio grupo, un pequeño valor significa que está bien emparejado. Además, un valor grande de $b(i)$ implica que $i$ está mal emparejado con su cúmulo vecino. Por lo tanto, un $s(i)$ cercano a uno significa que los datos están apropiadamente agrupados. Si $s(i)$ está cerca de uno negativo, entonces por la misma lógica vemos que $i$ sería más apropiado si se agrupara en su cúmulo vecino. Un $s(i)$ cercano a cero significa que el dato está en el borde de dos cúmulos naturales.
La media de $s(i)$ sobre todos los puntos de un cúmulo es una medida de cuán estrechamente agrupados están todos los puntos del cúmulo. Por lo tanto, la media $(i)$ sobre todos los datos de todo el conjunto de datos es una medida de cuán apropiadamente los datos han sido agrupados. Si hay demasiados o muy pocos cúmulos, como puede ocurrir cuando se utiliza una mala elección de $k$ en el algoritmo de agrupación (por ejemplo: k-means), algunos de los cúmulos mostrarán típicamente siluetas mucho más estrechas que el resto. Así pues, las gráficas de siluetas y las medias pueden utilizarse para determinar el número natural de cúmulos dentro de un conjunto de datos. También se puede aumentar la probabilidad de que la silueta se maximice en el número correcto de cúmulos al reescalar los datos utilizando ponderaciones de características que sean específicas del cúmulo.
Kaufman et al. introdujeron el término silhouette coefficient para el valor máximo del promedio $s(i)$ para todos los datos de un dataset.
    $SC=\max _{k}{\tilde {s}}\left(k\right)$
Donde ${\tilde {s}}\left(k\right)$ representa la media $s(i)$ sobre todos los datos de todo el conjunto de datos para un número específico de cúmulos $k$.