Tengo datos ruidosos de dos variables como esta.
x1 <- rep(seq(0,1, 0.1), each = 3000)
set.seed(123)
y1 <- rep (c(0.2, 0.8, 0.3, 0.9, 0.65, 0.35,0.7,0.1,0.25, 0.3, 0.95), each = 3000)
set.seed(1234)
e1 = rnorm(length(x1), 0.07,0.07)
set.seed(1223)
e2 = rnorm(length(x1), 0.07,0.07)
set.seed(1334)
yn <- rnorm(20000, 0.5,0.9)
set.seed(2344)
xn <- rnorm(20000, 0.5,0.9)
y <- c(y1 + e1,yn)
x <- c(x1 + e2, xn)
plot(x,y, xlim=c(0,1.2), ylim = c(0,1.2), pch = ".", col = "gray40")
Puedo ver visualmente que hay 10 grupos potenciales en una mirada más cercana.
Sin embargo, toda la información tiene muchos puntos repartidos:
plot(x,y, pch = ".", col = "gray40")
Me gustaría hacer 10 grupos. Intenté el análisis de conglomerados K-means.
xm1 <- cbind(x,y)
cl1 <- kmeans(xm1, 10)
colrs <- c("red", "green", "blue1", "pink", "green4","tan",
"gray40", "yellow", "black", "purple")
plot(xm1, col = colrs[cl1$cluster], pch = ".", xlim=c(0,1.2), ylim = c(0,1.2))
plot(xm1, col = colrs[cl1$cluster], pch = ".")
¿Hay alguna forma (puede ser el kernel k-means, vecinos más cercanos) que pueda hacer más justicia a este tipo de datos? Si es así, ¿cómo puedo hacer esto?
r
machine-learning
clustering
rdorlearn
fuente
fuente
Respuestas:
Como sus datos parecen estar compuestos de mezclas gaussianas, intente el modelado de mezclas gaussianas (también conocido como: agrupación EM). Esto debería producir resultados muy superiores a k-means en este tipo de datos.
Si su "ruido" está distribuido uniformemente, también puede agregar una distribución uniforme a su modelo de mezcla.
Si sus datos están mucho menos limpios, considere usar DBSCAN, MeanShift, OPTICS, HDBSCAN *, ... - el clusterig basado en densidad parece ser apropiado para estos datos. DBSCAN también es muy tolerante al ruido (la "N" es para el ruido).
fuente
Te recomiendo que mires este artículo. Los autores proponen un método robusto donde se eliminan los valores atípicos y el resto de datos se agrupa. Por eso llamaron al método "recorte". También había un paquete R tclust pero de acuerdo con esto , se eliminó de CRAN. De todos modos, vale la pena leer el artículo.
fuente