Estoy usando K-means para agrupar mis datos y estaba buscando una manera de sugerir un número de clúster "óptimo". Las estadísticas de brecha parecen ser una forma común de encontrar un buen número de clúster.
Por alguna razón, devuelve 1 como número de clúster óptimo, pero cuando miro los datos es obvio que hay 2 clústeres:
Así es como llamo gap 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 mejor manera de obtener un buen número de clúster?
fuente
xy
xy <- xy[, 1, drop=FALSE]
R
x
y
fuente
Tuve el mismo problema que el póster original. La documentación de R actualmente dice que la configuración original y predeterminada de d.power = 1 era incorrecta y debería reemplazarse por d.power: "El valor predeterminado, d.power = 1, corresponde a la implementación R" histórica ", mientras que d.power = 2 corresponde a lo que Tibshirani et al propusieron. Esto fue encontrado por Juan González, en 2016-02 ".
En consecuencia, cambiar d.power = 2 resolvió el problema para mí.
https://www.rdocumentation.org/packages/cluster/versions/2.0.6/topics/clusGap
fuente