47 votos

¿Cómo interpretar la media del gráfico de la silueta?

Estoy intentando utilizar el gráfico de siluetas para determinar el número de clústeres en mi conjunto de datos. Dado el conjunto de datos Tren Utilicé el siguiente código de 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*-.');`

El gráfico resultante se presenta a continuación con el eje de abscisas como número de clústeres y el eje y media del valor de la silueta .

¿Cómo puedo interpretar este gráfico? ¿Cómo puedo determinar el número de cluster a partir de esto?

enter image description here

0 votos

Para determinar el número de conglomerados, véase el método del árbol de expansión mínima (MST) en software de visualización para agrupamiento .

0 votos

@Learner: ¿La función de silueta está incorporada en alguna biblioteca? Si no es así, ¿podrías publicarla en tu pregunta si no te importa?

0 votos

@Legend: Está disponible en la caja de herramientas de Matlab Statistics.

57voto

Vi0 Puntos 656

La respuesta de Sergey contiene el punto crítico, que es que el coeficiente de silueta cuantifica la calidad de la agrupación lograda, por lo que se debe seleccionar el número de conglomerados que maximice el coeficiente de silueta.


La respuesta larga es que la mejor manera de evaluar los resultados de sus esfuerzos de agrupación es empezar por examinar realmente -inspección humana- las agrupaciones formadas y hacer una determinación basada en la comprensión de lo que representan los datos, lo que representa una agrupación y lo que se pretende conseguir con la agrupación.

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

Ejemplos: masa/radio/densidad de los clusters, cohesión o separación entre clusters, etc. Estos conceptos se combinan a menudo, por ejemplo, la relación entre la separación y la cohesión debe ser grande si la agrupación fue exitosa.

La forma de medir la agrupación depende del tipo de algoritmos de agrupación utilizados. Por ejemplo, la medición de la calidad de un completa La medición de la calidad de un algoritmo de clustering (en el que todos los puntos se colocan en clusters) puede ser muy diferente de la medición de la calidad de un algoritmo de clustering difuso basado en umbrales (en el que algún punto puede quedar sin agrupar como "ruido").


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

Para cada punto p, encuentre primero la distancia media entre p y todos los demás puntos del mismo clúster (ésta es una medida de cohesión, llámela A). A continuación, halle la distancia media entre p y todos los puntos del conglomerado más cercano (esta es una medida de separación del otro conglomerado más cercano, llámese B). El coeficiente de silueta para p se define como la diferencia entre B y A dividida por la mayor de las dos (max(A,B)).

Evaluamos el coeficiente de agrupación de cada punto y a partir de ahí podemos obtener el coeficiente de agrupación medio "global".

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

He construido un ejemplo aquí para demostrarlo gráficamente.

Clustering coefficient Results of clustering for nclusters = 2:5

En estos gráficos, los mismos datos se representan cinco veces; los colores indican los clusters creados por el clustering de k-means, con k = 1,2,3,4,5. Es decir, he forzado un algoritmo de clustering para dividir los datos en 2 clusters, luego 3, y así sucesivamente, y he coloreado el gráfico en consecuencia.

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

Si no pudiéramos visualizar los datos, tal vez debido a una mayor dimensionalidad, un gráfico de siluetas seguiría dándonos una sugerencia. Sin embargo, espero que mi respuesta, un tanto prolija, deje claro que esta "sugerencia" podría ser muy insuficiente o simplemente errónea en determinados casos.

7 votos

Gracias por tu detallada respuesta, y sobre todo los gráficos son muy útiles. Sin embargo, no entendí muy bien cómo the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios. como usted afirma.

16voto

rob Puntos 197

Hoy he estado investigando lo mismo y he encontrado una interpretación aquí . Tiene sentido lógico, pero no estoy seguro de que podamos aplicar ciegamente la interpretación para 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 utilizar la anchura de la silueta para captar los valores atípicos. En una tarea de agrupación de documentos que estoy llevando a cabo actualmente, los que tienen una anchura de silueta negativa son definitivamente valores atípicos (cuando se comprueban con su significado semántico). No estoy seguro de si esta anchura mejorará después de eliminar los valores atípicos (de nuevo, esto tiene sentido lógico, pero no lo he hecho yo mismo).

7 votos

Sólo un comentario de historia, la tabla proviene originalmente de Sewell, Grandville y P. J. Rousseau. "Finding groups in data: 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)

0 votos

El enlace de la respuesta ya no está disponible. ¿Podría proporcionar otra referencia?

2 votos

Aquí está el enlace al artículo del archivo web: web.archive.org/web/20111002220803/http://www.unesco.org:80/

11voto

Sergey Puntos 391

Echa un vistazo a la Plataforma de Análisis de Validez de Clusters (CVAP) ToolBox Y algunos de los materiales (enlaces) del CVAP:

Índice de silueta (promedio general silueta) un valor de Silueta mayor indica una mejor calidad de un resultado de la agrupación [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Técnicas de validación de clusters para datos de expresión genómica, Signal Processing. V.83. N4, P.825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. An examination of indexes for determining the Number of Cluster in binary data sets. Psychometrika, 67(1):137-160, 2002.

También puede consultar esto Herramienta (simple) para estimar el número de conglomerados

Basta con echar un vistazo a los ejemplos de ambos conjuntos de herramientas (también puede utilizar otras técnicas de validación de clusters)

2voto

Leela Prabhu Puntos 58

Si está tratando de seleccionar el número de clusters para el aprendizaje no supervisado, tal vez podría intentar hacer algo como

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

Utilizan algo más que la media de la puntuación de la silueta (utilizan la distribución), pero tiene sentido. Parece que prefiere los clusters más pequeños, pero tal vez usted podría probar esto con algunos datos generados y ver si funciona?

También puede consultar este documento.

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X