Ich habe verrauschte Daten von zwei Variablen wie diesen.
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")
Ich kann visuell sehen, dass es bei näherer Betrachtung potenzielle 10 Cluster gibt.
Die gesamten Daten haben jedoch viele Punkte verteilt:
plot(x,y, pch = ".", col = "gray40")
Ich möchte 10 Cluster machen. Ich habe versucht, K-Mittel-Cluster-Analyse.
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 = ".")
Gibt es sowieso (kann Kernel k-means, nächste Nachbarn sein), die dieser Art von Daten mehr gerecht werden können. Wenn ja, wie kann ich das machen?
r
machine-learning
clustering
rdorlearn
quelle
quelle
Antworten:
Versuchen Sie es mit Gaußscher Mischungsmodellierung (auch bekannt als: EM-Clustering), da Ihre Daten aus Gaußschen Gemischen zu bestehen scheinen . Dies sollte zu Ergebnissen führen, die den k-Mitteln für diesen Datentyp weit überlegen sind.
Wenn Ihr "Rauschen" gleichmäßig verteilt ist, können Sie Ihrem Mischungsmodell auch eine gleichmäßige Verteilung hinzufügen.
Wenn Ihre Daten viel weniger sauber sind, sollten Sie DBSCAN, MeanShift, OPTICS, HDBSCAN *, ... verwenden. - Dichte-basiertes Clusterig scheint für diese Daten geeignet zu sein. DBSCAN ist auch sehr tolerant gegenüber Rauschen (das "N" steht für Rauschen).
quelle
Ich empfehle Ihnen, diesen Artikel zu lesen. Die Autoren schlagen eine robuste Methode vor, bei der die Ausreißer entfernt und der Rest der Daten geclustert wird. Deshalb nannten sie die Methode "Trimmen". Es gab auch ein R - Paket tclust aber nach diesem , aus CRAN wurde entfernt. Auf jeden Fall ist der Artikel lesenswert.
quelle