RandomForest - Interpretazione del diagramma MDS


14

Ho usato randomForest per classificare 6 comportamenti animali (ad es. In piedi, camminare, nuotare, ecc.) In base a 8 variabili (diverse posture del corpo e movimento).

MDSplot nel pacchetto randomForest mi dà questo output e ho problemi nell'interpretazione del risultato. Ho fatto un PCA sugli stessi dati e ho già ottenuto una bella separazione tra tutte le classi in PC1 e PC2, ma qui Dim1 e Dim2 sembrano separare solo 3 comportamenti. Ciò significa che questi tre comportamenti sono i più diversi rispetto a tutti gli altri comportamenti (quindi MDS cerca di trovare la massima differenza tra le variabili, ma non necessariamente tutte le variabili nel primo passaggio)? Cosa indica il posizionamento dei tre cluster (come ad esempio in Dim1 e Dim2)? Dato che sono piuttosto nuovo di RI, ho anche problemi a tramare una leggenda di questa trama (comunque ho idea di cosa significhino i diversi colori), ma forse qualcuno potrebbe aiutare? Molte grazie!!

RandomForest MDSplot di 6 diversi comportamenti animali

Aggiungo un grafico creato con la funzione ClassCenter in RandomForest. Questa funzione utilizza anche la matrice di prossimità (come nel grafico MDS) per la stampa dei prototipi. Ma solo osservando i punti dati per i sei diversi comportamenti, non riesco a capire perché la matrice di prossimità tracci i miei prototipi così come sono. Ho anche provato la funzione classcenter con i dati dell'iride e funziona. Ma sembra che non funzioni per i miei dati ...

Ecco il codice che ho usato per questa trama

be.rf <- randomForest(Behaviour~., data=be, prox=TRUE, importance=TRUE)
class1 <- classCenter(be[,-1], be[,1], be.rf$prox)
Protoplot <- plot(be[,4], be[,7], pch=21, xlab=names(be)[4], ylab=names(be)[7], bg=c("red", "green", "blue", "yellow", "turquoise", "orange") [as.numeric(factor(be$Behaviour))])
points(class1[,4], class1[,7], pch=21, cex=2, bg=c("red", "green", "blue", "yellow", "turquoise", "orange"))

La colonna della mia classe è la prima, seguita da 8 predittori. Ho tracciato due delle migliori variabili predittive come xey.

RandomForest ClassCenter trama per 6 diversi comportamenti animali

Risposte:


10

La funzione MDSplot traccia il (PCA di) la matrice di prossimità. Dalla documentazione per randomForest, la matrice di prossimità è:

Una matrice di misure di prossimità tra gli input (in base alla frequenza con cui le coppie di punti dati si trovano negli stessi nodi terminali).

Sulla base di questa descrizione, possiamo indovinare cosa significano i diversi grafici. Sembra che tu abbia specificato k = 4, il che significa una decomposizione della matrice di prossimità in 4 componenti. Per ogni voce (i, j) in questa matrice di grafici, ciò che viene tracciato è la decomposizione PCA lungo la dimensione i rispetto alla decomposizione PCA lungo la dimensione j.

Ho fatto un PCA sugli stessi dati e ho già ottenuto una bella separazione tra tutte le classi in PC1 e PC2, ma qui Dim1 e Dim2 sembrano separare solo 3 comportamenti. Questo significa che questi tre comportamenti sono i più diversi rispetto a tutti gli altri comportamenti (quindi MDS cerca di trovare la massima differenza tra le variabili, ma non necessariamente tutte le variabili nel primo passaggio)?

MDS può basare la sua analisi solo sull'output di randomForest. Se ti aspetti una separazione migliore, allora potresti voler controllare le prestazioni di classificazione del tuo randomForest. Un'altra cosa da tenere a mente è che il tuo PCA sta mappando da dati 9-dimensionali a 2 dimensioni, ma l'MDS sta mappando da una matrice di prossimità dimensionale NxN a 2 dimensioni, dove N è il numero di punti dati.

Cosa indica il posizionamento dei tre cluster (come ad esempio in Dim1 e Dim2)?

Ti dice solo quanto distanti (relativamente) questi cluster sono l'uno dall'altro. È un aiuto di visualizzazione, quindi non lo interpreterei troppo.

Dato che sono piuttosto nuovo di RI, ho anche problemi a tramare una leggenda di questa trama (comunque ho un'idea di cosa significano i diversi colori), ma forse qualcuno potrebbe aiutare?

Il modo in cui R funziona, non c'è modo di tracciare la leggenda dopo il fatto (diversamente da come dice Matlab, dove queste informazioni sono memorizzate all'interno dell'oggetto figura). Tuttavia, osservando il codice per MDSplot, vediamo che il blocco di codice rilevante è:

palette <- if (require(RColorBrewer) && nlevs < 12) brewer.pal(nlevs, "Set1")

...

plot(rf.mds$points, col = palette[as.numeric(fac)], pch = pch, ...)

Quindi i colori saranno presi da quella palette e mappati ai livelli (comportamenti) nell'ordine che hai dato loro. Quindi se vuoi tracciare una leggenda:

legend(x,y,levels(fac),col=brewer.pal(nlevs, 'Set1'), pch=pch)

probabilmente funzionerebbe.


Grazie mille per la tua risposta, questo è davvero utile !! Le prestazioni di classificazione del mio modello di foresta casuale sono piuttosto buone (tasso di errore OOB 4,94% e precisione del 95% con CV), ecco perché mi aspettavo una migliore separazione nel diagramma MDS. Ho anche provato a tracciare una figura con la funzione classCenter per i prototipi delle classi (ho seguito l'esempio dell'iride nel manuale RF), ma poiché la funzione utilizza anche la matrice di prossimità, i prototipi non sembrano avere senso. Ma in questa trama è ovvio che le classi si separano bene, ma i prototipi no.
Pat

Aggiungerò la trama di ClassCenter alla mia domanda sopra. Ho anche pensato che le diverse scale dei miei predittori potrebbero essere il problema, ma sembra che il ridimensionamento non sia necessario quando si utilizza la foresta casuale. Ho appena provato il comando legenda ma non ha funzionato, ma penso che probabilmente stia commettendo un errore. Daremo un altro tentativo domani. Grazie ancora!
Pat
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.