¿Qué criterios de detención para la agrupación jerárquica aglomerativa se utilizan en la práctica?

32

He encontrado una extensa literatura que propone todo tipo de criterios (por ejemplo, Glenn et al. 1985 (pdf) y Jung et al. 2002 (pdf)). Sin embargo, la mayoría de estos no son tan fáciles de implementar (al menos desde mi perspectiva). Estoy usando scipy.cluster.hierarchy para obtener una jerarquía de clústeres, y ahora estoy tratando de decidir cómo formar grupos planos a partir de eso. Mi objetivo es descubrir patrones comunes en mis observaciones, por lo que no tengo referencia para comparar el agrupamiento obtenido. ¿Alguien puede sugerir una solución pragmática?

Björn Pollex
fuente
En mi página web, hay una colección zip "Criterios de agrupación" con la descripción (y las funciones de SPSS) de una serie de criterios de agrupación internos populares (reglas de detención). Para su información.
ttnphns

Respuestas:

18

La siguiente entrada de Wikipedia en realidad hace un trabajo bastante bueno al explicar los métodos más populares y relativamente simples:

El método de codo heurístico descrito allí es probablemente el más popular debido a su explicación simple (cantidad de variación explicada por el número de grupos) junto con la verificación visual. El método teórico de información tampoco es difícil de implementar y la página tiene un pseudocódigo que podría usar para comenzar. Este último es análogo a una probabilidad penalizada basada en la complejidad del modelo como en los criterios de información bien conocidos como AIC, BIC, etc.

ars
fuente
¡Gracias! El artículo de Wikipedia sobre agrupamiento jerárquico no se vincula a ese.
Björn Pollex
2
Correcto. Se corrigió ahora en los enlaces "ver también", ¡gracias por señalarlo!
ars
En el Método Elbow, ¿qué pasa si los objetos que se agruparán son bastante "complejos"? Quiero decir que no son puntos simples, sino colecciones complejas de datos. Me he dado cuenta de que distancia por pares (distancia autodefinida). ¿Cómo calcularía la llamada "varianza" aquí para aplicar el Método Elbow?
Sibbs Gambling
17

Es bastante difícil proporcionar una solución clara sobre cómo elegir el "mejor" número de clústeres en sus datos, sea cual sea el método de clúster que utilice, porque el Análisis de clúster busca aislar grupos de unidades estadísticas (ya sean individuos o variables). ) con fines exploratorios o descriptivos, esencialmente. Por lo tanto, también debe interpretar el resultado de su esquema de agrupación en clúster y varias soluciones de agrupación pueden ser igualmente interesantes.

Ahora, con respecto a los criterios estadísticos habituales utilizados para decidir cuándo detenerse para agregar datos, como lo señala @ars, la mayoría son criterios guiados visualmente , incluido el análisis del dendrograma o la inspección de perfiles de grupos, también llamados gráficos de silueta (Rousseeuw, 1987) . También se propusieron varios criterios numéricos , también conocidos como índices de validez, por ejemplo, el índice de validez de Dunn, el índice de validez Davies-Bouldin, el índice C, la gamma de Hubert, por nombrar algunos. La agrupación jerárquica a menudo se ejecuta junto con k-means (de hecho, varias instancias de k-means ya que es un algoritmo estocástico), por lo que agrega soporte a las soluciones de agrupación encontradas. No sé si todas estas cosas están disponibles en Python, pero hay una gran cantidad de métodos disponibles en R (ver elVista de tareas de clúster , ya citada por @mbq para una pregunta relacionada, ¿Qué herramientas podrían usarse para aplicar algoritmos de clúster en MovieLens? ) Otros enfoques incluyen la agrupación difusa y la agrupación basada en modelos (también llamada análisis de rasgos latentes , en la comunidad psicométrica) si busca una forma más sólida de elegir la cantidad de grupos en sus datos.

Por cierto, acabo de encontrar esta página web, scipy-cluster , que es una extensión de Scipy para generar, visualizar y analizar grupos jerárquicos . ¿Quizás incluye otras funcionalidades? También he oído hablar de PyChem, que ofrece cosas bastante buenas para el análisis multivariante.

La siguiente referencia también puede ser útil:

Steinley, D. y Brusco, MJ (2008). Selección de variables en el análisis de conglomerados: una comparación empírica de ocho procedimientos. Psychometrika , 73 , 125-144.

chl
fuente
Gracias por esta excelente respuesta! De hecho, el módulo de agrupamiento jerárquico que mostró ya es parte de scipy. Además, scipy proporciona una implementación de k-means, por lo que podría usarlo fácilmente.
Björn Pollex
Ok, no busqué detalles en esto. Para k-means, debe prestar atención al hecho de que generalmente necesitamos dos bucles externos para validar la solución de clúster (uno donde varía el número de clústeres y otro para variar la semilla; el objetivo es minimizar el RSS); entonces puede usar la estadística Gap para elegir el número óptimo de clústeres.
chl
5

Recientemente me convertí en el fondo del método de visualización de clustergram (implementado en R).

Lo uso para un método adicional para evaluar un "buen" número de grupos. Extenderlo a otros métodos de agrupamiento no es tan difícil (en realidad lo hice, pero no pude publicar el código)

texto alternativo

Tal Galili
fuente