Bagaimana cara menghasilkan plot yang bagus dari hasil analisis klaster k-means?

77

Saya menggunakan R untuk melakukan pengelompokan K-means. Saya menggunakan 14 variabel untuk menjalankan K-means

  • Apa cara yang bagus untuk memplot hasil K-means?
  • Apakah ada implementasi yang ada?
  • Apakah memiliki 14 variabel menyulitkan merencanakan hasilnya?

Saya menemukan sesuatu yang disebut GGcluster yang terlihat keren tetapi masih dalam pengembangan. Saya juga membaca sesuatu tentang pemetaan sammon, tetapi tidak memahaminya dengan baik. Apakah ini pilihan yang bagus?

JEquihua
sumber
1
Jika karena alasan tertentu Anda khawatir dengan solusi yang ada untuk masalah yang sangat praktis ini, silakan pertimbangkan untuk menambahkan komentar pada balasan yang ada atau perbarui posting Anda dengan lebih banyak konteks. Bekerja dengan 40.000 kasus adalah informasi penting di sini.
chl
Contoh lain dengan 11 kelas dan 10 variabel ada di halaman 118 dari Elemen Pembelajaran Statistik ; tidak terlalu informatif.
denis
perpustakaan (animasi) kmeans.ani (data Anda, center = 2)
Kartheek Palepu

Jawaban:

27

Saya akan mendorong plot siluet untuk ini, karena tidak mungkin Anda akan mendapatkan banyak informasi yang dapat ditindaklanjuti dari plot pasangan ketika jumlah dimensi adalah 14.

library(cluster)
library(HSAUR)
data(pottery)
km    <- kmeans(pottery,3)
dissE <- daisy(pottery) 
dE2   <- dissE^2
sk2   <- silhouette(km$cl, dE2)
plot(sk2)

Pendekatan ini sangat dikutip dan terkenal (lihat di sini untuk penjelasan).

Rousseeuw, PJ (1987) Silhouettes: Bantuan grafis untuk interpretasi dan validasi analisis klaster . J. Comput. Appl. Matematika , 20 , 53-65.

pengguna603
sumber
Saya suka ini. Saya akan melihat lebih jauh ke dalamnya. Terima kasih.
JEquihua
@ user603: Apakah Anda ingin memberikan inti penjelasan dalam jawaban Anda? Tautan yang Anda berikan 2,5 tahun yang lalu telah mati. Artikel itu masih ada tetapi intro pendek untuk teknik ini akan menyenangkan.
Steen
Tautannya menunjuk ke kertas (itu adalah titik akses yang tidak terjaga keamanannya, yang memang sudah gelap).
user603
Saya mendapat plot aneh dengan silhoette ini (di sebelah kiri adalah clusplot dan di kanan adalah plot silhoette, apakah ini yang diharapkan?) - i.imgur.com/ZIpPlhT.png
vipin8169
56

Berikut ini contoh yang dapat membantu Anda:

library(cluster)
library(fpc)

data(iris)
dat <- iris[, -5] # without known classification 
# Kmeans clustre analysis
clus <- kmeans(dat, centers=3)
# Fig 01
plotcluster(dat, clus$cluster)

# More complex
clusplot(dat, clus$cluster, color=TRUE, shade=TRUE, 
         labels=2, lines=0)

# Fig 03
with(iris, pairs(dat, col=c(1:3)[clus$cluster])) 

Berdasarkan plot yang terakhir Anda bisa memutuskan mana variabel awal Anda untuk plot. Mungkin 14 variabel besar, sehingga Anda dapat mencoba analisis komponen utama (PCA) sebelum dan kemudian menggunakan dua atau tiga komponen pertama dari PCA untuk melakukan analisis kluster.

Manuel Ramón
sumber
1
Saya tidak tahu bagaimana cara intepret dc1 dan dc2? Bisakah Anda mengarahkan saya ke arah yang benar?
UD1989
1
@Upasana Datta: Kedua komponen ini adalah hasil dari penerapan analisis komponen utama (PCA, function princomp) pada data. Mereka adalah kombinasi linear dari variabel input yang bertanggung jawab atas sebagian besar variabilitas pengamatan.
rakensi
Hai, saya bingung bagaimana elips dihitung di plot ke-2? Bagaimana cara menentukan "dua komponen ini menjelaskan 95,81% dari variabilitas titik"?
mynameisJEFF
@mynameisJEFF Saya akan berasumsi bahwa itu menggunakan variabel laten / kanonik, nilai eigna, dll. Anda dapat memeriksa dokumentasi, tetapi itulah artinya ketika Anda melihat biplot berlabel seperti itu. Dikatakan bahwa 95,81% variasi dalam data dijelaskan oleh 2 variabel laten yang dijadikan dasar data. Pembaruan - Saya baru saja meng-Google-nya, dan memang menggunakan komponen-komponen utama.
Hack-R
Mengapa Anda perlu "dengan" di sini? Akan lebih ramping untuk meninggalkan pairsfungsinya.
Anatolii Stepaniuk
4

Cara paling sederhana yang saya tahu untuk melakukan itu adalah sebagai berikut:

X <- data.frame(c1=c(0,1,2,4,5,4,6,7),c2=c(0,1,2,3,3,4,5,5))
km <- kmeans(X, center=2)
plot(X,col=km$cluster)
points(km$center,col=1:2,pch=8,cex=1)

Dengan cara ini Anda dapat menggambar titik-titik masing-masing cluster menggunakan warna dan centroid yang berbeda.

darioSka
sumber