RandomForest - Interpretación de la trama MDS

14

Utilicé randomForest para clasificar 6 comportamientos de animales (p. Ej., Estar de pie, caminar, nadar, etc.) en base a 8 variables (diferentes posturas corporales y movimiento).

El MDSplot en el paquete randomForest me da este resultado y tengo problemas para interpretar el resultado. Hice un PCA con los mismos datos y obtuve una buena separación entre todas las clases en PC1 y PC2, pero aquí Dim1 y Dim2 parecen separar 3 comportamientos. ¿Significa esto que estos tres comportamientos son más diferentes que todos los demás comportamientos (por lo que MDS trata de encontrar la mayor diferencia entre las variables, pero no necesariamente todas las variables en el primer paso)? ¿Qué indica el posicionamiento de los tres grupos (como, por ejemplo, en Dim1 y Dim2)? Como soy bastante nuevo en RI, también tengo problemas para trazar una leyenda para esta trama (sin embargo, tengo una idea de lo que significan los diferentes colores), pero ¿tal vez alguien podría ayudar? ¡¡Muchas gracias!!

RandomForest MDSplot de 6 comportamientos animales diferentes

Agrego un diagrama hecho con la función ClassCenter en RandomForest. Esta función también utiliza la matriz de proximidad (igual que en el diagrama MDS) para trazar los prototipos. Pero solo mirando los puntos de datos de los seis comportamientos diferentes, no puedo entender por qué la matriz de proximidad trazaría mis prototipos como lo hace. También probé la función classcenter con los datos del iris y funciona. Pero parece que no funciona para mis datos ...

Aquí está el código que usé para esta 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"))

Mi columna de clase es la primera, seguida de 8 predictores. Tracé dos de las mejores variables predictoras como x e y.

Parcela RandomForest ClassCenter para 6 comportamientos animales diferentes

Palmadita
fuente

Respuestas:

10

La función MDSplot traza el (PCA de) la matriz de proximidad. De la documentación para randomForest, la matriz de proximidad es:

Una matriz de medidas de proximidad entre la entrada (basada en la frecuencia con la que los pares de puntos de datos están en los mismos nodos terminales).

En base a esta descripción, podemos adivinar lo que significan los diferentes gráficos. Parece que ha especificado k = 4, lo que significa una descomposición de la matriz de proximidad en 4 componentes. Para cada entrada (i, j) en esta matriz de gráficos, lo que se traza es la descomposición de PCA a lo largo de la dimensión i versus la descomposición de PCA a lo largo de la dimensión j.

Hice un PCA con los mismos datos y obtuve una buena separación entre todas las clases en PC1 y PC2, pero aquí Dim1 y Dim2 parecen separar 3 comportamientos. ¿Significa esto que estos tres comportamientos son más diferentes que todos los demás comportamientos (por lo que MDS trata de encontrar la mayor diferencia entre las variables, pero no necesariamente todas las variables en el primer paso)?

MDS solo puede basar su análisis en el resultado de su randomForest. Si espera una mejor separación, es posible que desee verificar el rendimiento de clasificación de su randomForest. Otra cosa a tener en cuenta es que su PCA está asignando datos de 9 dimensiones a 2 dimensiones, pero el MDS está asignando desde una matriz de proximidad NxN-dimensional a 2 dimensiones, donde N es el número de puntos de datos.

¿Qué indica el posicionamiento de los tres grupos (como, por ejemplo, en Dim1 y Dim2)?

Simplemente te dice qué tan separados (relativamente) están estos grupos entre sí. Es una ayuda de visualización, por lo que no lo interpretaría en exceso.

Como soy bastante nuevo en RI, también tengo problemas para trazar una leyenda para esta trama (sin embargo, tengo una idea de lo que significan los diferentes colores), pero ¿tal vez alguien podría ayudar?

De la forma en que funciona R, no hay forma de trazar la leyenda después del hecho (a diferencia de, por ejemplo, Matlab, donde esta información se almacena dentro del objeto de la figura). Sin embargo, al mirar el código de MDSplot, vemos que el bloque de código relevante es:

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

...

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

Por lo tanto, los colores se tomarán de esa paleta y se asignarán a los niveles (comportamientos) en el orden en que los haya asignado. Entonces, si quieres trazar una leyenda:

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

Probablemente funcionaría.

FrankD
fuente
Muchas gracias por tu respuesta, ¡esto es realmente útil! El rendimiento de clasificación de mi modelo de bosque aleatorio es bastante bueno (tasa de error OOB 4.94% y precisión del 95% con CV), es por eso que esperaba una mejor separación en el diagrama MDS. También intenté trazar una figura con la función classCenter para los prototipos de las clases (seguí el ejemplo del iris en el manual de RF), pero como la función también usa la matriz de proximidad, los prototipos simplemente no parecen tener sentido. Pero en esta trama es obvio que las clases se separan muy bien, pero los prototipos no.
Pat
Agregaré el diagrama de ClassCenter a mi pregunta anterior. También pensé que las diferentes escalas de mis predictores podrían ser el problema, pero parece que la escala no es necesaria cuando se usa un bosque aleatorio. Intenté rápidamente el comando de leyenda, pero no funcionó, pero creo que probablemente estoy cometiendo un error. Lo intentaré otra vez mañana. ¡Gracias de nuevo!
Pat