Sejauh yang saya tahu k-means memilih pusat awal secara acak. Karena mereka didasarkan pada keberuntungan murni, mereka dapat dipilih dengan sangat buruk. Algoritma K-means ++ mencoba untuk memecahkan masalah ini, dengan menyebarkan pusat awal secara merata.
Apakah kedua algoritma menjamin hasil yang sama? Atau ada kemungkinan bahwa centroid awal yang dipilih dengan buruk menyebabkan hasil yang buruk, tidak peduli berapa banyak iterasi.
Katakanlah ada dataset yang diberikan dan sejumlah cluster yang diinginkan. Kami menjalankan algoritme k-means selama konvergensi (tidak ada lagi gerakan tengah). Apakah ada solusi yang tepat untuk masalah klaster ini (diberikan SSE), atau k-means akan menghasilkan hasil yang kadang-kadang berbeda di jalankan kembali?
Jika ada lebih dari satu solusi untuk masalah pengelompokan (dataset yang diberikan, jumlah cluster yang diberikan), apakah K-means ++ menjamin hasil yang lebih baik, atau hanya lebih cepat? Maksud saya lebih baik SSE lebih rendah.
Alasan saya mengajukan pertanyaan ini adalah karena saya sedang mencari algoritma k-means untuk mengelompokkan kumpulan data yang sangat besar. Saya telah menemukan beberapa k-means ++, tetapi ada beberapa implementasi CUDA juga. Seperti yang sudah Anda ketahui, CUDA menggunakan GPU, dan dapat menjalankan lebih banyak ratusan utas secara paralel. (Jadi itu benar - benar dapat mempercepat seluruh proses). Tetapi tidak ada implementasi CUDA - yang saya temukan sejauh ini - memiliki inisialisasi k-means ++.
k-means picks the initial centers randomly
. Memilih pusat awal bukan bagian dari algoritma k-means itu sendiri. Pusat-pusat dapat dipilih. Implementasi k-means yang baik akan menawarkan beberapa opsi cara mendefinisikan pusat awal (acak, ditentukan pengguna, poin k-utmost, dll.)