¿Dónde cortar un dendrograma?

61

La agrupación jerárquica se puede representar mediante un dendrograma. Cortar un dendrograma a cierto nivel da un conjunto de grupos. Cortar a otro nivel da otro conjunto de grupos. ¿Cómo elegirías dónde cortar el dendrograma? ¿Hay algo que podamos considerar un punto óptimo? Si miro un dendrograma a lo largo del tiempo a medida que cambia, ¿debería cortar en el mismo punto?

Eduardas
fuente
También me he preguntado sobre este problema, pero (desafortunadamente) aún no he encontrado ninguna respuesta convincente. Creo que no hay solución. Hay paquetes de R / BioC como hopack(y otros) que pueden estimar la cantidad de clústeres, pero eso no responde a su pregunta.
suncoolsu
El pvclustpaquete para Rtiene funciones que dan valores p de arranque para los grupos de dendrogramas, lo que le permite identificar grupos: is.titech.ac.jp/~shimo/prog/pvclust
Ben
Un sitio útil con algunos ejemplos sobre cómo hacerlo en la práctica: intodatascience.com/…
Mikko

Respuestas:

46

No hay una respuesta definitiva ya que el análisis de conglomerados es esencialmente un enfoque exploratorio; La interpretación de la estructura jerárquica resultante depende del contexto y, a menudo, varias soluciones son igualmente buenas desde un punto de vista teórico.

Se dieron varias pistas en una pregunta relacionada: ¿Qué criterios de detención para la agrupación jerárquica aglomerativa se utilizan en la práctica? Generalmente uso criterios visuales, por ejemplo, gráficos de silueta y algún tipo de criterio numérico, como el índice de validez de Dunn, la gamma de Hubert, el coeficiente G2 / G3 o el índice Rand corregido. Básicamente, queremos saber qué tan bien se aproxima la matriz de distancia original en el espacio del clúster, por lo que una medida de la correlación cophenetic también es útil. También uso k-means, con varios valores iniciales, y el estadístico gap ( espejo ) para determinar la cantidad de clústeres que minimizan el SS interno. La concordancia con la agrupación jerárquica de Ward da una idea de la estabilidad de la solución de agrupación (puede usarmatchClasses()en el paquete e1071 para eso).

Encontrará recursos útiles en el CRAN Task View Cluster , incluidos pvclust , fpc , clv , entre otros. También vale la pena intentarlo con el paquete clValid ( descrito en el Journal of Statistical Software ).

Ahora, si sus grupos cambian con el tiempo, esto es un poco más complicado; ¿Por qué elegir la primera solución de clúster en lugar de otra? ¿Espera que algunas personas se muevan de un grupo a otro como resultado de un proceso subyacente que evoluciona con el tiempo?

Hay algunas medidas que intentan hacer coincidir los grupos que tienen una superposición máxima absoluta o relativa, como se sugirió en su pregunta anterior. Mire la comparación de agrupaciones: una descripción general de Wagner y Wagner.

chl
fuente
12

Realmente no hay una respuesta. Está en algún lugar entre 1 y N.

Sin embargo, puede pensarlo desde una perspectiva de ganancias.

Por ejemplo, en marketing uno usa la segmentación, que es muy similar a la agrupación.

Un mensaje (un anuncio o una carta, por ejemplo) que se adapte a cada individuo tendrá la tasa de respuesta más alta. Un mensaje genérico adaptado al promedio tendrá la tasa de respuesta más baja. Dicho esto, tres mensajes adaptados a tres segmentos estarán en algún punto intermedio. Este es el lado de los ingresos.

Un mensaje que se adapte a cada individuo tendrá el costo más alto. Un mensaje genérico adaptado al promedio tendrá el costo más bajo. Tres mensajes adaptados a tres segmentos estarán en algún punto intermedio.

Digamos que pagarle a un escritor para que escriba un mensaje personalizado cuesta 1000, dos cuesta 2000 y así sucesivamente.

Digamos que mediante el uso de un mensaje, sus ingresos serán de 5000. Si segmenta a sus clientes en 2 segmentos y escribe mensajes personalizados para cada segmento, su tasa de respuesta será mayor. Digamos que los ingresos son ahora de 7500. Con tres segmentos, una tasa de respuesta ligeramente más alta, y sus ingresos son de 9000. Un segmento más, y usted está en 9500.

Para maximizar las ganancias, siga segmentando hasta que el ingreso marginal de la segmentación sea igual al costo marginal de la segmentación. En este ejemplo, usaría tres segmentos para maximizar las ganancias.

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500
Neil McGuigan
fuente
Esta es una perspectiva interesante!
AndyF
5

Quizás uno de los métodos más simples sería una representación gráfica en la que el eje x es el número de grupos y el eje y cualquier medida de evaluación como la distancia o la similitud. En esa gráfica, generalmente puede observar dos regiones diferenciadas, siendo el valor del eje x en la 'rodilla' de la línea el número 'óptimo' de clúster.

También hay algunas estadísticas que podrían ayudar en esta tarea: los criterios gamma, pseudo-t², pseudo-F o de agrupación cúbica (CCC) de Hubert, entre otros.

Manuel Ramón
fuente
Estoy de acuerdo con chl. Los análisis de conglomerados son enfoques exploratorios y la interpretación de los resultados, para este caso particular, el número óptimo de conglomerados, depende de su contexto. Por ejemplo, en mi trabajo es común usar análisis de conglomerados para clasificar a los individuos en función de varias características y, a veces, el número de conglomerados está preestablecido. En este caso, nuestro objetivo es encontrar el conjunto de variables clasificatorias que mejor distingue a los individuos que pertenecen a diferentes grupos.
Manuel Ramón
3

En la agrupación jerárquica, el número de particiones de salida no son solo los cortes horizontales, sino también los cortes no horizontales que deciden la agrupación final. Por lo tanto, esto puede verse como un tercer criterio, aparte de la 1. distancia métrica y 2. Criterio de enlace . http://en.wikipedia.org/wiki/Hierarchical_clustering

El criterio que ha mencionado es un tercer tipo, que es una especie de restricción de optimización en el conjunto de particiones en la jerarquía. ¡Esto se presenta formalmente en este documento y se dan ejemplos de segmentación!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf

Ravi Kiran
fuente
1

Como dicen las otras respuestas, definitivamente es subjetivo y depende de qué tipo de granularidad esté tratando de estudiar. Para un enfoque general, corté este para darme 2 grupos y 1 valor atípico. Luego me enfocaría en los dos grupos para ver si había algo significativo entre ellos.

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

ingrese la descripción de la imagen aquí

O.rka
fuente