Saya mencoba menggunakan plot siluet untuk menentukan jumlah cluster di dataset saya. Dengan dataset Train , saya menggunakan kode matlab berikut
Train_data = full(Train);
Result = [];
for num_of_cluster = 1:20
centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');
s = silhouette(Train_data,centroid,'sqeuclid');
Result = [ Result; num_of_cluster mean(s)];
end
plot( Result(:,1),Result(:,2),'r*-.');`
Plot yang dihasilkan diberikan di bawah ini dengan xaksis sebagai jumlah klaster dan rerata yaxis dari nilai siluet .
Bagaimana cara saya menafsirkan grafik ini? Bagaimana cara menentukan jumlah cluster dari ini?
data-visualization
clustering
matlab
Pelajar
sumber
sumber
Jawaban:
Jawaban Sergey mengandung titik kritis, yaitu bahwa koefisien siluet mengkuantifikasi kualitas pengelompokan yang dicapai - jadi Anda harus memilih jumlah cluster yang memaksimalkan koefisien siluet.
Jawaban panjangnya adalah bahwa cara terbaik untuk mengevaluasi hasil dari upaya pengelompokan Anda adalah mulai dengan benar-benar memeriksa - inspeksi manusia - cluster terbentuk dan membuat penentuan berdasarkan pada pemahaman tentang apa data mewakili, apa yang mewakili cluster, dan apa yang ingin dicapai oleh pengelompokan.
Ada banyak metode kuantitatif untuk mengevaluasi hasil pengelompokan yang harus digunakan sebagai alat, dengan pemahaman penuh tentang keterbatasan. Mereka cenderung cukup intuitif di alam, dan dengan demikian memiliki daya tarik alami (seperti masalah pengelompokan pada umumnya).
Contoh: massa cluster / jari-jari / kerapatan, kohesi atau pemisahan antar cluster, dll. Konsep ini sering digabungkan, misalnya, rasio pemisahan dengan kohesi harus besar jika pengelompokan berhasil.
Cara pengelompokan diukur diinformasikan oleh jenis algoritma pengelompokan yang digunakan. Misalnya, mengukur kualitas algoritma pengelompokan lengkap (di mana semua titik dimasukkan ke dalam kelompok) dapat sangat berbeda dari mengukur kualitas algoritma pengelompokan fuzzy berbasis ambang batas (di mana beberapa titik mungkin dibiarkan tidak dikelompokkan sebagai 'noise') ).
Koefisien siluet adalah salah satu ukuran tersebut. Ia bekerja sebagai berikut:
Untuk setiap titik p, pertama-tama temukan jarak rata-rata antara p dan semua titik lain dalam kelompok yang sama (ini adalah ukuran kohesi, sebut saja A) Kemudian temukan jarak rata-rata antara p dan semua titik di kluster terdekat (ini adalah ukuran pemisahan dari kluster terdekat lainnya, sebut saja B). Koefisien siluet untuk p didefinisikan sebagai perbedaan antara B dan A dibagi dengan yang lebih besar dari keduanya (maks (A, B)).
Kami mengevaluasi koefisien kluster dari setiap titik dan dari sini kami dapat memperoleh koefisien klaster rata-rata 'keseluruhan'.
Secara intuitif, kami mencoba mengukur ruang antar cluster. Jika kohesi cluster baik (A kecil) dan pemisahan kluster baik (B besar), pembilangnya akan besar, dll.
Saya telah membuat contoh di sini untuk menunjukkan ini secara grafis.
Dalam plot ini data yang sama diplot lima kali; warna menunjukkan cluster yang dibuat oleh k-means clustering, dengan k = 1,2,3,4,5. Yaitu, saya telah memaksakan algoritma pengelompokan untuk membagi data menjadi 2 kelompok, kemudian 3, dan seterusnya, dan mewarnai grafik sesuai dengan itu.
Plot siluet menunjukkan bahwa koefisien siluet tertinggi ketika k = 3, menunjukkan bahwa itu adalah jumlah cluster optimal. Dalam contoh ini kami beruntung dapat memvisualisasikan data dan kami mungkin setuju bahwa memang, tiga kelompok paling baik menangkap segmentasi dari kumpulan data ini.
Jika kami tidak dapat memvisualisasikan data, mungkin karena dimensi yang lebih tinggi, plot siluet masih akan memberi kami saran. Namun, saya berharap jawaban saya yang agak bertele-tele di sini juga menunjukkan bahwa "saran" ini bisa sangat tidak memadai atau hanya salah dalam skenario tertentu.
sumber
the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.
seperti yang Anda klaim.Lihatlah Toolbox Platform Analisis Validitas Cluster (CVAP) Dan beberapa bahan (tautan) dari CVAP:
Anda juga dapat memeriksa ini Alat (sederhana) ini untuk memperkirakan jumlah cluster
Lihatlah contoh kedua toolkit (Anda juga dapat menggunakan teknik validasi kluster lainnya)
sumber
Saya telah mencari hal yang sama hari ini dan menemukan interpretasi di sini . Itu masuk akal, tetapi saya tidak yakin apakah kita dapat secara membuta menerapkan interpretasi untuk dataset kami. Singkatnya, apa yang dikatakan artikel itu adalah sebagai berikut:
Namun, sepertinya kita bisa menggunakan lebar siluet untuk menangkap outlier. Dalam tugas pengelompokan dokumen yang saat ini saya tangani, yang dengan lebar siluet negatif adalah outlier yang pasti (ketika dicek silang dengan makna semantiknya). Saya tidak yakin apakah lebar ini akan membaik setelah menghapus pencilan (sekali lagi, ini masuk akal tetapi saya belum melakukannya sendiri).
sumber
Jika Anda mencoba untuk memilih jumlah cluster untuk pembelajaran tanpa pengawasan maka mungkin Anda bisa mencoba melakukan sesuatu seperti-
http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html
Mereka menggunakan lebih dari sekedar nilai rata-rata siluet (mereka menggunakan distribusi) tetapi masuk akal. Tampaknya lebih suka cluster yang lebih kecil tetapi mungkin Anda bisa mencoba ini dengan beberapa data yang dihasilkan dan melihat apakah berfungsi?
Atau, Anda dapat memeriksa makalah ini-
http://www.sciencedirect.com/science/article/pii/0377042787901257
sumber