Bagaimana cara mengartikan plot Silhouette?


34

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?

masukkan deskripsi gambar di sini


Untuk menentukan jumlah cluster, lihat metode pohon spanning minimum (MST) di bawah visualisasi-perangkat lunak-untuk-clustering .
denis

@Pelajar: Apakah fungsi siluet bawaan di beberapa perpustakaan? Jika tidak, bisakah Anda mempostingnya di pertanyaan Anda jika Anda tidak keberatan?
Legenda

@Legend: Tersedia di kotak alat Matlab Statistics.
Pelajar

@Pelajar: Ooops ... Saya pikir Anda menggunakan Python :) Terima kasih telah memberi tahu saya tentang hal itu.
Legenda

1
+1 untuk menunjukkan kode! Juga, karena rata-rata maksimum dari siluet Anda terjadi ketika k = 2, Anda mungkin ingin memeriksa apakah data Anda berkerumun, yang dapat dilakukan dengan menggunakan statistik gap ( tautan lain ).
Franck Dernoncourt

Jawaban:


41

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.

Koefisien pengelompokan Hasil pengelompokan untuk nclusters = 2: 5

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.


5
Terima kasih atas jawaban terinci Anda, dan terutama plot sangat membantu. Namun, saya tidak begitu mengerti bagaimana the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.seperti yang Anda klaim.
Zhubarb

10

Lihatlah Toolbox Platform Analisis Validitas Cluster (CVAP) Dan beberapa bahan (tautan) dari CVAP:

Indeks siluet (siluet rata-rata keseluruhan) nilai Siluet yang lebih besar menunjukkan kualitas hasil clustering yang lebih baik [Chen et al. 2002]

  • N. Bolshakova, F. Azuaje. 2003. Teknik validasi cluster untuk data ekspresi genom, Pemrosesan Sinyal. V.83. N4, P.825-833.
  • E. Dimitriadou, S. Dolnicar, A. Weingessel. Pemeriksaan indeks untuk menentukan Jumlah Cluster dalam set data biner. Psychometrika, 67 (1): 137-160, 2002.

Anda juga dapat memeriksa ini Alat (sederhana) ini untuk memperkirakan jumlah cluster

Lihatlah contoh kedua toolkit (Anda juga dapat menggunakan teknik validasi kluster lainnya)


6

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:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

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).


4
Hanya komentar sejarah, meja ini awalnya berasal dari Sewell, Grandville, dan PJ Rousseau. "Menemukan grup dalam data: Pengantar analisis klaster." (1990). img546.imageshack.us/img546/4523/cnfg.png (mungkin dipublikasikan sebelumnya di salah satu artikel penulis)
Franck Dernoncourt

Tautan dalam jawaban tidak lagi tersedia. Bisakah Anda memberikan referensi lain?
BajajG


1

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.