2012-09-11 18 views
6

Estoy utilizando el paquete randomForest en la plataforma R para la tarea de clasificación.curva ROC para la clasificación de randomForest

rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k)) 

donde k varía de 0.1 a 0.9.

pred <- predict(rf_object,test_data_matrix) 

Tengo el resultado del clasificador de bosque aleatorio y lo comparé con las etiquetas. Por lo tanto, tengo las medidas de rendimiento como precisión, MCC, sensibilidad, especificidad, etc. para 9 puntos de corte.

Ahora, quiero trazar la curva ROC y obtener el área bajo la curva ROC para ver qué tan bueno es el rendimiento. La mayoría de los paquetes en R (como ROCR, pROC) requieren predicción y etiquetas, pero tengo sensibilidad (TPR) y especificidad (1-FPR).

¿Puede alguien sugerirme si el método de corte es correcto o confiable para producir la curva ROC? ¿Conoces alguna forma de obtener la curva ROC y el área debajo de la curva usando TPR y FPR?

También traté de usar el siguiente comando para entrenar bosque aleatorio. De esta forma, las predicciones fueron continuas y aceptables para los paquetes ROCR y pROC en R. Sin embargo, no estoy seguro de si esta es la forma correcta de hacerlo. ¿Puede alguien sugerirme acerca de este método?

rf_object <- randomForest(data_matrix, label_vector) 
pred <- predict(rf_object, test_data_matrix) 

¡Gracias por su tiempo, lean mi problema! He pasado mucho tiempo navegando por esto. Gracias por su sugerencia/consejo.

Respuesta

13

¿Por qué no sacas las probabilidades de clase? De esta manera, tiene un ranking de sus predicciones y puede ingresarlo directamente a cualquier paquete de ROC.

m = randomForest(data_matrix, labels) 
predict(m,newdata_matrix,type='prob') 

Tenga en cuenta que, para usar randomForest como herramienta de clasificación, labels debe ser un vector de factores.

Cuestiones relacionadas