Estou usando o K-means para agrupar meus dados e estava procurando uma maneira de sugerir um número de cluster "ideal". As estatísticas de gap parecem ser uma maneira comum de encontrar um bom número de cluster.
Por alguma razão, ele retorna 1 como o número ideal do cluster, mas quando olho para os dados, é óbvio que existem 2 clusters:
É assim que chamo de gap no R:
gap <- clusGap(data, FUN=kmeans, K.max=10, B=500)
with(gap, maxSE(Tab[,"gap"], Tab[,"SE.sim"], method="firstSEmax"))
O 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
Estou fazendo algo errado ou alguém conhece uma maneira melhor de obter um bom número de cluster?
fonte
xy
xy <- xy[, 1, drop=FALSE]
R
x
y
fonte
Eu tive o mesmo problema que o pôster original. Atualmente, a documentação R diz que a configuração original e padrão de d.power = 1 estava incorreta e deve ser substituída por d.power: "O padrão, d.power = 1, corresponde à implementação R" histórica ", enquanto que d.power = 2 corresponde ao que Tibshirani et al propuseram. Foi encontrado por Juan Gonzalez em 02/02/2016 ".
Conseqüentemente, mudar d.power = 2 resolveu o problema para mim.
https://www.rdocumentation.org/packages/cluster/versions/2.0.6/topics/clusGap
fonte