Saya telah belajar bahwa ketika memilih sejumlah cluster, Anda harus mencari titik siku untuk nilai K. yang berbeda. Saya telah merencanakan nilai withinss untuk nilai k dari 1 hingga 10, tetapi saya tidak melihat dengan jelas siku. Apa yang Anda lakukan dalam kasus seperti ini?
clustering
k-means
Jeremy
sumber
sumber
Jawaban:
Metode yang salah?
Mungkin Anda menggunakan algoritma yang salah untuk masalah Anda.
Preprocessing yang salah?
K-means sangat sensitif terhadap preprocessing. Jika satu atribut berada pada skala yang jauh lebih besar daripada yang lain, itu akan mendominasi output. Output Anda kemudian akan efektif 1 dimensi
Visualisasikan hasil
Apa pun yang Anda lakukan, Anda perlu memvalidasi hasil Anda dengan sesuatu selain mulai dari nomor seperti SSQ. Sebagai gantinya, pertimbangkan visualisasi .
Visualisasi juga dapat memberi tahu Anda bahwa mungkin hanya ada satu cluster di data Anda.
sumber
Salah satu caranya adalah dengan memeriksa secara manual anggota dalam kelompok Anda untuk k tertentu untuk melihat apakah pengelompokan masuk akal (apakah mereka dapat dibedakan?). Ini dapat dilakukan melalui tabel kontingensi dan cara bersyarat. Lakukan ini untuk berbagai k dan Anda dapat menentukan nilai apa yang sesuai.
Cara yang kurang subyektif adalah dengan menggunakan Nilai Siluet:
/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function
Ini dapat dihitung dengan paket perangkat lunak favorit Anda. Dari tautan:
Metode ini hanya membandingkan kesamaan intra-grup dengan kesamaan kelompok terdekat. Jika ada jarak rata-rata anggota data ke anggota lain dari kluster yang sama lebih tinggi dari jarak rata-rata ke beberapa anggota kluster lain, maka nilai ini negatif dan pengelompokan tidak berhasil. Di sisi lain, nilai silhuette mendekati 1 menunjukkan operasi pengelompokan yang sukses. 0,5 bukan ukuran yang tepat untuk pengelompokan.
sumber
contingency tables and conditional means
Ini lebih jauh mistis. Apa yang harus saya lakukan dengan mereka sampai pada "subyektif" pada k yang baik?Secara umum, Anda dapat mempertimbangkan:
sumber
Kita dapat menggunakan paket NbClust untuk menemukan nilai k yang paling optimal. Ini memberikan 30 indeks untuk menentukan jumlah cluster dan mengusulkan hasil terbaik.
NbClust (data = df, distance = "euclidean", min.nc = 2, max.nc = 15, metode = "kmeans", index = "all")
sumber