K-means: Berapa banyak iterasi dalam situasi praktis?

10

Saya tidak memiliki pengalaman industri dalam penambangan data atau data besar sehingga akan senang mendengar Anda berbagi pengalaman.

Apakah orang benar-benar menjalankan k-means, PAM, CLARA, dll. Pada dataset yang sangat besar? Atau mereka hanya mengambil sampel secara acak? Jika mereka hanya mengambil sampel dataset, apakah hasilnya dapat diandalkan jika dataset tidak terdistribusi secara normal?

Dalam situasi praktis saat menjalankan algoritme ini, dapatkah kita memberi tahu berapa banyak iterasi yang biasanya diperlukan hingga konvergensi terjadi? Atau jumlah iterasi selalu bertambah dengan ukuran data?

Saya menanyakan hal ini karena saya sedang berpikir untuk mengembangkan pendekatan untuk menghentikan algoritma iteratif sebelum konvergensi, namun hasilnya masih dapat diterima. Saya pikir pantas untuk dicoba jika jumlah iterasi adalah, katakan lebih dari 1.000, sehingga kita dapat menghemat biaya dan waktu komputasi. Bagaimana menurut anda?

foo
sumber
number of iterations always grow with the data sizeBelum tentu.
ttnphns
Ada berbagai kriteria untuk menghentikan iterasi dalam K-means. Menariknya, hanya untuk mengatur jumlah iterasi ke nilai tetap (katakanlah, 10 atau 20) adalah beberapa cara yang masuk akal. K-means didedikasikan untuk menjadi metode cepat, oleh karena itu jika Anda ingin kriteria konvergensi diperiksa setelah setiap iterasi, kriteria itu harus mudah / cepat untuk dihitung.
ttnphns
1
Adakah cara "ilmiah" untuk menentukan jumlah iterasi maksimum yang akan dieksekusi?
foo
Komentar terakhir Anda adalah pertanyaan yang bagus. Jujur saja, saya tidak tahu. mungkin orang lain yang menjawabnya.
ttnphns

Jawaban:

6
  1. K-means itu murah. Anda dapat menjalankannya untuk banyak iterasi.

  2. Ada algoritma yang buruk (yang standar) dan algoritma yang baik. Untuk algoritme yang baik, iterasi yang lebih baru sering kali jauh lebih sedikit dari 1% dari iterasi pertama.

  3. Implementasi sangat lambat. Jangan gunakan itu.

  4. K-means pada data "besar" tidak ada. Karena hanya bekerja pada data vektor dimensi rendah. Anda tidak akan melebihi memori server modern dengan data tersebut. ya, data yang lebih besar ada - tetapi Anda tidak dapat menggunakan k-means di katakan sebulan data Twitter, karena itu tidak akan memberi Anda sesuatu yang berguna.

Dengan implementasi yang baik, pada server modern, set data terbesar yang dapat Anda temukan di mana k-means masih memberikan hasil yang bermanfaat mungkin membutuhkan kurang dari 1 menit untuk menghitung hingga konvergensi. Jadi mengapa repot memikirkan batas iterasi?

Memiliki QUIT - Anony-Mousse
sumber
1
Setuju. Dalam makalah ini ( Scalable K-Means oleh pengambilan peringkat ), penulis menyatakan bahwa K-means konvergen setelah 20-50 iterasi dalam semua situasi praktis, bahkan pada dataset dimensi tinggi saat mereka diuji. Jadi terlepas dari K-means, apakah Anda tahu algoritma yang membutuhkan banyak iterasi hingga konvergensi?
foo
Mungkin melatih SVM? Saya percaya ini berulang, mencoba untuk menemukan yang terbaik (dan terkecil, karena prediksi tergantung pada ini!) Vektor dukungan.
Memiliki QUIT - Anony-Mousse
Solusi yang jelas untuk menjalankan k-means pada dataset berdimensi tinggi adalah dengan menjalankan PCA atau metode pengurangan dimensionalitas lainnya terlebih dahulu, kemudian jalankan k-means
nico