Khởi tạo trung tâm K-mean bằng các mẫu con ngẫu nhiên của tập dữ liệu?


13

Nếu tôi có một tập dữ liệu nhất định, việc khởi tạo các trung tâm cụm bằng cách sử dụng các mẫu ngẫu nhiên của tập dữ liệu đó sẽ thông minh đến mức nào?

Ví dụ, giả sử tôi muốn 5 clusters. Tôi 5 random samplesnói, size=20%của các dữ liệu ban đầu. Sau đó tôi có thể lấy giá trị trung bình của từng mẫu trong số 5 mẫu ngẫu nhiên này và sử dụng các phương tiện đó làm 5 trung tâm cụm ban đầu của mình không? Tôi không biết tôi đã đọc nó ở đâu nhưng tôi muốn biết các bạn nghĩ gì về ý tưởng này.


CẬP NHẬT: Vui lòng xem chủ đề này Khởi tạo phân cụm K-nghĩa: các phương thức hiện có là gì? cho các cuộc thảo luận chung về các phương pháp khởi tạo khác nhau.


11
Nếu bạn chia ngẫu nhiên mẫu thành 5 mẫu phụ, 5 phương tiện của bạn sẽ gần như trùng khớp. Ý nghĩa của việc làm cho các điểm gần như vậy các trung tâm cụm ban đầu là gì? Trong hầu hết các triển khai K-mean, việc lựa chọn mặc định các trung tâm cụm ban đầu dựa trên ý tưởng ngược lại: tìm 5 điểm cách xa nhau nhất và biến chúng thành trung tâm ban đầu.
ttnphns

2
@ttnphns Đây sẽ là một câu trả lời hay.

2
Tôi nghĩ sẽ tốt hơn nhiều nếu chọn trung bình tổng thể làm một điểm và chọn những điểm khác ở xa trung tâm đó theo nhiều hướng khác nhau.
Michael R. Chernick

1
Có ý nghĩa. Làm thế nào tôi đi xung quanh về việc tìm kiếm 5 điểm cách xa nhau? Cảm ơn bạn!
JEquihua

@JEquihua, tôi đã đăng bình luận của mình dưới dạng câu trả lời và thêm chi tiết mà bạn đang yêu cầu.
ttnphns

Câu trả lời:


16

Nếu bạn chia ngẫu nhiên mẫu thành 5 mẫu phụ, 5 phương tiện của bạn sẽ gần như trùng khớp. Ý nghĩa của việc làm cho các điểm gần như vậy các trung tâm cụm ban đầu là gì?

Trong nhiều triển khai K-mean, việc lựa chọn mặc định các trung tâm cụm ban đầu dựa trên ý tưởng ngược lại: tìm 5 điểm cách xa nhau nhất và biến chúng thành trung tâm ban đầu. Bạn có thể hỏi những gì có thể là cách để tìm những điểm xa nhau? Đây là những gì K-mean của SPSS đang làm cho điều đó:

Lấy bất kỳ trường hợp k (điểm) nào của bộ dữ liệu làm trung tâm ban đầu. Tất cả các trường hợp còn lại đang được kiểm tra khả năng thay thế những trường hợp như các trung tâm ban đầu, theo các điều kiện sau:

  • a) Nếu trường hợp ở xa trung tâm gần nó hơn khoảng cách giữa hai gần nhất với nhau, thì trường hợp đó thay thế trung tâm của hai trung tâm gần hơn.
  • b) Nếu trường hợp cách xa trung tâm thứ 2 gần nó nhất so với khoảng cách giữa trung tâm gần nó nhất và trung tâm gần nhất với trung tâm này, thì trường hợp thay thế trung tâm gần nó nhất.

Nếu điều kiện (a) không thỏa mãn, điều kiện (b) được kiểm tra; nếu nó không được thỏa mãn thì trường hợp đó không trở thành một trung tâm. Do kết quả của các trường hợp như vậy, chúng tôi thu được k trường hợp tối đa trong đám mây trở thành trung tâm ban đầu. Kết quả của thuật toán này, mặc dù đủ mạnh, nhưng không hoàn toàn không nhạy cảm với lựa chọn bắt đầu của "bất kỳ trường hợp k " nào và theo thứ tự sắp xếp các trường hợp trong tập dữ liệu; vì vậy, một số nỗ lực bắt đầu ngẫu nhiên vẫn được chào đón, vì nó luôn luôn như vậy với K-mean.

Xem câu trả lời của tôi với một danh sách các phương thức khởi tạo phổ biến cho phương tiện k. Phương pháp phân tách thành các mẫu con ngẫu nhiên (được tôi và những người khác chia sẻ ở đây) cũng như phương pháp được mô tả được sử dụng bởi SPSS - cũng nằm trong danh sách.


1
Khi tôi đã thực hiện những gì bạn mô tả, tôi có thể sử dụng thống kê nào để xác định điểm khởi tạo nào dẫn đến phân vùng tốt hơn? Cám ơn bạn vì tất cả.
JEquihua

Sử dụng điểm tối đa làm trung tâm ban đầu một lần không đảm bảo có được phân vùng tốt nhất cuối cùng, nghĩ rằng chúng (so với các trung tâm ban đầu ngẫu nhiên) làm giảm cơ hội bị mắc kẹt vào "tối ưu cục bộ" và chúng tăng tốc quá trình hội tụ . Thứ tự khác nhau của các trường hợp, thực hiện toàn bộ phân vùng k-mean 2-5 lần, lưu các trung tâm cuối cùng thu được, lấy trung bình chúng và nhập làm các trường hợp ban đầu cho một cụm cuối cùng. Phân vùng này chắc chắn là tốt nhất. Bạn thực sự không cần bất kỳ số liệu thống kê đặc biệt nào để kiểm tra nó, trừ khi bạn sẽ so sánh các phần của k khác nhau .
ttnphns

1
Tôi muốn so sánh các phân vùng của k khác nhau. Tôi có thể sử dụng cái gì? Một ý tưởng tốt là gì? cảm ơn bạn đã giúp tôi rất nhiều @ttnphns.
JEquihua

Tồn tại một số lượng lớn các tiêu chí phân cụm "nội bộ" . Một trong những phương tiện thích hợp nhất cho phương tiện k là Calinski-Harabasz (đa biến Fisher's F). Google cho nó hoặc cho người khác.
ttnphns

7

Các phương tiện sẽ quá giống nhau. Bạn cũng có thể tìm thấy tập dữ liệu có nghĩa, và sau đó đặt các tâm ban đầu vào một vòng tròn / hình cầu nhỏ xung quanh ý nghĩa này.

Nếu bạn muốn xem thêm một số sơ đồ khởi tạo âm thanh cho k-mean, hãy xem k-nghĩa ++. Họ đã nghĩ ra một phương pháp khá thông minh để gieo hạt k-nghĩa.

  • Arthur, D. và Vassilvitskii, S. (2007).
    k-nghĩa là ++: những lợi thế của việc gieo hạt cẩn thận ".
    Kỷ yếu của hội nghị chuyên đề ACM-SIAM hàng năm lần thứ mười tám về các thuật toán rời rạc

Các slide của tác giả: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf


Tôi đọc nó, Nó có vẻ khá thuận lợi về mặt trực giác nhưng tôi nghĩ vẫn chưa được chứng minh rằng nó hoạt động tốt hơn là chỉ đơn giản là lấy nhiều điểm khởi tạo ngẫu nhiên. Tôi đã tìm thấy mã đơn giản này trong trường hợp bạn muốn dùng thử: kmpp <- function (X, k) {n <- nrow (X) C <- num (k) C [1] <- sample (1: n, 1) cho (i trong 2: k) {dm <- distmat (X, X [C,]) pr <- áp dụng (dm, 1, min); pr [C] <- 0 C [i] <- sample (1: n, 1, prob = pr)} kmeans (X, X [C,])}
JEquihua

Nó được biết là làm giảm đáng kể số lần lặp cho đến khi hội tụ và tạo ra kết quả trung bình tốt hơn. Tôi có thể xác nhận rằng trong các thử nghiệm của riêng tôi, kmeans ++ là con đường để đi. Tôi đang sử dụng triển khai ELKI.
Có QUIT - Anony-Mousse

Triển khai ELKI là gì? Tôi có thể tìm nó ở đâu? lời chào hỏi!
JEquihua


4

Sử dụng phương tiện của các mẫu ngẫu nhiên sẽ cung cấp cho bạn điều ngược lại với những gì bạn cần, như ttnphns đã chỉ ra trong nhận xét của mình. Những gì chúng ta sẽ cần là một cách để tìm các điểm dữ liệu khá xa nhau.

Lý tưởng nhất là bạn có thể lặp đi lặp lại qua tất cả các điểm, tìm khoảng cách giữa chúng, xác định khoảng cách ở đâu là lớn nhất ...

Không bỏ qua ý định của OP, nhưng tôi nghĩ rằng "giải pháp" được tích hợp trong thuật toán k-mean. Chúng tôi thực hiện nhiều lần lặp và tính toán lại các cụm sao dựa trên các lần lặp trước đó. Chúng tôi cũng thường chạy thuật toán kmeans nhiều lần (với các giá trị ban đầu ngẫu nhiên) và so sánh kết quả.

Nếu ta có một tiên nghiệm kiến thức, kiến thức miền, sau đó có thể dẫn đến một phương pháp vượt trội của xác định nơi các trung tâm cụm ban đầu nên được. Mặt khác, có lẽ vấn đề chọn các điểm dữ liệu ngẫu nhiên làm giá trị ban đầu và sau đó sử dụng nhiều lần chạy và nhiều lần lặp trên mỗi lần chạy.


Khi tôi đã thực hiện những gì bạn mô tả, tôi có thể sử dụng thống kê nào để xác định điểm khởi tạo nào dẫn đến phân vùng tốt hơn? Cám ơn bạn vì tất cả.
JEquihua

2

k


Hãy làm cho nó thêm ý nghĩa hơn. Tôi có thể hỏi bạn giống như tôi đã hỏi Aman. Giả sử tôi lấy một trăm điểm ban đầu ngẫu nhiên. Tôi có thể sử dụng gì để xác định phân vùng kết quả nào là tốt nhất? Lời chào hỏi! @gmacfarlane
JEquihua

k thuật toán -means lặp đi lặp lại cho đến khi lỗi bình phương trung bình (hoặc sai số tuyệt đối trung bình) được giảm thiểu và ổn định giữa các lần lặp. Trong bất kỳ tập dữ liệu cụ thể nào, sẽ có một số lượng kết hợp hữu hạn thực sự giảm thiểu MSE này. Vì vậy, một triệu lượt chạy có thể sẽ tạo ra từ một đến mười lược đồ phân vùng (tùy thuộc vào mức độ kỳ lạ của dữ liệu của bạn) và tôi sẽ chọn một chương trình có MSE thấp nhất trong số tất cả các nhóm.
gregmacfarlane

Tôi nên lưu ý rằng nếu các phân vùng của bạn rất nhạy cảm với lựa chọn điểm ban đầu, điều đó có nghĩa là dữ liệu của bạn không có cụm tự nhiên và k
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.