Trazado de la curva ROC en Programación R

Las métricas de error nos permiten evaluar y justificar el rendimiento del modelo en un conjunto de datos específico. Una de esas métricas de error es el gráfico ROC. Una métrica de error de clasificación es el gráfico ROC, también conocido como curva ROC AUC. Es decir, evalúa el rendimiento y los resultados de los algoritmos de aprendizaje automático de clasificación.

Para ser más específicos, la curva ROC representa la curva de probabilidad del valor, mientras que el AUC es una medida de la separabilidad de diferentes grupos de valores/etiquetas. La curva ROC AUC se puede utilizar para analizar y sacar conclusiones sobre cuántos valores se han distinguido y clasificado correctamente por el modelo en función de las etiquetas.

Cuanto mayor sea la puntuación de AUC, mejor será la predicción de los valores predichos. En términos técnicos, la curva ROC es la relación entre la tasa de verdaderos positivos y la tasa de falsos positivos de un modelo. Intentemos ahora aplicar el concepto de la curva ROC en la siguiente sección.

Método 1: Usar la función plot()

Como se discutió anteriormente, podemos usar gráficos ROC para evaluar modelos de aprendizaje automático. Entonces, intentemos aplicar el concepto de curva ROC al modelo de regresión logística.

En este ejemplo, modelaríamos el conjunto de datos de Morosos de Préstamos Bancarios usando Regresión Logística. La curva ROC se trazaría utilizando la función plot() de la biblioteca ‘pROC’. ¡El conjunto de datos se puede encontrar aquí!

  • Primero, usamos la función read.csv() para cargar el conjunto de datos en el entorno.
  • Antes del modelado, es fundamental dividir el conjunto de datos. Como resultado, muestreamos el conjunto de datos en valores de datos de entrenamiento y prueba mediante la función createDataPartition() de la documentación de R.
  • Para evaluar el rendimiento del modelo, establecimos métricas de error como Precisión, Recuperación, Exactitud, puntaje F1, gráfico ROC, etc.
  • Luego, aplicamos la regresión logística a nuestro conjunto de datos usando la función R glm(). Luego, el modelo se prueba en los datos de prueba utilizando la función predict() y se calculan las métricas de error.
  • Finalmente, calculamos la puntuación roc AUC para el modelo usando el método roc() y la representamos usando la función plot() de la biblioteca ‘pROC’.

Enlace al archivo CSV utilizado: bank-loan .

R

rm(list=ls())
  
# Setting the working directory
setwd("D:/Edwisor_Project - Loan_Defaulter/")
getwd()
  
# Load the dataset
gfgDataset = read.csv("bank-loan.csv", header=TRUE)
  
### Data SAMPLING ####
library(caret)
set.seed(101)
split = createDataPartition(data$default, p=0.81, list=FALSE)
train_data = data[split, ]
test_data = data[-split, ]
  
# error metrics -- Confusion Matrix
err_metric = function(GFGCM)
{
    GFGTN = GFGCM[1, 1]
    GFGRATE = GFGCM[2, 2]
    FP = GFGCM[1, 2]
    FN = GFGCM[2, 1]
    gfgPrecise = (GFGRATE)/(GFGRATE+FP)
    recall_score = (FP)/(FP+GFGTN)
    f1_score = 2*((gfgPrecise*recall_score)/(gfgPrecise+recall_score))
    accuracy_model = (GFGRATE+GFGTN)/(GFGRATE+GFGTN+FP+FN)
    False_positive_rate = (FP)/(FP+GFGTN)
    False_negative_rate = (FN)/(FN+GFGRATE)
    print(paste("GfgPrecise value of the model: ", round(gfgPrecise, 2)))
    print(paste("Accuracy of the model: ", round(accuracy_model, 2)))
    print(paste("Recall value of the model: ", round(recall_score, 2)))
    print(paste("False Positive rate of the model: ", round(False_positive_rate, 2)))
    print(paste("False Negative rate of the model: ", round(False_negative_rate, 2)))
    print(paste("f1 score of the model: ", round(f1_score, 2)))
}
  
# 1. Logistic regression
logit_m = glm(formula=default~., data=train_data, family='binomial')
summary(logit_m)
logit_P = predict(logit_m, newdata=test_data[-13], type='response')
logit_P < - ifelse(logit_P > 0.5, 1, 0)  # Probability check
GFGCM = table(test_data[, 13], logit_P)
print(GFGCM)
err_metric(GFGCM)
  
# ROC-curve using pROC library
library(pROC)
roc_score = roc(test_data[, 13], logit_P)  # AUC score
plot(roc_score, main="ROC curve -- Logistic Regression ")

 

Método 2: Uso de la función roc.plot()

Para trazar la curva ROC-AUC para un modelo, podemos usar otra biblioteca llamada verificación en programación R. Para usar la función, primero debemos instalar e importar la biblioteca de verificación a nuestro entorno.

Después de eso, trazamos los datos usando la función roc.plot() para obtener una imagen clara de la ‘Sensibilidad’ y la ‘Especificidad’ de los valores de los datos, como se muestra a continuación.

R

install.packages("starter")
  
library(verification)
x<- c(0,0,0,1,0,0)
y<- c(.7, .7, 0, 1,5,.6)
  
gfgData<-gfgData.frame(x,y)
names(data)<-c("plot","axis")
roc.plot(gfgData$yes, gfgData$no)

 

Publicación traducida automáticamente

Artículo escrito por therebootedcoder y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *