¿Cómo interpretar la media de la trama de Silhouette?

34

Estoy tratando de usar el diagrama de silueta para determinar el número de clúster en mi conjunto de datos. Dado el conjunto de datos Train , utilicé el siguiente código matlab

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

La gráfica resultante se da a continuación con xaxis como número de clúster y media yaxis del valor de la silueta .

¿Cómo interpreto este gráfico? ¿Cómo determino el número de clúster a partir de esto?

ingrese la descripción de la imagen aquí

Aprendiz
fuente
For determining the number of clusters, see the minimum spanning tree (MST) method under visualization-software-for-clustering.
denis
@Learner: Is the silhouette function inbuilt in some library? If not, could you post it in your question if you don't mind?
Legend
@Legend: Its available in Matlab Statistics toolbox.
Learner
@Learner: Ooops... I thought you were using Python :) Thanks for letting me know about it.
Legend
1
¡+1 por mostrar el código! Además, dado que la media máxima de su silueta ocurre cuando k = 2, es posible que desee verificar si sus datos están agrupados, lo que se puede hacer utilizando la estadística de brecha (otro enlace ).
Franck Dernoncourt el

Respuestas:

41

La respuesta de Sergey contiene el punto crítico, que es que el coeficiente de silueta cuantifica la calidad del agrupamiento logrado, por lo que debe seleccionar el número de grupos que maximiza el coeficiente de silueta.


La respuesta larga es que la mejor manera de evaluar los resultados de sus esfuerzos de agrupación es comenzar examinando realmente - inspección humana - los grupos formados y haciendo una determinación basada en la comprensión de lo que representan los datos, lo que representa un grupo, y lo que se pretende lograr con la agrupación.

Existen numerosos métodos cuantitativos para evaluar los resultados de la agrupación que deben usarse como herramientas, con plena comprensión de las limitaciones. Tienden a ser de naturaleza bastante intuitiva y, por lo tanto, tienen un atractivo natural (como los problemas de agrupamiento en general).

Ejemplos: masa / radio / densidad del grupo, cohesión o separación entre grupos, etc. Estos conceptos a menudo se combinan, por ejemplo, la relación de separación a cohesión debería ser grande si la agrupación fue exitosa.

La forma en que se mide la agrupación se informa por el tipo de algoritmos de agrupación utilizados. Por ejemplo, medir la calidad de un algoritmo de agrupación completo (en el que todos los puntos se colocan en grupos) puede ser muy diferente de la calidad de medición de un algoritmo de agrupación difusa basado en el umbral (en el que algún punto podría dejarse sin agrupar como 'ruido' )


El coeficiente de silueta es una de esas medidas. Funciona de la siguiente manera:

Para cada punto p, primero encuentre la distancia promedio entre p y todos los demás puntos en el mismo grupo (esta es una medida de cohesión, llámela A). Luego, encuentre la distancia promedio entre p y todos los puntos en el grupo más cercano (esto es una medida de separación del otro grupo más cercano, llámelo B). El coeficiente de silueta para p se define como la diferencia entre B y A dividido por el mayor de los dos (max (A, B)).

Evaluamos el coeficiente de agrupación de cada punto y a partir de esto podemos obtener el coeficiente de agrupación promedio 'general'.

Intuitivamente, estamos tratando de medir el espacio entre grupos. Si la cohesión del grupo es buena (A es pequeña) y la separación del grupo es buena (B es grande), el numerador será grande, etc.

He construido un ejemplo aquí para demostrar esto gráficamente.

Clustering coefficient Results of clustering for nclusters = 2:5

En estas parcelas, los mismos datos se trazan cinco veces; los colores indican los grupos creados por k-significa agrupación, con k = 1,2,3,4,5. Es decir, forcé un algoritmo de agrupamiento para dividir los datos en 2 grupos, luego en 3, y así sucesivamente, y coloreé el gráfico en consecuencia.

El gráfico de silueta muestra que el coeficiente de silueta era más alto cuando k = 3, lo que sugiere que ese es el número óptimo de grupos. En este ejemplo, tenemos la suerte de poder visualizar los datos y podríamos estar de acuerdo en que, de hecho, tres grupos capturan mejor la segmentación de este conjunto de datos.

Si no pudiéramos visualizar los datos, quizás debido a una mayor dimensionalidad, una gráfica de silueta aún nos daría una sugerencia. Sin embargo, espero que mi respuesta algo interminable aquí también indique que esta "sugerencia" podría ser muy insuficiente o simplemente errónea en ciertos escenarios.

Un hombre
fuente
55
Gracias por su respuesta detallada, y especialmente las tramas son muy útiles. Sin embargo, no entendí cómo, the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.como usted dice.
Zhubarb
10

Eche un vistazo a la Caja de herramientas de la Plataforma de análisis de validez de clúster (CVAP) y algunos de los materiales (enlaces) de CVAP:

Índice de silueta (silueta promedio general) un valor de silueta mayor indica una mejor calidad de un resultado de agrupamiento [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Técnicas de validación de clúster para datos de expresión del genoma, procesamiento de señales. V.83. N4, P.825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Un examen de índices para determinar el número de clúster en conjuntos de datos binarios. Psychometrika, 67 (1): 137-160, 2002.

También puede verificar esta herramienta (simple) para estimar el número de clústeres

Solo eche un vistazo a los ejemplos de ambos juegos de herramientas (también puede usar otras técnicas de validación de clúster)

Sergey
fuente
6

He estado investigando lo mismo hoy y encontré una interpretación aquí . Tiene sentido lógico, pero no estoy seguro de si podemos aplicar ciegamente la interpretación de nuestros conjuntos de datos. En resumen, lo que dice ese artículo es lo siguiente:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

Sin embargo, parece que podemos usar el ancho de la silueta para detectar valores atípicos. En una tarea de agrupamiento de documentos que estoy manejando actualmente, los que tienen un ancho de silueta negativo son valores atípicos definidos (cuando se verifican de forma cruzada con su significado semántico). No estoy seguro de si este ancho mejorará después de eliminar los valores atípicos (nuevamente, esto tiene sentido lógico pero no lo he hecho yo mismo).

Leyenda
fuente
44
Solo un comentario histórico, la tabla proviene originalmente de Sewell, Grandville y PJ Rousseau. "Encontrar grupos en datos: una introducción al análisis de conglomerados". (1990) img546.imageshack.us/img546/4523/cnfg.png (quizás publicado anteriormente en uno de los artículos de los autores)
Franck Dernoncourt
El enlace en la respuesta ya no está disponible. ¿Podría por favor proporcionar otra referencia?
BajajG
Aquí está el enlace al artículo del archivo web: web.archive.org/web/20111002220803/http://www.unesco.org:80/…
Justas
1

If you are trying to select the number of clusters for unsupervised learning then maybe you could try doing something like-

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

They use more than just the silhouette score mean (they use the distribution) but it makes sense. It seems to prefer smaller clusters but maybe you could try this with some generated data and see if works?

Alternatively, you can check this paper-

http://www.sciencedirect.com/science/article/pii/0377042787901257

Leela Prabhu
fuente