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 , R
se sugieren varios paquetes. He intentado usar dos de estos paquetes ( fpc
usando la kmeans
funció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.
fuente
Respuestas:
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).
Estas son las dos métricas más utilizadas. Consulte estos enlaces para comprender lo que significan:
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:
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 modoI1=0.3, 0.2, 0.5
yI2=0.3, 0.3, 0.4
manera 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: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.
fuente
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 :
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: .
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 .
fuente
x<-rnorm(N);rnorm(N)->y
) dividida en 3 partes por r (con una de ellas eliminada).