Chọn cụm cho k-nghĩa: trường hợp 1 cụm


9

Có ai biết một phương pháp tốt để xác định xem việc phân cụm bằng kmeans có phù hợp không? Đó là, nếu mẫu của bạn thực sự đồng nhất thì sao? Tôi biết một cái gì đó giống như một mô hình hỗn hợp (thông qua mclust trong R) sẽ cung cấp số liệu thống kê phù hợp cho trường hợp cụm 1: k, nhưng có vẻ như tất cả các kỹ thuật để đánh giá kmeans cần ít nhất 2 cụm.

Có ai biết một kỹ thuật để so sánh các trường hợp cụm 1 và 2 cho kmeans không?

Câu trả lời:


10

Thống kê khoảng cách là một cách tuyệt vời để làm điều này; Tibshirani, Hastie & Walther (2001).

http://stat.ethz.ch/R-manual/R-devel/l Library /cluster / html /clusGap.html - Gói R có liên quan.

Ý tưởng là nó thực hiện một bài kiểm tra giả thuyết tuần tự về việc phân cụm dữ liệu của bạn cho K = 1,2,3, ... so với giả thuyết khống về tiếng ồn ngẫu nhiên, tương đương với một cụm. Sức mạnh đặc biệt của nó là nó cung cấp cho bạn một dấu hiệu đáng tin cậy về việc K = 1, tức là không có cụm.

Đây là một ví dụ, tôi đã kiểm tra một số dữ liệu thiên văn học vài ngày trước khi nó xảy ra - cụ thể là từ một cuộc khảo sát ngoại hành tinh quá cảnh. Tôi muốn biết bằng chứng nào cho các cụm (lồi). Dữ liệu của tôi là 'quá cảnh'

library(cluster)
cgap <- clusGap(transit, FUN=kmeans, K.max=kmax, B=100)
for(k in 1:(kmax-1)) {
    if(cgap$Tab[k,3]>cgap$Tab[(k+1),3]-cgap$Tab[(k+1),4]) {print(k)}; 
    break;
}

Với thống kê khoảng cách, bạn đang tìm kiếm giá trị đầu tiên của K trong đó thử nghiệm 'thất bại', tức là thống kê khoảng cách giảm đáng kể. Vòng lặp ở trên sẽ in như vậy, tuy nhiên chỉ đơn giản là vẽ sơ đồ cgap cung cấp cho bạn hình sau:
nhập mô tả hình ảnh ở đây Xem mức độ giảm đáng kể trong Khoảng cách từ k = 1 đến k = 2, có nghĩa là trên thực tế không có cụm (ví dụ 1 cụm).


Làm thế nào để làm tương tự cho phân cụm phân cấp với liên kết đơn? Bạn có thể vui lòng giải thích đối số FUN của clusGap? Tôi đã chạy dòng dưới đây cho phân cấp kmax = 20 cgap <- clusGap (cluster_feat_base [, 2: ncol (cluster_feat_base)], FUN = hclust, K.max = kmax, B = 100). Nhưng nó đưa ra một lỗi cho biết Lỗi trong FUNcluster (X, kk, ...): phương pháp phân cụm không hợp lệ 2
GeorgeOfTheRF

4

Bạn cũng có thể thử một phương pháp gần đây hơn: A. Kalogeratos và A.Likas, Dip-nghĩa: một phương pháp phân cụm gia tăng để ước tính số lượng cụm , NIPS 2012.

Ý tưởng là sử dụng kiểm tra giả thuyết thống kê cho tính không tương đồng trên các vectơ chứa sự tương đồng / khoảng cách giữa một điểm và phần còn lại của các điểm của tập hợp. Thử nghiệm được thực hiện bằng cách sử dụng thử nghiệm nhúng Hartigan-Hartigan , Ann. Thống kê. 13 (1): 70-84.

Phương thức này bắt đầu với tất cả các tập dữ liệu dưới dạng một cụm và tăng dần nó miễn là giả thuyết không đồng nhất bị bác bỏ (tức là có nhiều hơn một cụm).

Vì vậy, phương pháp này sẽ cho biết liệu có nhiều hơn một cụm trong dữ liệu (câu hỏi của bạn) hay không, nhưng nó cũng có thể cung cấp phân cụm cuối cùng.

Ở đây bạn có thể tìm thấy một số mã trong Matlab .


0

Giả sử tôi đang xem xét cùng một ví dụ,

Tmộtb[k,3]>cgmộtp

Làm cách nào tôi có thể tập hợp các phần tử của cụm tương ứng với giải pháp phân cụm tốt nhất dựa trên thống kê khoảng cách tối đa? Vì vậy, tôi có thể sử dụng nó để phân tích sâu hơn về từng cụm.

Tôi biết có một lệnh gọi là tập hợp con. Không có vấn đề khi sử dụng lệnh này khi chúng tôi đã đưa ra số lượng cụm chúng tôi muốn. Nhưng làm thế nào để tập hợp nó khi chúng ta muốn tập hợp con dựa trên k tối ưu thu được bằng cách sử dụng khoảng cách (nói ngắn gọn là các phần tử tập hợp của cụm nếu có một vòng lặp)

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.