k-nghĩa vs k-nghĩa ++


10

Theo như tôi biết thì k-nghĩa là chọn ngẫu nhiên các trung tâm ban đầu. Vì họ dựa trên may mắn thuần túy, họ có thể được chọn thực sự tồi tệ. Thuật toán K-mean ++ cố gắng giải quyết vấn đề này, bằng cách trải đều các trung tâm ban đầu.

  • Hai thuật toán có đảm bảo kết quả giống nhau không? Hoặc có thể là các nhân tâm ban đầu được chọn kém dẫn đến một kết quả xấu, không quan trọng có bao nhiêu lần lặp lại.

  • Hãy nói rằng có một tập dữ liệu nhất định và một số cụm mong muốn nhất định. Chúng tôi chạy một thuật toán k-mean miễn là nó hội tụ (không di chuyển trung tâm nữa). Có một giải pháp chính xác cho vấn đề cụm này (SSE đã cho), hoặc phương tiện k sẽ tạo ra kết quả đôi khi khác nhau khi chạy lại?

  • Nếu có nhiều hơn một giải pháp cho một vấn đề phân cụm (tập dữ liệu đã cho, số cụm đã cho), liệu K-mean ++ có đảm bảo kết quả tốt hơn hay chỉ nhanh hơn? Tốt hơn tôi có nghĩa là SSE thấp hơn.

Lý do tôi hỏi những câu hỏi này là vì tôi đang tìm kiếm thuật toán k-mean để phân cụm một tập dữ liệu khổng lồ. Tôi đã tìm thấy một số k-nghĩa ++, nhưng cũng có một số triển khai CUDA. Như bạn đã biết CUDA đang sử dụng GPU và nó có thể chạy song song hàng trăm luồng. (Vì vậy, nó thực sự có thể tăng tốc toàn bộ quá trình). Nhưng không có triển khai CUDA nào - mà tôi đã tìm thấy cho đến nay - có khởi tạo k-nghĩa ++.


5
k-means picks the initial centers randomly. Chọn các trung tâm ban đầu không phải là một phần của thuật toán k-mean. Các trung tâm có thể được chọn bất kỳ. Việc triển khai tốt các phương tiện k sẽ cung cấp một số tùy chọn cách xác định các trung tâm ban đầu (ngẫu nhiên, do người dùng xác định, điểm tối đa, v.v.)
ttnphns

Câu trả lời:


9

K-mean bắt đầu bằng việc phân bổ các trung tâm cụm một cách ngẫu nhiên và sau đó tìm kiếm các giải pháp "tốt hơn". K-nghĩa là ++ bắt đầu với việc phân bổ một trung tâm cụm một cách ngẫu nhiên và sau đó tìm kiếm các trung tâm khác được cung cấp cho trung tâm đầu tiên. Vì vậy, cả hai thuật toán sử dụng khởi tạo ngẫu nhiên làm điểm bắt đầu, do đó có thể cho kết quả khác nhau trên các lần chạy khác nhau. Như một ví dụ bạn có thể kiểm tra bài giảng này: Phân cụm như một vấn đề suy luận ví dụ , khoảng phút thứ 40 có các ví dụ về các phương tiện k-mean, nhưng toàn bộ bài giảng rất thú vị.

Vì vậy, trả lời câu hỏi của bạn:

  • Không, bởi vì có một khởi tạo ngẫu nhiên, các lần chạy khác nhau có thể cho kết quả khác nhau (xem ví dụ trong bài giảng). Họ nên đưa ra kết quả tương đương nhưng điều này không được đảm bảo. Ngoài ra, vì tất cả các trung tâm được khởi tạo ngẫu nhiên theo phương tiện k, nên nó có thể cho kết quả khác với k-nghĩa ++.
  • K-mean có thể cho kết quả khác nhau trên các lần chạy khác nhau.
  • Bài viết k-mean ++ cung cấp kết quả mô phỏng monte-carlo cho thấy k-mean ++ vừa nhanh hơn vừa cung cấp hiệu suất tốt hơn, do đó không có gì đảm bảo, nhưng có thể tốt hơn.

Về vấn đề của bạn: k-nghĩa là gì ++, nó chọn các trung tâm và sau đó bắt đầu một phương tiện k "cổ điển". Vì vậy, những gì bạn có thể làm là (1) sử dụng một phần của thuật toán chọn các trung tâm và sau đó (2) sử dụng các trung tâm đó trong việc triển khai GPU của phương tiện k. Bằng cách này, ít nhất một phần của vấn đề được giải quyết trên phần mềm dựa trên GPU, do đó nên nhanh hơn.


4

Xem trọng tâm bắt đầu của K-nghĩaK-nghĩa ++

Để thêm một cái nhìn trực quan về sự khác biệt giữa các tâm bắt đầu của hai thuật toán, hãy xem xét bộ dữ liệu đồ chơi sau đây bao gồm ba hình vuông được tạo ra đồng đều

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

Dưới đây là biểu đồ 2D cho thấy thuật toán k-mean và k-mean ++ khởi tạo các tâm điểm bắt đầu của chúng (2000 mô phỏng).

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

Rõ ràng k-mean tiêu chuẩn khởi tạo các điểm một cách đồng đều, trong khi k-mean ++ có xu hướng khởi tạo gần trung tâm của hình vuông


2

Nhiều lần KMeans Khởi tạo ngẫu nhiên mất ít thời gian hơn KMeans ++ nhưng cho kết quả kém. Do khởi tạo ngẫu nhiên nhiều lần, chúng tôi nhận được tối ưu cục bộ vì bộ trung tâm ban đầu của chúng tôi không được phân phối trên tập dữ liệu.

Vì vậy, trả lời câu hỏi của bạn:

  1. Không, vì các trung tâm KMeans ++ được phân phối trên dữ liệu nên có nhiều khả năng có ít chi phí hơn (trong tổng số bình phương) sau đó khởi tạo ngẫu nhiên.
  2. vì nó là khởi tạo ngẫu nhiên trong KMeans, nó cho kết quả khác nhau tùy thuộc vào bộ trung tâm ban đầu của bạn
  3. trước hết không có giải pháp nhất định cho các quốc gia vì đó là việc học tập không giám sát, điều chúng ta có thể làm là giảm chi phí cho các quốc gia (SSE). Người dân chọn trung tâm ban đầu một cách thông minh, phải mất ít lần lặp llyods hơn để hội tụ và cho kết quả tốt hơn sau đó Ngẫu nhiên
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.