在R编程中绘制ROC曲线

大家好!在这篇文章中,我们将会详细了解机器学习的一个重要错误指标——在R编程中绘制ROC曲线。

好的,让我们开始吧!


ROC曲线的必要性

错误指标使我们能够评估和验证模型在特定数据集上的运行情况。

ROC图是其中一种错误指标。

ROC曲线,也被称为ROC AUC曲线,是一种分类错误指标。换句话说,它衡量了分类机器学习算法的功能和结果。

准确来说,ROC曲线代表数值的概率曲线,而AUC则是不同数值/标签组之间可分性的度量。通过ROC AUC曲线,我们可以分析并得出结论,模型根据标签正确地将多少数值进行了区分和分类。

AUC值越高,预测值的分类效果就越好。

以一个模型来预测和分类抛硬币的结果是“正面”还是“反面”。

所以,如果AUC分数高,表示该模型能够更有效地将“正面”分类为“正面”和“反面”分类为“反面”。

从技术角度来看,ROC曲线是根据模型的真正例率和假正例率绘制的。

让我们现在试着在接下来的部分中实现ROC曲线的概念吧!


方法一:使用plot()函数。

我们可以使用ROC曲线来评估机器学习模型,就像之前讨论过的一样。因此,让我们尝试在逻辑回归模型中实现ROC曲线的概念。

让我们开始吧!:)

在这个例子中,我们将使用银行贷款违约数据集进行逻辑回归建模。我们将使用来自“pROC”库的plot()函数绘制ROC曲线。你可以在这里找到数据集!

    1. 最初,我们使用read.csv()函数将数据集加载到环境中。

 

    1. 在建模之前,数据集的拆分是一个关键步骤。因此,我们使用R文档中的createDataPartition()函数将数据集分为训练数据和测试数据。

 

    1. 我们设置了一些错误指标来评估模型的运行情况,包括精确度、召回率、准确度、F1分数、ROC曲线等。

 

    1. 最后,我们使用R的glm()函数在数据集上应用逻辑回归。然后,我们使用predict()函数在测试数据上测试模型并获得错误指标的值。

 

    最后,我们通过roc()方法计算模型的roc AUC分数,并使用’pROC’库中可用的plot()函数绘制相应的图形。
rm(list = ls())
#Setting the working directory
setwd("D:/Edwisor_Project - Loan_Defaulter/")
getwd()
#Load the dataset
dta = read.csv("bank-loan.csv",header=TRUE)

### Data SAMPLING ####
library(caret)
set.seed(101)
split = createDataPartition(data$default, p = 0.80, list = FALSE)
train_data = data[split,]
test_data = data[-split,]

#error metrics -- Confusion Matrix
err_metric=function(CM)
{
  TN =CM[1,1]
  TP =CM[2,2]
  FP =CM[1,2]
  FN =CM[2,1]
  precision =(TP)/(TP+FP)
  recall_score =(FP)/(FP+TN)
  f1_score=2*((precision*recall_score)/(precision+recall_score))
  accuracy_model  =(TP+TN)/(TP+TN+FP+FN)
  False_positive_rate =(FP)/(FP+TN)
  False_negative_rate =(FN)/(FN+TP)
  print(paste("Precision value of the model: ",round(precision,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
CM= table(test_data[,13] , logit_P)
print(CM)
err_metric(CM)

#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 ")

输出: 只需要一种选择,将以下内容用中国母语进行释义。

ROC Curve Logistic Regression 1

第二种方法:使用roc.plot()函数。

R编程为我们提供了另一个名为‘verification’的库,用于绘制模型的ROC-AUC曲线。

为了使用这个功能,我们需要将“验证”库安装和导入到我们的环境中。

完成这个步骤后,我们使用roc.plot()函数绘制数据,以清晰评估数据值之间的“敏感性”和“特异性”如下所示。

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

“产出:”

ROC Plot Using Verification Package

结论

通过这个话题,我们已经到达了终点。如果你有任何问题,请随时在下方评论。

尝试将ROC曲线概念应用到其他机器学习模型中,并在评论区告诉我们你对此的理解。

一直保持关注,快乐学习! 🙂

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds