22 votos

¿Por qué el estadístico gap de k-means sugiere un clúster, aunque es evidente que hay dos?

Estoy utilizando K-means para agrupar mis datos y estaba buscando una forma de sugerir un número de cluster "óptimo". La estadística de brechas parece ser una forma común de encontrar un buen número de clústeres.

Por alguna razón devuelve 1 como número de cluster óptimo, pero cuando miro los datos es obvio que hay 2 clusters:

1

Así es como llamo a la brecha en R:

gap <- clusGap(data, FUN=kmeans, K.max=10, B=500)
with(gap, maxSE(Tab[,"gap"], Tab[,"SE.sim"], method="firstSEmax"))

El conjunto de resultados:

> Number of clusters (method 'firstSEmax', SE.factor=1): 1
          logW   E.logW           gap    SE.sim
[1,]  5.185578 5.085414 -0.1001632148 0.1102734
[2,]  4.438812 4.342562 -0.0962498606 0.1141643
[3,]  3.924028 3.884438 -0.0395891064 0.1231152
[4,]  3.564816 3.563931 -0.0008853886 0.1387907
[5,]  3.356504 3.327964 -0.0285393917 0.1486991
[6,]  3.245393 3.119016 -0.1263766015 0.1544081
[7,]  3.015978 2.914607 -0.1013708665 0.1815997
[8,]  2.812211 2.734495 -0.0777154881 0.1741944
[9,]  2.672545 2.561590 -0.1109558011 0.1775476
[10,] 2.656857 2.403220 -0.2536369287 0.1945162

¿Estoy haciendo algo mal o alguien conoce una forma mejor de obtener un buen número de racimo?

43voto

jldugger Puntos 7490
  1. ¿Realmente quieres decir círculo, en lugar de esfera?

  2. Una parametrización con tasa de aumento constante a lo largo de la $z$ eje es $(x,y,z)=\left( \sqrt{1-t^2}\cos (a \pi t), \: \sqrt{1-t^2} \sin (a \pi t), \: t \right), \: 0<t<1$ donde el $a$ controla el número de revoluciones. Esto es con $a=5$ :

Spiral with a=5

Se puede deducir esto observando que $x \propto \cos(\cdot) $ y $y \propto \sin (\cdot)$ . Si $z$ es aumentar de forma lineal de -1 a +1 podemos dejar que $z=t$ para $t=-1 \dots 1$ . Por último, dado que la espiral se encuentra en la superficie de una esfera $x^2+y^2+z^2=1$ por lo que se deduce que $x=\sqrt{1-t^2}\cos (a \pi t)$ y $y=\sqrt{1-t^2} \sin (a \pi t)$

0 votos

Muy bien, gracias por la explicación. Por cierto: ¿conoces alguna otra métrica de cluster como la estadística de brecha? He encontrado algunas, pero no sé cuál se suele utilizar con k-means.

0 votos

+1. Muy buena demostración, y es impresionante que parezca que has digitalizado la figura de OP para obtener los mismos datos.

3 votos

@amoeba He observado el gráfico de dispersión y he escrito las coordenadas exactamente como se ve aquí (es decir, los dígitos involucrados eran mis propios dedos :-)). A veces el enfoque más simple es eficiente.

13voto

usεr11852 Puntos 5514

Creo que no se entiende nada mal en su uso de la estadística GAP. Sin embargo, creo que está parcialmente engañar por la escala de los datos en la visualización. Usted véase dos racimos, pero en realidad el x es bastante pequeño en comparación con el y dirección. En base a eso se esperaría dos alargado racimos. Sin embargo, parece que un modo de varianza domina al otro. Como la estadística GAP asume un modelo nulo con un único componente ( $K=1$ ) y luego intenta rechazar este modelo por uno alternativo con $K>1$ lo que se observa es la incapacidad de rechazar el nulo. Tenga en cuenta que la incapacidad de rechazar la hipótesis nula no la convierte en verdadera . El documento metodológico que describe la estadística GAP que está disponible en línea si quiere comprobar más los detalles técnicos.

Ejecuto su modelo utilizando un Modelo de Mezcla Gaussiana (GMM - una generalización de $k$ -significa, ver este hilo para más información al respecto). Es cierto que también en ese caso la estadística GAP sugería un único clúster. El BIC también sugería un único clúster. El AIC sugiere 4 clusters (¡!), siendo esto una clara señal de que empezamos a sobreajustar. La muestra utilizada no es extremadamente grande; tiene 21 puntos en los que un modo de varianza domina sobre el otro. Es un poco exagerado tener dos conglomerados bidimensionales (es decir, ajustar dos medias bidimensionales y dos $2 \times 2$ matrices de covarianza) con sólo 21 puntos bidimensionales. :) (En el caso de $k$ -significa que su matriz de covarianza está más estructurada (no mira las covarianzas) pero no me centraría en ese asunto aquí).

EDIT: Sólo para completar: @whuber demostró que dos clusters aparecerían como óptimos en $k$ -si uno estandariza sus datos; el criterio GAP aplicado al ajuste del GMM también dará $K=2$ como el número óptimo de conglomerados si se normalizan los datos.

1 votos

+1 Has visto el problema potencial al leer detenidamente la trama: ¡bien hecho! El enlace al artículo de Hastie también es un buen apoyo para tu respuesta.

0 votos

@whuber: Tuvimos esta discusión sobre las escalas, ¿no? :)

0 votos

Era un contexto tan diferente No hice la conexión ... .

0voto

Brad Smith Puntos 114

Tuve el mismo problema que el cartel original. La documentación de R actualmente dice que la configuración original y por defecto de d.power = 1 era incorrecta y debe ser reemplazada por d.power: "El valor por defecto, d.power = 1, corresponde a la implementación "histórica" de R, mientras que d.power = 2 corresponde a lo que Tibshirani et al habían propuesto. Esto fue encontrado por Juan González, en 2016-02".

En consecuencia, el cambio de d.power = 2 me solucionó el problema.

https://www.rdocumentation.org/packages/cluster/versions/2.0.6/topics/clusGap

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