6 votos

Fuzzy K-means - Tamaños de cluster

Estoy tratando de hacer clustering k-means difuso en un conjunto de datos utilizando la función cmeans (R) . El problema al que me enfrento es que los tamaños de los clusters no son los que me gustaría que fueran. Esto se hace calculando el cluster al que las observaciones están "más cerca".

cl$size
 [1]   108    31   192    51   722 18460    67  1584   419 17270

Aquí vemos que para 10 racimos tenemos dos racimos enormes y muchos muy pequeños. ¿Implica esto que dos conglomerados son óptimos de alguna manera? Si hago K-means regular los 10 segmentos se ven muy bien, con buenos tamaños y su intepretación tiene mucho sentido pero me gustaría probar con fuzzy correctamente. Acabo de empezar a explorar este clustering difuso así que cualquier ayuda y punteros son excesivamente bienvenidos.

1 votos

¿Por qué no probar el paquete EM Cluster ahora disponible en R? cran.r-project.org/web/packages/EMCluster/EMCluster.pdf En el momento de escribir Anony, el paquete EM cluster no estaba disponible en R, pero ahora se puede utilizar para lograr la agrupación EM.

11voto

Amadiere Puntos 5606

K-means y también fuzzy k-means (enfatizado por su estrategia "el ganador se lo lleva todo") asumen que los clusters tienen la mismo extensión espacial.

La mejor manera de explicarlo es observando un objeto $o$ casi a mitad de camino entre los centros de los clusters $c_i$ y $c_j$ . Si es ligeramente más cerca de $c_i$ se pondrá en el clúster $i$ , si es que lo es ligeramente más cerca de $c_j$ se pondrá en $j$ . Es decir, k-means asume que la división del conjunto de datos en el hiperplano ortogonal a la media entre los dos puntos (es decir, el límite de la celda de Voronoi) es la división adecuada y no tiene en cuenta en absoluto que los clusters pueden tener una extensión espacial diferente.

Agrupación EM (Wikipedia) con mezclas gaussianas es esencialmente una extensión de Fuzzy k-means que a) no asume que todas las dimensiones son igualmente importantes y b) los clusters pueden tener una extensión espacial diferente. Se podría simplificar eliminando la Mezcla Gaussiana (o al menos las covarianzas), y sólo mantener un peso de cluster. Este peso daría esencialmente el tamaño relativo de los clusters.

O puede que quiera buscar métodos más avanzados para agrupaciones de forma arbitraria como DBSCAN (Wikipedia) y ÓPTICA (Wikipedia) .

1voto

marbel Puntos 166

¿Por qué no usar fanny() del paquete de cluster? Puede encontrar los detalles del algoritmo en la sección de detalles de la ayuda.

Este es el código de ejemplo de ?fanny

## generate 10+15 objects in two clusters, plus 3 objects lying
## between those clusters.
x <- rbind(cbind(rnorm(10, 0, 0.5), rnorm(10, 0, 0.5)),
           cbind(rnorm(15, 5, 0.5), rnorm(15, 5, 0.5)),
           cbind(rnorm( 3,3.2,0.5), rnorm( 3,3.2,0.5)))
fannyx <- fanny(x, 2)
## Note that observations 26:28 are "fuzzy" (closer to # 2):
fannyx
summary(fannyx)
plot(fannyx)

(fan.x.15 <- fanny(x, 2, memb.exp = 1.5)) # 'crispier' for obs. 26:28
(fanny(x, 2, memb.exp = 3))               # more fuzzy in general

data(ruspini)
f4 <- fanny(ruspini, 4)
stopifnot(rle(f4$clustering)$lengths == c(20,23,17,15))
plot(f4, which = 1)
## Plot similar to Figure 6 in Stryuf et al (1996)
plot(fanny(ruspini, 5))

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