Saya mencari untuk melakukan k-means pengelompokan pada set poin 10-dimensi. Tangkapan: ada 10 ^ 10 poin .
Saya hanya mencari pusat dan ukuran cluster terbesar (misalkan 10 hingga 100 cluster); Saya tidak peduli tentang tujuan dari setiap titik. Menggunakan k-means secara spesifik tidak penting; Saya hanya mencari efek yang sama, setiap perkiraan k-means atau algoritma terkait akan bagus (minibatch-SGD berarti, ...). Karena GMM dalam arti masalah yang sama dengan k-means, melakukan GMM pada data ukuran yang sama juga menarik.
Pada skala ini, melakukan subsampling data mungkin tidak mengubah hasilnya secara signifikan: kemungkinan menemukan 10 klaster teratas yang sama dengan menggunakan sampel 1/1000 data sangat baik. Tetapi bahkan kemudian, itu adalah masalah 10 ^ 6 poin yang berada di / di luar batas penurut.
sumber
Jawaban:
k-means didasarkan pada rata-rata .
Ini memodelkan cluster menggunakan cara, dan dengan demikian peningkatan dengan menambahkan lebih banyak data adalah marjinal. Kesalahan estimasi rata-rata berkurang dengan 1 / sqrt (n); jadi menambahkan lebih banyak data terbayar semakin sedikit ...
Strategi untuk data sebesar itu selalu berputar di sekitar pengambilan sampel:
Jika Anda ingin runtime sublinear, Anda harus melakukan sampling!
Bahkan, Mini-Batch-Kmeans dll melakukan hal ini: sampel berulang kali dari kumpulan data.
Namun, pengambilan sampel (khususnya pengambilan sampel yang tidak bias) juga tidak gratis ... biasanya, Anda harus membaca data Anda secara linear untuk sampel, karena Anda tidak mendapatkan akses acak ke catatan individual.
Saya akan menggunakan algoritma MacQueen. Ini online; secara default ia melakukan satu kali melewati data Anda (meskipun populer untuk iterate ini). Ini tidak mudah untuk didistribusikan, tetapi saya kira Anda mampu membaca data Anda secara linear sebanyak 10 kali dari SSD?
sumber
Sebagai catatan samping perhatikan bahwa menggunakan K-means untuk data 10D mungkin berakhir di tempat sesuai dengan kutukan dimensi. Tentu saja itu sedikit berbeda sesuai dengan sifat data tetapi ketika saya mencoba untuk menentukan ambang batas di mana K-Means mulai berperilaku aneh mengenai dimensi, saya mendapat sesuatu seperti 7D. Setelah 7 dimensi mulai kehilangan cluster yang benar (data saya secara manual dihasilkan sesuai dengan 4 distribusi Gaussian yang terpisah dan saya menggunakan fungsi kmlan MATLAB untuk percobaan kecil saya).
sumber