专业的编程技术博客社区

网站首页 > 博客文章 正文

R数据分析:ROC曲线与模型评价实例

baijin 2024-10-29 13:05:43 博客文章 12 ℃ 0 评论

如果大家看到过做预测模型的文章,肯定对ROC不陌生:

A receiver operating characteristic curve, or ROC curve, is a graphical plot that illustrates the diagnostic ability of a binary classifier system as its discrimination threshold is varied.

简单说,ROC 曲线接收者操作特征曲线)就是一种显示二分类模型在所有分类阈值下的效果的图形画表示。

今天就给大家写一个用R语言做ROC的完整实例,大家先点赞,再往下看哈。嘿嘿。

数据说明

今天的文章还是接着昨天的文章写,R数据分析:如何做逻辑斯蒂回归,使用的数据都在前面这篇文章中有介绍。

在上面的文章中,我不是建立了两个模型嘛,一个叫做gpamodel,一个叫做full model:

gpaModel <- glm(admit ~ gpa, data = myData, family = "binomial")
fullModel <- glm(admit ~ gpa + gre + rank, data = myData, family = "binomial")

两者的区别就是纳入的自变量不一样,那么今天我要做的就是用ROC来评价一下这两个模型哪一个更好。

具体操作

install.packages("ROCR")
library(ROCR)
probFull <- predict(fullModel, myData, type = "response")
predictFull <- prediction(probFull, myData$admit)
perfFull <- performance(predictFull, measure = "tpr", x.measure = "fpr")

上面的代码首先是安装和加载包,然后是使用predict方法得到全模型对原始数据的预测概率probFull,然后用prediction方法将预测概率转化为标准化:

Every classifier evaluation using ROCR starts with creating a prediction object. This function is used to transform the input data (which can be in vector, matrix, data frame, or list form) into a standardized format.

这个标准化的转化是一个必须的步骤,然后我们就可以用performance方法来评估模型的预测能力了,在这个方法中我们规定了两个测量,分别是tpr和fpr,即真阳性率和假阳性率,就是我们画ROC曲线的两个必要指标

好了,

有了这些我们就可以出图了:

plot(perfFull, col = "blue")


同样的方法,我们画出gpaModel的ROC曲线:

probGpa <- predict(gpaModel, myData, type = "response")
predictGpa <- prediction(probGpa, myData$admit)
perfGpa <- performance(predictGpa, measure = "tpr", x.measure = "fpr")

plot(perfGpa, add = TRUE)

完美!

现在,我们其实能够看出来,第二支曲线的AUC要小,当然我们也可以输出我们的AUC看一看的:

aucFull <- performance(predictFull, measure = "auc")
aucGpa <- performance(predictGpa, measure = "auc")
aucFull@y.values
aucGpa@y.values


看到没,确实我们的全模型的AUC比只有gpa的模型的AUC要大,这个就说明全模型的预测表现更好。

小结

今天给大家写了一个R语言做ROC曲线和曲线下面积的实例,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

R数据分析:如何做逻辑斯蒂回归

机器学习:逻辑回归分类器(一)

机器学习:朴素贝叶斯的机理

机器学习:用例子手撕朴素贝叶斯

R数据分析:贝叶斯定理的R语言模拟

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表