Làm thế nào để có được xác suất thuộc về cụm cho phương tiện k?


8

Tôi cần lấy xác suất cho từng điểm trong tập dữ liệu của mình. Ý tưởng là tính toán ma trận khoảng cách (cột thứ nhất bao gồm khoảng cách đến cụm thứ nhất, cột thứ hai liên quan đến khoảng cách đến cụm thứ hai, v.v.). Điểm gần nhất có xác suất = 1, điểm xa nhất có xác suất = 0. Vấn đề là hàm tuyến tính (như MinMaxScaller) có đầu ra trong đó hầu hết tất cả các điểm đều có xác suất gần như nhau.

Làm thế nào để chọn phi tuyến cho nhiệm vụ này? Làm thế nào để tự động hóa quá trình này trên python? Ví dụ: đối với điểm gần nhất p=1, đối với điểm xa nhất thuộc về cụm p=0.5, đối với điểm p xa nhất là almols 0.

Hoặc bạn có thể đề xuất một phương pháp khác để tính toán xác suất này.

Câu trả lời:


12

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=exP(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.


1

Theo định nghĩa, kmeans phải đảm bảo rằng cụm mà một điểm được phân bổ có trọng tâm gần nhất. Vì vậy, xác suất ở trong cụm không thực sự được xác định rõ.

Như phân cụm GMM-EM đã đề cập cung cấp cho bạn ước tính khả năng có mặt trong mỗi cụm và rõ ràng là một tùy chọn.

Tuy nhiên, nếu bạn muốn duy trì cấu trúc hình cầu của k-nghĩa là bạn có thể sử dụng một giả định / công thức đơn giản hơn nếu bạn muốn gán một số "điểm tốt" cho từng cụm điểm. Điều này có thể hữu ích trong trường hợp bạn đang lấy mẫu một tập hợp con của dân số và muốn xác định mức độ tin cậy của cụm được gán cho mỗi điểm trong mẫu.

Một sơ đồ "chấm điểm" đơn giản có thể là trước tiên tính khoảng cách điểm z của SQRT trên tất cả các kích thước được sử dụng để phân cụm cho từng centroid k. Sau đó, giả sử đến cho mỗi k-centroid, bạn có thể chỉ định điểm sốd1dk

score=1di(n1)/i=1k1di(n1)

Trong đó là số lượng kích thước được sử dụng để phân cụm.n

Tại sao điều này nguồn ? Hãy suy nghĩ về những gì xảy ra trong không gian 3 chiều với Trọng lực hoặc Điện từ, trong đó cường độ tiêu tan theo khoảng cách bình phương. Tương tự k-nghĩa là tạo các cụm hình cầu trong n chiều. Vì vậy, nếu bạn coi mỗi trọng tâm của cụm là nguồn "năng lượng" điểm thì nó sẽ tiêu tan khi d tăng lên theo công suất . Kết quả là tại bất kỳ điểm ngẫu nhiên nào, cường độ "năng lượng" đến từ bất kỳ trung tâm cụm nào đều tỷ lệ thuận với trong đó(n1)1d(n1)1di(n1)dilà khoảng cách đến tâm. Vì vậy, bạn có thể tính toán điểm tốt này theo thang điểm từ 0 đến 1 và hiểu được thuật toán "k" có nghĩa là như thế nào đối với bất kỳ điểm nào dựa trên kích thước và cấu trúc của vấn đề của bạn.


0

Bạn có thể tìm thấy xác suất rằng một datapoint sẽ được nhóm vào một cụm cụ thể , , bằng cách chạy k-nghĩa là hàng trăm lần và đếm số lần datapoint được gán cho cụm .dikjP(kj|di)dikj

Vì id của cụm không có ý nghĩa gì trong cuộc sống thực, bạn có thể xác định các cụm trên các lần lặp k-nghĩa bằng cách sử dụng giá trị của các tâm. Tức là, sau mỗi k-mean hội tụ lại ánh xạ của id cụm dựa trên danh sách id được lập chỉ mục bởi các giá trị centroid.


1
Đối với bất cứ ai hạ thấp tôi, sẽ rất hữu ích khi nghe lý do tại sao. Điều này được định nghĩa là phương tiện k lặp và được dạy trong các trường đại học.
Ulad Kasach
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.