Làm thế nào để biết liệu dữ liệu được cụm cụm có đủ để các thuật toán phân cụm tạo ra kết quả có ý nghĩa hay không?


78

Làm thế nào bạn biết liệu dữ liệu (chiều cao) của bạn thể hiện đủ phân cụm sao cho kết quả từ kmeans hoặc thuật toán phân cụm khác thực sự có ý nghĩa?

Đối với thuật toán k-mean nói riêng, mức giảm của phương sai trong cụm nên có bao nhiêu để các kết quả phân cụm thực sự có ý nghĩa (và không giả)?

Việc phân cụm có nên rõ ràng khi một dạng dữ liệu giảm kích thước được vẽ và kết quả từ kmeans (hoặc các phương pháp khác) là vô nghĩa nếu phân cụm không thể được hiển thị?


1
Các chữ số viết tay tạo ra một thử nghiệm tốt cho phân cụm: người ta sẽ mong đợi 10 cụm được phân tách tốt, nhưng điều này cho thấy không có đầu gối nào ở k = 10, ít nhất là trong số liệu Euclide trong 64d.
chối


2
Câu hỏi này có liên quan đến một mức độ nào đó cho câu hỏi làm thế nào để kiểm tra tính hợp lệ của kết quả phân cụm của bạn và cách chọn phương pháp "tốt hơn". Xem ví dụ: stats.stackexchange.com/q/195456/3277 .
ttnphns

Câu trả lời:


77

Về k-nghĩa cụ thể, bạn có thể sử dụng số liệu thống kê Gap. Về cơ bản, ý tưởng là tính toán mức độ tốt của biện pháp phân cụm dựa trên độ phân tán trung bình so với phân phối tham chiếu cho số cụm tăng dần. Thông tin thêm có thể được tìm thấy trong bài báo gốc:

Tibshirani, R., Walther, G. và Hastie, T. (2001). Ước tính số lượng cụm trong một tập dữ liệu thông qua thống kê khoảng cách . Thống kê JR. Sóc. B, 63 (2): 411-423.

Câu trả lời mà tôi đã cung cấp cho một câu hỏi liên quan nêu bật các chỉ số hiệu lực chung khác có thể được sử dụng để kiểm tra xem một tập dữ liệu đã cho có thể hiện một loại cấu trúc nào đó không.

Khi bạn không có bất kỳ ý tưởng nào về những gì bạn sẽ tìm thấy nếu chỉ có tiếng ồn, một cách tiếp cận tốt là sử dụng sự ổn định của mô hình và nghiên cứu cụm. Nói cách khác, lấy mẫu lại dữ liệu của bạn (thông qua bootstrap hoặc bằng cách thêm nhiễu nhỏ vào nó) và tính toán "độ gần" của các phân vùng kết quả, được đo bằng các điểm tương đồng của Jaccard . Nói tóm lại, nó cho phép ước tính tần suất các cụm tương tự được phục hồi trong dữ liệu. Phương pháp này có sẵn trong gói fpc R như clusterboot(). Nó nhận đầu vào là dữ liệu thô hoặc ma trận khoảng cách và cho phép áp dụng một loạt các phương thức phân cụm (phân cấp, phương tiện k, phương thức mờ). Phương pháp được thảo luận trong các tài liệu tham khảo được liên kết:

Hennig, C. (2007) Đánh giá cụm sao về độ ổn định của cụm . Thống kê tính toán và phân tích dữ liệu , 52, 258-271.

Hennig, C. (2008) Điểm hòa tan và độ mạnh cô lập: tiêu chí độ mạnh cho các phương pháp phân tích cụm tổng quát . Tạp chí phân tích đa biến , 99, 1154-1176.

Dưới đây là một minh chứng nhỏ với thuật toán k-mean.

sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
            sim.xy(100, c(2.5,0), c(.4,.2)),
            sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
                       clustermethod=kmeansCBI,
                       krange=3, seed=15555)

Kết quả khá khả quan trong bộ dữ liệu nhân tạo (và có cấu trúc tốt) này vì không có cụm nào trong số ba cụm ( krange) được hòa tan trên các mẫu và độ tương tự Jaccard cụm trung bình là> 0,95 cho tất cả các cụm.

Dưới đây là kết quả trên 20 mẫu bootstrap. Có thể thấy, các đơn vị thống kê có xu hướng nằm trong cùng một cụm, với một vài ngoại lệ cho những quan sát nằm ở giữa.

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

Tất nhiên, bạn có thể mở rộng ý tưởng này đến bất kỳ chỉ số hợp lệ nào: chọn một loạt các quan sát mới bằng bootstrap (có thay thế), tính toán thống kê của bạn (ví dụ: chiều rộng hình bóng, tương quan cophenetic, gamma của Hubert, trong tổng bình phương) cho một phạm vi số cụm (ví dụ: 2 đến 10), lặp lại 100 hoặc 500 lần và xem ô vuông của thống kê của bạn như là một hàm của số cụm.

Đây là những gì tôi nhận được với cùng một bộ dữ liệu mô phỏng, nhưng sử dụng phân cụm theo phân cấp của Ward và xem xét mối tương quan về cophenetic (đánh giá mức độ thông tin khoảng cách được tái tạo trong các phân vùng kết quả) và độ rộng hình bóng (một phép đo kết hợp đánh giá tính đồng nhất trong cụm và giữa các cụm tách cụm).

Tương quan cophenetic nằm trong khoảng từ 0,6267 đến 0,7511 với giá trị trung bình là 0,7031 (500 mẫu bootstrap). Chiều rộng hình bóng có vẻ là tối đa khi chúng tôi xem xét 3 cụm (trung vị 0.8408, phạm vi 0,7371-0,8769).

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


Cảm ơn câu trả lời RẤT thông tin này! Âm thanh như clusterboot chính xác là những gì tôi đang tìm kiếm. Cảm ơn bạn cũng đã bao gồm các liên kết.
xuexue

1
Một số số ma thuật để giải thích các giá trị hình bóng: stats.stackexchange.com/a/12923/12359
Franck Dernoncourt

1
Lệnh bạn đã sử dụng để xây dựng các biểu đồ đó trong gif là gì?
Travis Heeter

2
@Travis Các hình ảnh được lưu dưới dạng các tệp PNG riêng biệt, sau đó được chuyển đổi thành tệp GIF hoạt hình bằng ImageMagick . Xem thêm bài này .
chl

10

Một cách để nhanh chóng hình dung liệu dữ liệu chiều cao có thể phân cụm đủ hay không là sử dụng phương pháp nhúng Stochastic Neighbor ( t-SNE ). Nó chiếu dữ liệu lên một số không gian chiều thấp (ví dụ 2D, 3D) và thực hiện công việc khá tốt trong việc giữ cấu trúc cụm nếu có.

Ví dụ: tập dữ liệu MNIST :

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

Olivetti phải đối mặt với tập dữ liệu:

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


1
Có cách nào để áp dụng các khuôn mặt (hoặc bất kỳ hình ảnh nào) trong R không?
Travis Heeter

1
@TravisHeeter Tôi không biết
Franck Dernoncourt

4
Không cụm dữ liệu dự kiến ​​tSNE. Xem, ví dụ: câu trả lời này: stats.stackexchange.com/a/264647/7828
Anony-Mousse

9

Chắc chắn, khả năng phân biệt trực quan các cụm trong một số kích thước có thể vẽ được là một tiêu chí đáng nghi ngờ về tính hữu ích của thuật toán phân cụm, đặc biệt là nếu việc giảm kích thước này được thực hiện độc lập với chính cụm đó (nghĩa là: trong một nỗ lực vô ích để tìm hiểu xem phân cụm sẽ hoạt động).

Trong thực tế, các phương pháp phân cụm có giá trị cao nhất của chúng trong việc tìm kiếm các cụm mà mắt / tâm trí của con người không thể nhìn thấy các cụm.

Câu trả lời đơn giản là: thực hiện phân cụm, sau đó tìm hiểu xem nó có hoạt động không (với bất kỳ tiêu chí nào bạn quan tâm, xem thêm câu trả lời của @ Jeff).


1
Vâng, và các cụm không nhất thiết phải là các nhóm điểm tròn đẹp, mà về cơ bản là những gì kmeans giả định.
Wayne

@chl Bạn đã sản xuất hình ảnh hoạt hình này với R?
Stéphane Laurent

7

Khi nào thì kết quả có ý nghĩa ? Cụ thể kết quả k-nghĩa là gì?

Thực tế là k-có nghĩa là tối ưu hóa một thống kê toán học nhất định. Không có "ý nghĩa" liên quan đến điều này.

Cụ thể trong dữ liệu chiều cao, câu hỏi đầu tiên nên là: khoảng cách Euclide có còn ý nghĩa không? Nếu không, đừng sử dụng phương tiện k. Khoảng cách Euclide có ý nghĩa trong thế giới vật lý, nhưng nó nhanh chóng mất đi ý nghĩa khi bạn có dữ liệu khác. Cụ thể, khi bạn chuyển đổi dữ liệu một cách giả tạo thành một không gian vectơ, có lý do nào khiến nó phải là Euclide không?

Nếu bạn lấy tập dữ liệu "trung thành cũ" cổ điển và chạy phương tiện k trên nó mà không cần chuẩn hóa, nhưng với khoảng cách Euclide thuần túy, nó đã không còn ý nghĩa nữa. EM, trong thực tế sử dụng một số dạng khoảng cách Mahalanobis "cụm cục bộ", sẽ hoạt động tốt hơn rất nhiều. Đặc biệt, nó thích nghi với các trục có quy mô rất khác nhau.

Btw, một thế mạnh quan trọng của k-mean là nó thực sự sẽ luôn luôn phân vùng dữ liệu, bất kể nó trông như thế nào. Bạn có thể sử dụng phương tiện k để phân vùng nhiễu đồng nhất thành các cụm k . Người ta có thể tuyên bố rằng rõ ràng, cụm k-nghĩa là không có ý nghĩa. Hoặc người ta có thể chấp nhận điều này như: người dùng muốn phân vùng dữ liệu để giảm thiểu khoảng cách Euclide bình phương, mà không yêu cầu các cụm phải "có ý nghĩa".


@ Anony-Mousse Và trường hợp sử dụng cho 'phân vùng đồng nhất tiếng ồn thành cụm k'?
CodeFarmer

Chẳng có ai. Vấn đề là k-mean không quan tâm, nó sẽ phân vùng dữ liệu thống nhất thành "cụm", tức là nó tạo ra các cụm vô nghĩa.
Anony-Mousse

6

Tôi mới bắt đầu sử dụng thuật toán phân cụm gần đây, vì vậy hy vọng ai đó hiểu biết hơn có thể cung cấp câu trả lời đầy đủ hơn, nhưng đây là một số suy nghĩ:

"Có ý nghĩa", như tôi chắc chắn bạn biết, rất chủ quan. Vì vậy, việc phân cụm có đủ tốt hay không hoàn toàn phụ thuộc vào lý do tại sao bạn cần phân cụm ở vị trí đầu tiên. Nếu bạn đang cố gắng dự đoán thành viên nhóm, có khả năng bất kỳ phân cụm nào sẽ làm tốt hơn cơ hội (và không tệ hơn), vì vậy kết quả sẽ có ý nghĩa ở một mức độ nào đó.

Nếu bạn muốn biết độ tin cậy của cụm này, bạn cần một số liệu để so sánh nó với. Nếu bạn có một tập hợp các thực thể có thành viên đã biết, bạn có thể sử dụng phân tích phân biệt để xem dự đoán tốt như thế nào. Nếu bạn không có một tập hợp các thực thể với các thành viên đã biết, bạn sẽ phải biết phương sai nào là điển hình của các cụm trong lĩnh vực của bạn. Các thuộc tính vật lý của các thực thể có phạm trù cứng nhắc có thể có phương sai trong nhóm thấp hơn nhiều so với dữ liệu tâm lý trên người, nhưng điều đó không nhất thiết làm cho cụm 'trở nên tồi tệ hơn'.

Câu hỏi thứ hai của bạn ám chỉ đến 'Tôi nên chọn giá trị nào của k?' Một lần nữa, không có câu trả lời khó ở đây. Trong trường hợp không có bất kỳ nhóm danh mục ưu tiên nào, bạn có thể muốn giảm thiểu số lượng cụm trong khi cũng giảm thiểu phương sai cụm trung bình. Một cách tiếp cận đơn giản có thể là vẽ biểu đồ 'số cụm' so với 'phương sai cụm trung bình' và tìm "khuỷu tay" - trong đó việc thêm nhiều cụm không có tác động đáng kể đến phương sai cụm của bạn.

Tôi sẽ không nói rằng kết quả từ k-mean là vô nghĩa nếu nó không thể được hiển thị, nhưng nó chắc chắn sẽ hấp dẫn khi các cụm được nhìn thấy rõ ràng. Điều này, một lần nữa, chỉ dẫn trở lại câu hỏi: tại sao bạn cần phải phân cụm, và bạn cần phải đáng tin cậy như thế nào? Cuối cùng, đây là một câu hỏi mà bạn cần trả lời dựa trên cách bạn sẽ sử dụng dữ liệu.


3

Để biết liệu một cụm có ý nghĩa hay không, bạn có thể chạy một thuật toán để đếm số lượng cụm và xem liệu nó có xuất ra thứ gì lớn hơn 1 không.

kk

kk

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.