sábado, 28 de febrero de 2015

Curva ROC con package ROCR

El siguiente script crea una curva ROC de un modelo predictivo de rpart sobre datos de TEST, usando el package ROCR. Esto para medir eficiencia de predicción del modelo.

Para detalle de curva ROC ver nota publicada AQUI

Conceptualmente el proceso seria así:














El script:
# CARGA LIBRERIA Y DATOS
#------------------------------------------------------------------------------
library(rpart)   # para arbol decision
library(rattle)  # para data set, y arbol decision
library(ROCR)    # para curva ROC
 
datos         <- weather
datos         <- within(datos, rm("Date","Location","RISK_MM")) #borra dummy 
set.seed(42)  #  fija la secuencia de numeros aleatorios
sampleTrain   <- sample(nrow(datos),(nrow(datos)*.7)) 
Train         <- datos[sampleTrain,]
Test          <- datos[-sampleTrain,]
 
 
# MODELO 
#------------------------------------------------------------------------------
modelo.rpart  <- rpart(RainTomorrow ~ .,Train, method="class")
 
 
# PREDICCION
#------------------------------------------------------------------------------
predict.rpart <- predict(modelo.rpart,Test,type = "prob")[,2] #prob. clase=yes
predict.rocr  <- prediction (predict.rpart,Test$RainTomorrow)
perf.rocr     <- performance(predict.rocr,"tpr","fpr") #True y False postivie.rate
 
 
# GRAFICO CURVA ROC
#------------------------------------------------------------------------------
auc <- as.numeric(performance(predict.rocr ,"auc")@y.values)
plot(perf.rocr,type='o', main = paste('Area Bajo la Curva =',round(auc,2)))  
abline(a=0, b= 1)
 
 
# GRAFICO ARBOL DECISION
#------------------------------------------------------------------------------
fancyRpartPlot(modelo.rpart)     




Referencia:



2 comentarios:

  1. Me dice que no puede encontrar la función prediction ¿me puedes ayudar?

    ResponderEliminar
    Respuestas
    1. Hola Raul. Hice prueba y no tuve error. Valida qué versiones de librerias tienes. Esto lo puedes hacer ejecutando la funcion sessionInfo(). Yo hice pruebas con estas versiones: ROCR_1.0-11 rattle_5.2.0 rpart_4.1-15

      Cualquier duda, me escribes por mail
      suerte!

      Eliminar