Come produrre un bel diagramma dei risultati dell'analisi dei cluster di k-mean?


77

Sto usando R per fare il clustering di K-significa. Sto usando 14 variabili per eseguire K-medie

  • Qual è un modo carino per tracciare i risultati di K-mean?
  • Ci sono implementazioni esistenti?
  • Avere 14 variabili complica la rappresentazione dei risultati?

Ho trovato qualcosa chiamato GGcluster che sembra bello ma è ancora in fase di sviluppo. Ho anche letto qualcosa sulla mappatura del sammon, ma non l'ho capito molto bene. Sarebbe una buona opzione?


1
Se per qualche motivo ti preoccupi delle soluzioni attuali per questo problema molto pratico, considera di aggiungere commenti alle risposte esistenti o di aggiornare il tuo post con più contesto. Lavorare con 40.000 casi è un'informazione importante qui.
chl

Un altro esempio con 11 classi e 10 variabili è a pagina 118 di Elements of Statistical Learning ; non terribilmente informativo.
denis,

libreria (animazione) kmeans.ani (yourData, centres = 2)
Kartheek Palepu

Risposte:


27

Spingerei la trama della silhouette per questo, perché è improbabile che otterrai molte informazioni fruibili dai grafici a coppie quando il numero di dimensioni è 14.

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

Questo approccio è molto citato e noto (vedi qui per una spiegazione).

Siluette di Rousseeuw, PJ (1987) : un aiuto grafico per l'interpretazione e la validazione dell'analisi dei cluster . J. Comput. Appl. Matematica. , 20 , 53-65.


Mi piace questo. Esaminerò più a fondo. Grazie.
JEquihua,

@ user603: ti andrebbe di dare l'essenza della spiegazione nella tua risposta? Il link che hai dato 2,5 anni fa è morto. L'articolo è ancora lì, ma una breve introduzione a questa tecnica sarebbe piacevole.
Steen,

Il collegamento puntava al foglio (era un punto di accesso non recintato, che in effetti è diventato scuro).
user603

Ho una strana trama con questo silhoette (a sinistra è il grappolo e a destra è il silhoette, è previsto?) - i.imgur.com/ZIpPlhT.png
vipin8169

56

Ecco un esempio che può aiutarti:

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

In base a quest'ultimo diagramma è possibile decidere quale delle variabili iniziali tracciare. Forse 14 variabili sono enormi, quindi puoi provare prima un'analisi dei componenti principali (PCA) e quindi utilizzare i primi due o tre componenti del PCA per eseguire l'analisi del cluster.


1
Non riesco a capire come interpretare dc1 e dc2? Potresti indicarmi la giusta direzione?
UD1989,

1
@Upasana Datta: I due componenti sono il risultato dell'applicazione di analisi dei componenti principali (PCA, princomp funzione) sui dati. Sono combinazioni lineari delle variabili di input che rappresentano la maggior parte della variabilità delle osservazioni.
rakensi,

Ciao, sono perplesso su come vengono calcolate le ellissi nella seconda trama? Come determina "queste due componenti spiegano il 95,81% della variabilità dei punti"?
mynameisJEFF

@mynameisJEFF Suppongo che stia usando variabili latenti / canoniche, eignvalues, ecc. Potresti controllare la documentazione, ma questo è in genere ciò che significa quando vedi un biplot etichettato come tale. Sta dicendo che il 95,81% della variazione nei dati è spiegato dalle 2 variabili latenti su cui sono tracciati i dati. Aggiornamento: l'ho appena cercato su Google e, in effetti, utilizza i componenti principali.
Hack-R,

Perché hai bisogno di "con" qui? Sarebbe più semplice abbandonare la pairsfunzione.
Anatolii Stepaniuk,

4

Il modo più semplice che conosco per farlo è il seguente:

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)

In questo modo è possibile disegnare i punti di ciascun cluster usando un colore diverso e i loro centroidi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.