随机森林分类的 ROC 曲线
Posted
技术标签:
【中文标题】随机森林分类的 ROC 曲线【英文标题】:ROC curve for classification from randomForest 【发布时间】:2012-09-04 10:33:45 【问题描述】:我在 R 平台中使用randomForest
包进行分类任务。
rf_object<-randomForest(data_matrix, label_factor, cutoff=c(k,1-k))
其中 k 的范围从 0.1 到 0.9。
pred <- predict(rf_object,test_data_matrix)
我有随机森林分类器的输出,并将其与标签进行了比较。所以,我有 9 个截止点的性能指标,如准确性、MCC、灵敏度、特异性等。
现在,我想画出ROC曲线,得到ROC曲线下的面积,看看性能有多好。 R 中的大多数包(如 ROCR、pROC)都需要预测和标签,但我有敏感性 (TPR) 和特异性 (1-FPR)。
如果截止方法正确或可靠地生成ROC曲线,有人可以建议我吗? 你知道用TPR和FPR得到ROC曲线和曲线下面积的方法吗?
我还尝试使用以下命令来训练随机森林。这样,预测是连续的,并且可以被 R 中的 ROCR
和 pROC
包接受。但是,我不确定这是否是正确的方法。任何人都可以向我推荐这种方法吗?
rf_object <- randomForest(data_matrix, label_vector)
pred <- predict(rf_object, test_data_matrix)
感谢您花时间阅读我的问题!我为此花了很长时间冲浪。感谢您的建议/建议。
【问题讨论】:
【参考方案1】:为什么不输出类概率?这样,您就可以对预测进行排名,并且可以将其直接输入到任何 ROC 包中。
m = randomForest(data_matrix, labels)
predict(m,newdata_matrix,type='prob')
请注意,要使用 randomForest 作为分类工具,labels
必须是因子向量。
【讨论】:
以上是关于随机森林分类的 ROC 曲线的主要内容,如果未能解决你的问题,请参考以下文章
python基于随机森林模型的预测概率和标签信息可视化ROC曲线
sklearn库学习----随机森林(RandomForestClassifier,RandomForestRegressor)