R语言利用caret包比较ROC曲线
2017-06-09 11:39
351 查看
说明
我们之前探讨了多种算法,每种算法都有优缺点,因而当我们针对具体问题去判断选择那种算法时,必须对不同的预测模型进行重做评估。为了简化这个过程,我们使用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对训练集的预测结果(未调优)是三种分类算法里最好的。
相关文章推荐
- R语言利用caret包比较ROC曲线
- R语言利用caret包比较模型性能差异
- 利用R语言如何进行文本比较算法——LD算法
- R语言:利用caret包中的dummyVars函数进行虚拟变量处理
- R语言:利用caret包中的dummyVars函数进行虚拟变量处理
- R语言利用caret包对变量重要程度排序与选择特性
- 利用指针比较大小
- 【日记】利用VB.NET实现MYSQL和MSSQL进行批量插入记录的方法及比较
- UVA - 1606 Amphiphilic Carbon Molecules : 极角扫描法 利用叉积比较极角大小
- 利用SIFT和RANSAC算法(openCV框架)实现物体的检测与定位,并求出变换矩阵(findFundamentalMat和findHomography的比较)
- 利用插件处理web打印的优缺点比较
- R语言利用RCurl下载验证码图片
- 利用枚举实现单例,与抽象类比较
- R语言利用wordcloud2绘制词云
- 二分类模型性能评价(R语言,logistic回归,ROC曲线,lift曲线,lorenz曲线)
- 利用R语言画出词云的一些实验
- hdu1141 (Factstone Benchmark(利用对数进行大数比较))
- 利用表变量和spt_values表来比较两个字串是否相等
- 利用Python画ROC曲线和AUC值计算
- R语言-绘制ROC曲线