Построение кривой ROC в R Programming

Опубликовано: 8 Сентября, 2022

Метрики ошибок позволяют нам оценить и обосновать производительность модели на конкретном наборе данных. Одной из таких метрик ошибок является график ROC. Метрикой ошибки классификации является график ROC, также известный как кривая ROC AUC. То есть он оценивает производительность и результаты алгоритмов машинного обучения классификации.

Чтобы быть более конкретным, кривая ROC представляет собой кривую вероятности значения, тогда как AUC является мерой разделимости различных групп значений/меток. Кривую ROC AUC можно использовать для анализа и получения выводов о том, сколько значений были правильно выделены и классифицированы моделью на основе меток.

Чем выше оценка AUC, тем лучше предсказание прогнозируемых значений. С технической точки зрения, кривая ROC представляет собой отношение между истинной положительной частотой модели и ложноположительной частотой. Давайте теперь попробуем применить концепцию кривой ROC в следующем разделе.

Способ 1: Использование функции plot()

Как обсуждалось ранее, мы можем использовать графики ROC для оценки моделей машинного обучения. Итак, давайте попробуем применить концепцию кривой ROC к модели логистической регрессии.

В этом примере мы будем моделировать набор данных о неплательщиках банковских кредитов с использованием логистической регрессии. Кривая ROC будет построена с использованием функции plot() из библиотеки «pROC». Набор данных можно найти здесь!

  • Во-первых, мы используем функцию read.csv() для загрузки набора данных в среду.
  • Перед моделированием очень важно разделить набор данных. В результате мы используем набор данных для обучения и проверки значений данных с помощью функции createDataPartition() из документации R.
  • Чтобы оценить производительность модели, мы установили метрики ошибок, такие как точность, полнота, точность, оценка F1, график ROC и так далее.
  • После этого мы применяем логистическую регрессию к нашему набору данных, используя функцию Rglm(). Затем модель тестируется на тестовых данных с помощью функции предсказания() и рассчитываются метрики ошибок.
  • Наконец, мы вычисляем показатель roc AUC для модели с помощью метода roc() и строим его с помощью функции plot() из библиотеки pROC.

Ссылка на используемый CSV-файл: 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 ")

Способ 2: Использование функции roc.plot()

Чтобы построить кривую ROC-AUC для модели, мы можем использовать другую библиотеку, называемую проверкой в программировании R. Чтобы использовать эту функцию, мы должны сначала установить и импортировать библиотеку проверки в нашу среду.

После этого мы наносим данные на график с помощью функции roc.plot(), чтобы получить четкое представление о «чувствительности» и «специфичности» значений данных, как показано ниже.

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)