Thực hiện phân cụm K-nghĩa (hoặc họ hàng gần của nó) chỉ với một ma trận khoảng cách, không phải dữ liệu theo điểm


22

Tôi muốn thực hiện phân cụm K-nghĩa trên các đối tượng tôi có, nhưng các đối tượng không được mô tả là các điểm trong không gian, tức là theo objects x featurestập dữ liệu. Tuy nhiên, tôi có thể tính khoảng cách giữa hai đối tượng bất kỳ (nó dựa trên một hàm tương tự). Vì vậy, tôi loại bỏ ma trận khoảng cách objects x objects.

Tôi đã triển khai K-nghĩa trước đây, nhưng đó là với đầu vào bộ dữ liệu điểm; và với đầu vào ma trận khoảng cách, tôi không rõ cách cập nhật các cụm thành "trung tâm" của cụm mà không có biểu diễn điểm. Làm thế nào điều này thường được thực hiện? Có phiên bản nào của phương tiện K hoặc phương pháp gần với nó không?


Bạn có ý nghĩa gì khi không được mô tả là điểm?
tò mò

Câu trả lời:


24

Rõ ràng, k-mean cần có khả năng tính toán phương tiện .

Tuy nhiên, có một biến thể nổi tiếng của nó được gọi là k-medoid hoặc PAM (Phân vùng xung quanh Medoids), trong đó medoid là đối tượng hiện tại tập trung nhất vào cụm. K-medoid chỉ cần khoảng cách cặp.


21

Bạn đang mô tả chính xác cài đặt vấn đề của kernel -means; khi bạn không thể đại diện cho một điểm dữ liệu như một vectơ, nhưng nếu bạn vẫn có thể tính toán (hoặc xác định) các sản phẩm bên trong giữa hai điểm dữ liệu thì bạn có thể kernelize thuật toán. Trang web sau đây cung cấp mô tả ngắn gọn về thuật toán:k

Trang hạt nhân -meansk

Đây lừa hạt nhân là một ý tưởng rất phổ biến và cơ bản trong thống kê và học máy.

Trang Wiki về thủ thuật kernel

Nếu bạn quan tâm, cuốn sách Học với hạt nhân của Bernhard Schölkopf và Alexander J. Smola sẽ là một cuốn sách giới thiệu rất hay.

Ghi chú này từ Max Welling có vẻ rất hay; Ngoài ra, nếu bạn đang sử dụng R, bạn có thể xem gói R này .

MDS có thể là một cách để giải quyết vấn đề của bạn, nhưng nó không trực tiếp tấn công vấn đề bạn muốn giải quyết; trong khi kernel k-có nghĩa là.


Tôi muốn bao gồm nhiều liên kết hơn nhưng không thể do danh tiếng thấp. Lưu ý này từ Max Welling lưu ý có vẻ rất thoải mái; Ngoài ra, nếu bạn đang sử dụng R, bạn có thể xem gói R
d_ijk_stra

(+1) Chào mừng đến với trang web. Tôi đã thêm các liên kết trong bình luận của bạn vào phần thân bài cũng như một liên kết đến văn bản Schölkopf và Smola.
Đức hồng y

9

@gung hoàn toàn chính xác khi đề xuất bạn chia tỷ lệ đa chiều (MDS) như một công cụ sơ bộ để tạo points X dimensions dữ liệu ngoài ma trận khoảng cách. Tôi chỉ thêm vài nét. K-có nghĩa là phân cụm ngụ ý khoảng cách euclide . MDS sẽ cung cấp cho bạn tọa độ điểm theo chiều do đó đảm bảo cho bạn khoảng cách euclide. Bạn nên sử dụng MDS số liệu và yêu cầu số lượng kích thước càng lớn càng tốt, vì mục đích của bạn là giảm thiểu lỗi lấy lại dữ liệu, không ánh xạ nó ở dạng 2D hoặc 3D.

Điều gì xảy ra nếu bạn không có phần mềm MDS trong tay nhưng có một số chức năng ma trận như phân tách giá trị riêng hoặc phân tách giá trị số ít? Sau đó, bạn có thể tự thực hiện số liệu MDS đơn giản - Torgerson MDS, còn được gọi là phân tích tọa độ chính (PCoA). Nó lên tới một chút "xoắn" phân tích Thành phần chính. Tôi sẽ không mô tả nó ở đây, mặc dù nó khá đơn giản. Bạn có thể đọc về nó ở nhiều nơi, ví dụ ở đây .

Cuối cùng, có thể lập trình trực tiếp "K-nghĩa cho đầu vào ma trận khoảng cách" - mà không cần gọi hoặc viết các hàm thực hiện PCoA hoặc MDS số liệu khác. Chúng ta biết rằng (a) tổng độ lệch bình phương so với centroid bằng tổng khoảng cách Euclide bình phương cặp chia cho số điểm; và (b) biết cách tính khoảng cách giữa các cụm sao ra khỏi ma trận khoảng cách ; (c) và chúng tôi biết thêm về cách tính tổng các hình vuông có liên quan đến nhau trong K-nghĩa. Tất cả cùng nhau làm cho việc viết thuật toán bạn muốn một cách đơn giản và không phải là một công việc phức tạp. Tuy nhiên, người ta nên nhớ rằng phương tiện K chỉ dành cho khoảng cách Euclide / không gian euclide. Sử dụng K-medoid hoặc các phương pháp khác cho khoảng cách không phải euclide.

Một câu hỏi tương tự .


7

Tôi chắc chắn không biết nó "bình thường" được thực hiện như thế nào và đối với hồ sơ, tôi không biết nhiều về phân tích cụm. Tuy nhiên, bạn có quen thuộc với quy mô đa chiều không? ( Đây là một tài liệu tham khảo, các wiki , và bạn có thể tìm kiếm CV dưới thẻ.) Đa chiều rộng mất trong một ma trận khoảng cách cặp, mà âm thanh như tình hình của bạn. Từ MDS, bạn có thể lấy vị trí của các đối tượng trong không gian chiều thấp nhất cần thiết để thể hiện đầy đủ chúng. Tôi đoán bạn có thể sử dụng các vị trí đó để thực hiện phân tích cụm tiếp theo như k-mean; cách khác, một khi bạn đã có đầu ra, bạn có thể không còn cần CA.

Tôi không biết nếu bạn sử dụng R, nhưng đây là chế độ xem nhiệm vụ cho Tâm lý học, bao gồm một phần về MDS trong R. Hy vọng điều đó có ích.


4

k

Trong trường hợp của bạn, những gì bạn cần làm cơ bản là:

  1. D
  2. DtôijDjtôi
  3. Dc
  4. Tính toán Sc= =-12Dc
  5. Thực hiện dịch chuyển quang phổ: Trừ ScGiá trị riêng nhỏ nhất từ ScPhổ để đảm bảo nó trở thành bán chính xác. Làm điều này để có đượcS~c.
  6. Tính toán phân rã eigenvector của S~c= =VΛV.
  7. Khôi phục một đại diện vector trong một n-1không gian số liệu hai chiều của dữ liệu của bạn: X= =VΛ1/2.

Điều này giả định rằng nkhông quá lớn Nếu đúng như vậy, việc thực hiện PCA sẽ mang đến cho bạn một biểu diễn dữ liệu có ý nghĩa hơn. (Bài viết mô tả cách làm điều này, quá).


Các bước được mô tả không gì khác hơn Phân tích tọa độ chính mà tôi đề cập trong câu trả lời của mình.
ttnphns

Xin vui lòng, ví dụ về bước của bạn 5. Trừ (các) giá trị riêng (âm) cuối cùng từ các phần tử ma trận S dường như không giúp làm cho S bán chính xác.
ttnphns

@ttnphns: Về cơ bản nó là PCA, vâng, nhưng nó không yêu cầu khoảng cách là số liệu. Mô tả của bước 5 là không may, cảm ơn vì đã phát hiện ra nó. Bây giờ có rõ ràng không?
blubb

Trừ tổng của các giá trị riêng âm từ tất cả các giá trị riêng và sau đó phục hồi ma trận S tương đương với việc trừ tổng đó từ các phần tử đường chéo của S. Điều này chứng tỏ S dương (bán) xác định, nhưng ...
ttnphns

... nhưng cách này rất tệ theo nghĩa là dữ liệu euclide kết quả X tạo ra khoảng cách euclide rất xa so với sự khác biệt ban đầu D. Vì vậy, tôi không khuyên bạn nên bước 5. giá trị riêng về 0 và bỏ qua bước 7. Hoặc, cách tiếp cận tốt hơn một chút: đặt giá trị riêng âm thành 0, hủy bỏ giá trị riêng dương để chúng tổng hợp thành gốc (= dấu vết (S)), sau đó bỏ qua bước 7. Đó là cách nó xuất hiện với tôi.
ttnphns

2

Dữ liệu của bạn cũng có thể được xem như một mạng và bạn có thể sử dụng một trong nhiều thuật toán phân cụm mạng có sẵn. Đối với điều này, có lẽ bạn sẽ cần phải áp dụng một ngưỡng về trọng lượng cạnh và biến đổi khoảng cách thành các điểm tương đồng. Đây không phải là cách làm 'thống kê', nhưng phân tích cụm là một vấn đề chưa được xác định rõ ràng và vì các thuật toán phân cụm mạng công cụ khám phá thực hiện rất tốt.


2

Tôi không biết tại sao nó lại không phổ biến trong văn học, tuy nhiên giải pháp được đề xuất bởi @gung và @ttnphns (đầu tiên chiếu khoảng cách cặp của bạn vào không gian Euclide bằng Phân tích tọa độ chính, ví dụ như thông qua gói này nếu bạn sử dụng R, và sau đó làm K-nghĩa là cách thông thường) rất đơn giản và không yêu cầu các thuật toán chuyên dụng. Cá nhân tôi đã sử dụng nó ở đây được nhúng trong một khung tối ưu hóa và nó hoạt động khá tốt.


1

Liên quan đến phân cụm và MDS, tôi sẽ đề xuất các tài nguyên sau:

Các tài liệu tham khảo này cũng bao gồm độc đáo các chủ đề về chức năng tương tự và khoảng cách (các biện pháp gần) cho dữ liệu nhị phân và liên tục.

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.