Comprender las comparaciones de resultados de agrupamiento

13

Estoy experimentando con la clasificación de datos en grupos. Soy bastante nuevo en este tema e intento comprender el resultado de algunos de los análisis.

Usando ejemplos de Quick-R , Rse sugieren varios paquetes. He intentado usar dos de estos paquetes ( fpcusando la kmeansfunción y mclust). Un aspecto de este análisis que no entiendo es la comparación de los resultados.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

He leído las partes relevantes del fpc manual y todavía no tengo claro a qué debo apuntar. Por ejemplo, este es el resultado de comparar dos enfoques de agrupación diferentes:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Mi pregunta principal aquí es comprender mejor cómo interpretar los resultados de esta comparación de conglomerados.


Anteriormente, había preguntado más sobre el efecto de escalar datos y calcular una matriz de distancia. Sin embargo, eso fue respondido claramente por Mariana Soffer, y solo estoy reorganizando mi pregunta para enfatizar que estoy interesado en la interpretación de mi salida, que es una comparación de dos algoritmos de agrupación diferentes.

Parte anterior de la pregunta : si estoy haciendo algún tipo de agrupación, ¿debería escalar siempre los datos? Por ejemplo, estoy usando la función dist()en mi conjunto de datos escalado como entrada a la cluster.stats()función, sin embargo, no entiendo completamente lo que está sucediendo. Leí acerca de dist() aquí y dice que:

Esta función calcula y devuelve la matriz de distancia calculada utilizando la medida de distancia especificada para calcular las distancias entre las filas de una matriz de datos.

celenius
fuente
¿Está buscando más aclaraciones o no está satisfecho con la respuesta de @mariana? Supongo que se trata de su primera pregunta (2º §). Si este es el caso, tal vez debería actualizar su pregunta para que la gente entienda por qué establece una recompensa por esta pregunta.
chl
@chl Lo actualizaré para hacerlo más claro. Solo estoy buscando alguna guía para interpretar las comparaciones de agrupamiento, ya que no entiendo lo que significa la salida. La respuesta de @mariana fue muy útil al explicar algunos de los términos asociados con este método.
celenius

Respuestas:

13

Primero déjenme decirles que no voy a explicar exactamente todas las medidas aquí, pero les voy a dar una idea sobre cómo comparar qué tan buenos son los métodos de agrupación (supongamos que estamos comparando 2 métodos de agrupación con el mismo número de racimos).

  1. Por ejemplo, cuanto mayor es el diámetro del grupo, peor es la agrupación, porque los puntos que pertenecen al grupo están más dispersos.
  2. Cuanto mayor sea la distancia promedio de cada agrupación, peor será el método de agrupación. (Supongamos que la distancia promedio es el promedio de las distancias desde cada punto en el grupo hasta el centro del grupo).

Estas son las dos métricas más utilizadas. Consulte estos enlaces para comprender lo que significan:

  • distancia entre grupos (cuanto mayor, mejor, es el resumen de la distancia entre los diferentes centroides del grupo)
  • distancia dentro del grupo (cuanto más baja, mejor, es el resumen de la distancia entre los miembros del grupo al centro del grupo)

Para comprender mejor las métricas anteriores, verifique esto .

Luego, debe leer el manual de la biblioteca y las funciones que está utilizando para comprender qué medidas representan cada una de ellas, o si no están incluidas, intente encontrar el significado de las incluidas. Sin embargo, no me molestaría y seguiría con los que dije aquí.

Continuemos con las preguntas que hizo:

  1. Con respecto a los datos de escala: Sí, siempre debe escalar los datos para la agrupación, de lo contrario, las diferentes escalas de las diferentes dimensiones (variables) tendrán diferentes influencias en la forma en que se agrupan los datos, cuanto mayores sean los valores en la variable, más influyente será esa variable estará en cómo se realiza la agrupación, mientras que de hecho todos deberían tener la misma influencia (a menos que por alguna extraña razón no lo desees de esa manera).
  2. Las funciones de distancia calculan todas las distancias desde un punto (instancia) a otro. La medida de distancia más común es Euclidiana, por ejemplo, supongamos que desea medir la distancia de la instancia 1 a la instancia 2 (supongamos que solo tiene 2 instancias por simplicidad). También asumamos que cada instancia tiene 3 valores (x1, x2, x3), de modo I1=0.3, 0.2, 0.5y I2=0.3, 0.3, 0.4manera que la distancia euclidiana de I1 e I2 sería: sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, por lo tanto, la matriz de distancias dará lugar a:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Observe que la matriz de distancia es siempre simétrica.

La fórmula de distancia euclidiana no es la única que existe. Hay muchas otras distancias que pueden usarse para calcular esta matriz. Compruebe, por ejemplo, en Wikipedia Manhattain Distance y cómo calcularlo. Al final de la página de Wikipedia para Euclidean Distance (donde también puede verificar su fórmula) puede verificar qué otras distancias existen.

mariana más suave
fuente
Gracias por su respuesta muy completa, es muy útil.
celenius
Estoy muy feliz de que haya sido útil para ti.
mariana más suave
@marianasoffer el enlace a la página de Stanford no funciona. Actualízalo o hazlo accesible. Gracias
Herman Toothrot
7

Creo que la mejor medida de calidad para la agrupación es la suposición de la agrupación, como lo da Seeger en Aprendizaje con datos etiquetados y no etiquetados :

Por ejemplo, suponga que X = Rd y la validez de la "suposición de clúster", es decir, que dos puntos x, x deberían tener la misma etiqueta t si hay una ruta entre ellos en X que pasa solo a través de regiones de P relativamente alta (x )

Sí, esto trae toda la idea de centroides y centros hacia abajo. Después de todo, estos son conceptos bastante arbitrarios si piensa en el hecho de que sus datos podrían estar dentro de un submanifold no lineal del espacio en el que realmente está operando.

Puede construir fácilmente un conjunto de datos sintéticos donde los modelos de mezcla se descomponen. Por ejemplo, este:un círculo dentro de una nube .

Larga historia corta: mediría la calidad de un algoritmo de agrupamiento en una forma mínima. El mejor algoritmo de agrupamiento es el que minimiza la distancia máxima de un punto a su vecino más cercano del mismo grupo mientras maximiza la distancia mínima de un punto a su vecino más cercano desde un grupo diferente.

También podría estar interesado en un algoritmo de agrupación teórica de información no paramétrica .

bayerj
fuente
¿Cómo hago para examinar un ajuste de clúster utilizando un enfoque minimax? Mi nivel de conocimiento de la agrupación es muy básico, por lo que en este momento solo estoy tratando de entender cómo comparar dos enfoques de agrupación diferentes.
celenius
¿Podría compartir el código R de la figura adjunta?
Andrej
@Andrej Mi conjetura es una nube gaussiana ( x<-rnorm(N);rnorm(N)->y) dividida en 3 partes por r (con una de ellas eliminada).
No conozco un algoritmo práctico que se ajuste de acuerdo con esa medida de calidad. Probablemente todavía quiera usar K-Means et al. Pero si la medida anterior se rompe, usted sabe que los datos que está viendo no son (¡todavía!) Adecuados para ese algoritmo.
bayerj
@Andrej No uso R (viene de ML en lugar de estadísticas :) pero lo que sugiere mbq parece estar bien.
bayerj