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