当前位置: 首页 > 数据分析师 > 数据分析师实战技能 > 数据分析师数据分析 > R语言利用caret包比较ROC曲线

R语言利用caret包比较ROC曲线

发布时间:2020年09月28日 09:07:09 来源: 点击量:254

【摘要】R语言利用caret包比较ROC曲线我们之前探讨了多种算法,每种算法都有优缺点,因而当我们针对具体问题去判断选择那种算法时,必须对不同的预

R语言利用caret包比较ROC曲线

我们之前探讨了多种算法,每种算法都有优缺点,因而当我们针对具体问题去判断选择那种算法时,必须对不同的预测模型进行重做评估。为了简化这个过程,我们使用caret包来生成并比较不同的模型与性能。
操作
加载对应的包与将训练控制算法设置为10折交叉验证,重复次数为3:
library(ROCR)
library(e1071)
library("pROC")
library(caret)
library("pROC")
control = trainControl(method = "repaetedcv",
                       number = 10,
                       repeats =3,
                       classProbs = TRUE,
                       summaryFunction = twoClassSummary)

使用glm在训练数据集上训练一个分类器

glm.model = train(churn ~ .,
                  data= trainset,
                  method = "glm",
                  metric = "ROC",
                  trControl = control)
使用svm在训练数据集上训练一个分类器

svm.model = train(churn ~ .,
                  data= trainset,
                  method = "svmRadial",
                  metric = "ROC",
                  trControl = control)
使用rpart函数查看rpart在训练数据集上的运行情况

rpart.model = train(churn ~ .,
                    data = trainset,
                    method = "svmRadial",
                    metric = "ROC",
                    trControl = control)
使用不同的已经训练好的数据分类预测:

glm.probs = predict(glm.model,testset[,!names(testset) %in% c("churn")],type = "prob")
svm.probs = predict(svm.model,testset[,!names(testset) %in% c("churn")],type = "prob")
rpart.probs = predict(rpart.model,testset[,!names(testset) %in% c("churn")],type = "prob")
生成每个模型的ROC曲线,将它们绘制在一个图中:

glm.ROC = roc(response = testset[,c("churn")],
              predictor = glm.probs$yes,
              levels = levels(testset[,c("churn")]))
plot(glm.ROC,type = "S",col = "red")

svm.ROC = roc(response = testset[,c("churn")],
              predictor = svm.probs$yes,
              levels = levels(testset[,c("churn")]))
plot(svm.ROC,add = TRUE,col = "green")

rpart.ROC = roc(response = testset[,c("churn")],
              predictor = rpart.probs$yes,
              levels = levels(testset[,c("churn")]))

plot(rpart.ROC,add = TRUE,col = "blue")

三种分类器的ROC曲线

说明

将不同的分类模型的ROC曲线绘制在同一个图中进行比较,设置训练过程的控制参数为重复三次的10折交叉验证,模型性能的评估参数为twoClassSummary,然后在使用glm,svm,rpart,三种不同的方法建立分类模型。
从图中可以看出,svm对训练集的预测结果(未调优)是三种分类算法里最好的。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部