Grupowanie zaszumionych danych lub wartości odstających


9

Mam zaszumione dane dwóch takich zmiennych.

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") 

Widzę, że przy bliższym przyjrzeniu jest 10 potencjalnych klastrów.

wprowadź opis zdjęcia tutaj

Jednak całe dane mają wiele punktów:

plot(x,y,   pch = ".", col = "gray40") 

wprowadź opis zdjęcia tutaj

Chciałbym stworzyć 10 klastrów. Próbowałem analizy skupień metodą K-średnich.

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))

wprowadź opis zdjęcia tutaj

plot(xm1, col = colrs[cl1$cluster], pch = ".")

wprowadź opis zdjęcia tutaj

Czy w każdym razie (może to być k-średnich jądra, najbliżsi sąsiedzi), które mogą poprawić sprawiedliwość tego typu danych. Jeśli tak, jak mogę to zrobić?


1
Co jest nie tak z tym, co masz do tej pory? Dlaczego to, co masz ( analiza k-średnich klastrów ) jest niedopuszczalne?
Steve S

Odpowiedzi:


7

Ponieważ wydaje się, że twoje dane składają się z mieszanin Gaussa, spróbuj Gaussian Mixture Modeling (alias: EM clustering). Powinno to dać wyniki znacznie przewyższające średnie k dla tego typu danych.

Jeśli Twój „hałas” jest równomiernie rozłożony, możesz również dodać równomierny rozkład do swojego modelu mieszanki.

Jeśli twoje dane są znacznie mniej czyste, rozważ użycie DBSCAN, MeanShift, OPTICS, HDBSCAN *, ... - klastrowanie oparte na gęstości wydaje się odpowiednie dla tych danych. DBSCAN jest również bardzo tolerancyjny na hałas („N” oznacza hałas).


4

Polecam zajrzeć do tego artykułu. Autorzy proponują solidną metodę, w której wartości odstające są usuwane, a reszta danych jest grupowana. Dlatego nazwali metodę „przycinaniem”. Istniał również pakiet R tclust, ale zgodnie z tym został on usunięty z CRAN. W każdym razie artykuł jest wart przeczytania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.