Phân cụm một ma trận nhị phân


22

Tôi có một ma trận bán nhỏ các tính năng nhị phân có kích thước 250k x 100. Mỗi hàng là một người dùng và các cột là "thẻ" nhị phân của một số hành vi người dùng, ví dụ: "thích_cats".

user  1   2   3   4   5  ...
-------------------------
A     1   0   1   0   1
B     0   1   0   1   0
C     1   0   0   1   0

Tôi muốn điều chỉnh người dùng thành 5-10 cụm và phân tích các lần tải để xem liệu tôi có thể diễn giải các nhóm hành vi người dùng hay không. Dường như có khá nhiều cách tiếp cận để phù hợp với các cụm trên dữ liệu nhị phân - chúng ta nghĩ gì có thể là chiến lược tốt nhất cho dữ liệu này?

  • PCA

  • Tạo một ma trận Tương tự Jaccard , khớp một cụm phân cấp và sau đó sử dụng các "nút" trên cùng.

  • K-trung bình

  • K-medoid

  • Dự đoán ?

  • Agnes

Cho đến nay tôi đã có một số thành công với việc sử dụng phân cụm theo cấp bậc nhưng tôi thực sự không chắc chắn đó là cách tốt nhất để đi ..

tags = read.csv("~/tags.csv")
d = dist(tags, method = "binary")
hc = hclust(d, method="ward")
plot(hc)
cluster.means = aggregate(tags,by=list(cutree(hc, k = 6)), mean)

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


1
Đối với dữ liệu lớn (nhiều nút) và dữ liệu chiều cao, cũng có thể đáng để thử thuật toán phân cụm biểu đồ (sử dụng phương pháp tương tự tanimoto và phương pháp như phân cụm Louvain, RNSC, mcl). Tôi có một số nghi ngờ về việc liệu loại dữ liệu của bạn sẽ tạo ra các cụm có ý nghĩa hay không (tất nhiên là rất có thể), nhưng những nghi ngờ đó liên quan đến việc phân cụm nói chung, không đặc biệt cho một loại phân cụm cụ thể. PCA chắc chắn là một cái gì đó để thử.
micans

6
Thành thật mà nói, tôi ngạc nhiên khi câu hỏi này thu hút một sự chú ý nhỏ như vậy. Tại sao nó như vậy? Đối với tôi, đây có vẻ là một câu hỏi cực kỳ thú vị.
Dror Atariah

Câu trả lời:


9

Phân tích lớp tiềm ẩn là một cách tiếp cận có thể.

Thực hiện phân phối xác suất sau trong đó A, B và C có thể nhận các giá trị 1 hoặc 0.

P(Mộttôi,Bj,Ck)

Nếu chúng độc lập với nhau, thì chúng ta sẽ thấy:

P(Mộttôi,Bj,Ck)= =P(Mộttôi)P(Bj)P(Ck)

Khi khả năng này bị loại bỏ, chúng tôi có thể đưa ra giả thuyết rằng mọi sự phụ thuộc được quan sát là do các giá trị phân cụm trong các nhóm con không được quan sát. Để kiểm tra ý tưởng này, chúng tôi có thể ước tính mô hình sau:

P(Mộttôi,Bj,Ck)= =P(Xn)P(Mộttôi|Xn)P(Bj|Xn)P(Ck|Xn)

Xnn

5n10

Tuy nhiên, cố gắng xác định các mẫu có ý nghĩa trong 100 biến với 5-10 nhóm có thể sẽ yêu cầu giảm danh sách đó xuống trước khi ước tính mô hình, đây là một chủ đề đủ khó khăn theo đúng nghĩa của nó ( REF ).


Tuyệt vời, thú vị. Bạn sẽ nói gì là lợi ích của việc sử dụng kỹ thuật đó so với bất kỳ kỹ thuật nào khác?
wije

Một lợi thế là phân cụm là mờ, cho phép bạn tính đến sự không chắc chắn trong bất kỳ bài tập lớp tiếp theo nào. Một lý do khác là bởi vì nó là một phương pháp dựa trên mô hình ,. bạn có khả năng dựa trên các chỉ số phù hợp có thể giúp hướng dẫn lựa chọn mô hình. Điều này tất nhiên phải trả giá khi phải đưa ra các giả định phân phối ... Tôi chắc chắn các phương pháp hợp lệ khác sẽ có sự đánh đổi của riêng họ.
DL Dahly

5

Trên thực tế, khai thác mục thường xuyên có thể là một lựa chọn tốt hơn so với việc phân cụm trên dữ liệu đó.

Các thuật toán định hướng véc tơ thông thường không có nhiều ý nghĩa. K-nghĩa là ví dụ sẽ tạo ra các phương tiện không còn là nhị phân.


Có ý nghĩa gì khi sử dụng các mục thường xuyên mặc dù tôi muốn phân cụm người dùng thay vì các thẻ (cột)?
wije

1
IMHO có. Nhưng vì lý do rõ ràng, các quy tắc kết hợp không phải là một phân vùng nghiêm ngặt của tập dữ liệu. Một người dùng có thể là thành viên của nhiều "mục thường xuyên". Tức là một người dùng có thể vừa là một người hâm mộ mèo và một người hâm mộ chó; hai nhóm này không được thực thi để rời rạc.
Anony-Mousse

IMHO nào thực sự tốt Giả sử rằng mọi người dùng là thành viên của chính xác một cụm dường như quá ngây thơ đối với tôi.
Anony-Mousse
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.