Saya memiliki matriks besar (650K baris * 62 kolom) data biner (hanya 0-1 entri). Matriksnya sebagian besar jarang: sekitar 8% diisi.
Saya ingin mengelompokkannya menjadi 5 grup - misalnya dinamai dari 1 hingga 5. Saya telah mencoba pengelompokan hierarkis dan tidak dapat menangani ukurannya. Saya juga telah menggunakan algoritma clustering k-means berbasis hamming distance, mengingat 650K bit vektor panjang 62. Saya tidak mendapatkan hasil yang tepat dengan semua ini.
Tolong bantu.
clustering
dataset
k-means
binary-data
Tidak terikat26
sumber
sumber
Jawaban:
Anda mengajukan pertanyaan yang salah.
Alih-alih bertanya "algoritma apa", Anda harus bertanya "apa kategori / klaster yang berarti dalam aplikasi Anda".
Saya tidak terkejut bahwa algoritma di atas tidak berfungsi - mereka dirancang untuk kasus penggunaan yang sangat berbeda. k-means tidak bekerja dengan jarak lain yang berubah-ubah. Jangan gunakan dengan jarak Hamming. Ada alasan mengapa ini disebut k- means , itu hanya masuk akal untuk digunakan ketika rata- rata aritmatika bermakna (yang bukan untuk data biner).
Anda mungkin ingin mencoba k-mode sebagai gantinya, IIRC ini adalah varian yang sebenarnya dimaksudkan untuk digunakan dengan data kategororial, dan data biner agak kategororial (tetapi sparsity mungkin masih membunuh Anda).
Tapi pertama-tama, sudahkah Anda menghapus duplikat untuk menyederhanakan data Anda, dan menghapus kolom unik / kosong misalnya?
Mungkin APRIORI atau pendekatan serupa juga lebih berarti untuk masalah Anda.
Either way, pertama cari tahu apa yang Anda butuhkan, lalu algoritma mana yang bisa menyelesaikan tantangan ini. Bekerja berdasarkan data , bukan dengan mencoba algoritma acak.
sumber
Mungkin saya agak terlambat dengan jawaban, tapi mungkin itu akan berguna untuk beberapa orang di masa depan.
Teori Resonansi Adaptif adalah algoritma yang baik untuk masalah klasifikasi biner. Periksa tentang ART 1. Informasi lebih lanjut dapat Anda lihat di buku Neural Network Design gratis di bab 19.
Jaringan ini menggabungkan ide biologis yang hebat dan implementasi matematika yang baik. Algoritma ini juga mudah diimplementasikan dan, dalam buku ini, Anda juga dapat menemukan instruksi langkah demi langkah tentang cara membuat classifier ini.
sumber
Algoritma klasik untuk pengelompokan data biner adalah model Bernoulli Mixture. Model ini dapat disesuaikan menggunakan metode Bayesian dan dapat digunakan juga menggunakan EM (Ekspektasi Maksimalisasi). Anda dapat menemukan contoh kode python di seluruh GitHub sementara yang pertama lebih kuat tetapi juga lebih sulit. Saya memiliki implementasi C # dari model di GitHub (menggunakan Infer.NET yang memiliki lisensi terbatas!).
Modelnya cukup sederhana. Pertama-tama, sampel cluster yang menjadi titik data. Kemudian, sampel secara independen dari Bernoullis sebanyak yang Anda miliki dimensi dalam dataset Anda. Perhatikan bahwa ini menyiratkan independensi bersyarat dari nilai-nilai biner yang diberikan cluster!
Dalam pengaturan Bayesian, penugasan cluster yang sebelumnya adalah distribusi Dirichlet. Ini adalah tempat untuk meletakkan prior jika Anda yakin beberapa cluster lebih besar dari yang lain. Untuk setiap cluster, Anda harus menentukan sebelumnya, distribusi Beta, untuk setiap distribusi Bernoulli. Biasanya ini sebelumnya adalah Beta (1,1) atau seragam. Akhirnya, jangan lupa untuk secara otomatis menginisialisasi penugasan cluster ketika data diberikan. Ini akan merusak simetri dan sampler tidak akan macet.
Ada beberapa fitur keren dari model BMM dalam pengaturan Bayesian:
Pengelompokan online (data dapat diterima sebagai aliran)
Model dapat digunakan untuk menyimpulkan dimensi yang hilang
Yang pertama sangat berguna ketika dataset sangat besar dan tidak akan muat dalam RAM mesin. Yang kedua dapat digunakan dalam semua jenis tugas imputasi data yang hilang misalnya. menusuk bagian yang hilang dari gambar MNIST biner.
sumber