Phân cụm dữ liệu ồn ào hoặc với các ngoại lệ


9

Tôi có một dữ liệu ồn ào của hai biến như thế này.

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

Tôi có thể thấy trực quan có 10 cụm tiềm năng trong cái nhìn gần hơn.

nhập mô tả hình ảnh ở đây

Tuy nhiên, toàn bộ dữ liệu có nhiều điểm lan truyền:

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

nhập mô tả hình ảnh ở đây

Tôi muốn làm 10 cụm. Tôi đã thử phân tích cụm K-nghĩa.

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

nhập mô tả hình ảnh ở đây

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

nhập mô tả hình ảnh ở đây

Có cách nào không (có thể là kernel k-mean, hàng xóm gần nhất) có thể công bằng hơn với loại dữ liệu này. Nếu vậy làm thế nào tôi có thể làm điều này?


1
Có gì sai với những gì bạn có cho đến nay? Tại sao những gì bạn có ( phân tích cụm k-nghĩa ) không được chấp nhận?
Steve S

Hãy xem các thuật toán dbscan hoặc quang học (xem en.wikibooks.org/wiki/Data_Mining_Alacticms_In_R/Clustering/ .)
Giorgio Speesato

Câu trả lời:


6

Vì dữ liệu của bạn dường như được tạo thành từ các hỗn hợp Gaussian, hãy thử Mô hình hỗn hợp Gaussian (hay còn gọi là cụm EM). Điều này sẽ mang lại kết quả vượt trội hơn nhiều so với phương tiện k trên loại dữ liệu này.

Nếu "tiếng ồn" của bạn được phân phối đồng đều, bạn cũng có thể thêm phân phối đồng đều vào mô hình hỗn hợp của mình.

Nếu dữ liệu của bạn không sạch sẽ hơn nhiều, hãy cân nhắc sử dụng DBSCAN, MeanShift, OPTICS, HDBSCAN *, ... - cụm sao dựa trên mật độ có vẻ phù hợp với dữ liệu này. DBSCAN cũng rất chịu được tiếng ồn ("N" là tiếng ồn).


3

Tôi khuyên bạn nên nhìn vào này bài viết. Các tác giả đề xuất phương pháp mạnh mẽ trong đó các ngoại lệ được loại bỏ và phần còn lại của dữ liệu được nhóm lại. Đó là lý do tại sao họ gọi phương pháp "cắt tỉa". Ngoài ra còn có một gói R tclust nhưng theo điều này , nó đã bị xóa khỏi CRAN. Dù sao, bài viết là đáng đọc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.