Chúng ta hãy nói ngắn gọn về một khái quát xác suất của k -means: Mô hình hỗn hợp Gaussian (GMM).
Trong k -means, bạn thực hiện quy trình sau:
- chỉ định k centroid, khởi tạo tọa độ của chúng một cách ngẫu nhiên
- tính khoảng cách của mỗi điểm dữ liệu đến từng centroid
- gán từng điểm dữ liệu cho centroid gần nhất của nó
- cập nhật tọa độ của centroid cho giá trị trung bình của tất cả các điểm được gán cho nó
- lặp đi lặp lại cho đến khi hội tụ.
Trong GMM, bạn thực hiện quy trình sau:
- chỉ định k Gaussian đa biến ( các thành phần được gọi là ), khởi tạo ngẫu nhiên trung bình và phương sai của chúng
- tính xác suất của mỗi điểm dữ liệu được tạo bởi mỗi thành phần (đôi khi được gọi là trách nhiệm mà mỗi thành phần phải chịu điểm dữ liệu)
- gán từng điểm dữ liệu cho thành phần có xác suất cao nhất
- cập nhật giá trị trung bình và phương sai của thành phần thành giá trị trung bình và phương sai của tất cả các điểm dữ liệu được gán cho nó
- lặp đi lặp lại cho đến khi hội tụ
Bạn có thể nhận thấy sự tương đồng giữa hai thủ tục này. Trong thực tế, k -means là một GMM với các thành phần phương sai cố định. Theo GMM, xác suất (tôi nghĩ) bạn đang tìm kiếm là trách nhiệm mà mỗi thành phần đảm nhận cho từng điểm dữ liệu.
Có một triển khai GMM có thể học được nếu bạn muốn xem xét điều đó, nhưng tôi đoán bạn chỉ muốn một cách nhanh chóng để sửa đổi mã hiện tại của mình, trong trường hợp đó, nếu bạn vui lòng cho rằng các cụm của bạn đã được sửa -Phương pháp Gaussian, bạn có thể chuyển đổi phần tử ma trận khoảng cách của mình thành (cung cấp cho bạn mức giảm theo cấp số nhân), sau đó tính toán softmax qua các cột của bạn (bình thường hóa phân phối của bạn để ).y= =e- xP( Y= 1 ) + P( Y= 2 ) + . . . + P( Y= k ) = 1
Thật đáng để chỉ ra rằng giả định các cụm của bạn là Gaussian phương sai cố định không nhất thiết phải hợp lệ. Nếu kích thước của bạn có tỷ lệ cực kỳ khác nhau, điều này có thể tạo ra kết quả lạ, vì kích thước có đơn vị cường độ nhỏ hơn sẽ xuất hiện nhiều "có thể xảy ra" hơn. Chuẩn hóa dữ liệu của bạn trước khi chạy quy trình phân cụm của bạn nên khắc phục điều này.