Tôi nên sử dụng thuật toán nào để gom một tập dữ liệu nhị phân khổng lồ thành một vài loại?


11

Tôi có một ma trận lớn (650K hàng * 62 cột) dữ liệu nhị phân (chỉ 0-1 mục). Ma trận chủ yếu là thưa thớt: khoảng 8% được lấp đầy.

Tôi muốn phân cụm nó thành 5 nhóm - giả sử được đặt tên từ 1 đến 5. Tôi đã thử phân cụm theo phân cấp và nó không thể xử lý kích thước. Tôi cũng đã sử dụng thuật toán phân cụm k-mean dựa trên khoảng cách hamming, xem xét các vectơ bit 650K có độ dài 62. Tôi không nhận được kết quả phù hợp với bất kỳ trong số này.

Xin vui lòng giúp đỡ.


Tôi không thể nhận xét b / c của 1 đại diện của mình vì vậy tôi phải gõ câu này làm câu trả lời. Bạn có thể nhìn vào sự tương tự của Jaccard. Tôi nghĩ rằng python scipy đã thực hiện nó. Jaccard ...
gobrewers14

Có bất kỳ lý do để giả định dữ liệu tự nhiên rơi vào năm nhóm, ít nhất là ở một mức độ nào đó? Bạn có thực sự quan tâm đến việc phân cụm hàng hay bạn cũng quan tâm đến mối quan hệ giữa 62 đặc điểm được mã hóa trong các vectơ bit? Nếu sau này, sau đó các kỹ thuật khác là phù hợp hơn.
micans

Câu trả lời:


4

Bạn đang hỏi sai câu hỏi.

Thay vì hỏi "thuật toán nào", bạn nên hỏi " danh mục / cụm có ý nghĩa trong ứng dụng của bạn là gì".

Tôi không ngạc nhiên khi các thuật toán trên không hoạt động - chúng được thiết kế cho các trường hợp sử dụng rất khác nhau. k-nghĩa là không hoạt động với các khoảng cách khác tùy ý. Đừng sử dụng nó với khoảng cách Hamming. Có một lý do tại sao nó được gọi là k- nghĩa là , nó chỉ có ý nghĩa khi sử dụng khi trung bình số học có ý nghĩa (mà nó không dành cho dữ liệu nhị phân).

Thay vào đó, bạn có thể muốn thử các chế độ k, IIRC đây là một biến thể thực sự được sử dụng với dữ liệu phân loại và dữ liệu nhị phân có phần phân loại (nhưng sự thưa thớt vẫn có thể giết chết bạn).

Nhưng trước hết, bạn đã loại bỏ các bản sao để đơn giản hóa dữ liệu của mình và xóa các cột duy nhất / trống chẳng hạn?

Có thể APRIORI hoặc các cách tiếp cận tương tự cũng có ý nghĩa hơn đối với vấn đề của bạn.

Dù bằng cách nào, trước tiên hãy tìm ra những gì bạn cần, sau đó thuật toán nào có thể giải quyết thách thức này. Làm việc dựa trên dữ liệu , không phải bằng cách thử các thuật toán ngẫu nhiên.


Bạn có thể giải thích tại sao "Đừng sử dụng với khoảng cách Hamming" không? Nó có thể có ý nghĩa, sau tất cả, nó có sẵn trong Matlab. Tôi không ngại mở một câu hỏi mới, nếu nó có ý nghĩa.
Dror Atariah

Vì ý nghĩa. Trung bình số học là vô nghĩa với khoảng cách hamming hoặc dữ liệu nhị phân. Sử dụng chế độ hoặc medoid thay thế.
Có QUIT - Anony-Mousse

Chỉ để đảm bảo rằng tôi hiểu đúng: matlab sử dụng giá trị trung bình số học khi cập nhật trọng tâm khi sử dụng phương tiện k cùng với số liệu hamming. Có đúng không? Cách đúng đắn để sử dụng số liệu này trong MATLAB là gì?
Dror Atariah

k- mean được gọi là k- có nghĩa là vì nó sử dụng giá trị trung bình. Mặt khác, nó được gọi là k-medoid, k-mode, v.v ... Giá trị trung bình là tốt cho L2 - tổng độ lệch bình phương.
Có QUIT - Anony-Mousse

Vì vậy, matlab sử dụng k- có nghĩa là cùng với số liệu hamming; Điều này không có nhiều ý nghĩa.
Dror Atariah

3

Có lẽ tôi hơi muộn với câu trả lời, nhưng có lẽ nó sẽ hữu ích cho một số người trong tương lai.

Lý thuyết cộng hưởng thích ứng là một thuật toán tốt cho các vấn đề phân loại nhị phân. Kiểm tra ART 1. Thêm thông tin bạn có thể xem tại sách Thiết kế mạng thần kinh miễn phí trong chương 19.

Mạng lưới này kết hợp ý tưởng sinh học tuyệt vời và thực hiện toán học tốt. Ngoài ra thuật toán này rất dễ thực hiện và, trong cuốn sách này, bạn cũng có thể tìm thấy hướng dẫn từng bước về cách xây dựng trình phân loại này.


2

Một thuật toán cổ điển để phân cụm dữ liệu nhị phân là mô hình Hỗn hợp Bernoulli. Mô hình có thể phù hợp bằng các phương pháp Bayes và cũng có thể phù hợp bằng cách sử dụng EM (Tối đa hóa kỳ vọng). Bạn có thể tìm thấy mã python mẫu trên khắp GitHub trong khi mã trước mạnh hơn nhưng cũng khó hơn. Tôi có triển khai mô hình C # trên GitHub (sử dụng Infer.NET có giấy phép hạn chế!).

Mô hình khá đơn giản. Đầu tiên lấy mẫu cụm mà điểm dữ liệu thuộc về. Sau đó lấy mẫu độc lập từ nhiều Bernoullis khi bạn có kích thước trong tập dữ liệu của mình. Lưu ý rằng điều này ngụ ý sự độc lập có điều kiện của các giá trị nhị phân được đưa ra cụm!

Trong cài đặt Bayes, các bài tập trên cụm trước là phân phối Dirichlet. Đây là nơi để đặt các linh mục nếu bạn tin rằng một số cụm lớn hơn những cụm khác. Đối với mỗi cụm, bạn phải chỉ định trước, phân phối Beta, cho mỗi phân phối Bernoulli. Thông thường trước này là Beta (1,1) hoặc đồng phục. Cuối cùng, đừng quên khởi tạo ngẫu nhiên các bài tập cụm khi dữ liệu được cung cấp. Điều này sẽ phá vỡ tính đối xứng và bộ lấy mẫu sẽ không bị kẹt.

Có một số tính năng thú vị của mô hình BMM trong cài đặt Bayes:

  1. Phân cụm trực tuyến (dữ liệu có thể đến dưới dạng luồng)

  2. Mô hình có thể được sử dụng để suy ra các kích thước còn thiếu

Đầu tiên là rất tiện lợi khi bộ dữ liệu rất lớn và sẽ không vừa với RAM của máy. Thứ hai có thể được sử dụng trong tất cả các loại nhiệm vụ cắt dữ liệu bị thiếu, ví dụ. đưa ra một nửa còn thiếu của hình ảnh nhị phân MNIST.

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.