【问题标题】:Random forest evaluation in RR中的随机森林评估
【发布时间】:2015-10-19 04:53:34
【问题描述】:

我是 R 的新手,我正在努力创建我的第一个模型。我在一个 2 类随机森林项目中工作,到目前为止,我已经对模型进行了如下编程:

library(randomForest)

set.seed(2015)

randomforest <- randomForest(as.factor(goodkit) ~ ., data=training1, importance=TRUE,ntree=2000)

varImpPlot(randomforest)

prediction <- predict(randomforest, test,type='prob')

print(prediction)

我不确定为什么我没有得到模型的整体预测。我的代码中一定遗漏了一些东西。我得到了 OOB 和测试集中每个案例的预测,但没有得到模型的整体预测。

library(pROC)

auc <-roc(test$goodkit,prediction)

print(auc)

这根本不起作用。

我已经阅读了 pROC 手册,但我无法理解所有内容。如果任何人都可以帮助编写代码或发布一个好的实用示例的链接,那将非常有帮助。

【问题讨论】:

  • 模型的“总体预测”究竟是什么?对教程链接的请求被认为是本网站的题外话。最好问一个明确的编程问题。
  • 整体预测是指我的模型的预测分数。有关 AUC 代码的任何帮助/提示?

标签: r random-forest prediction roc auc


【解决方案1】:

您的问题是randomForest 对象上的predicttype='prob' 返回两个预测:每列包含属于每个类别的概率(用于二元预测)。

您必须决定使用这些预测中的哪一个来构建 ROC 曲线。幸运的是,对于二进制分类,它们是相同的(只是颠倒了):

auc1 <-roc(test$goodkit, prediction[,1])
print(auc1)
auc2 <-roc(test$goodkit, prediction[,2])
print(auc2)

【讨论】:

  • 非常感谢您的帖子。在 mmy 案例中有意义的是按照 Morris 的建议使用 auc2。
  • @WillieM 如果它回答了您的问题,请记住接受答案,并为您认为有用的答案投票。
【解决方案2】:

使用ROCR包,以下代码应该用于计算AUC:

library(ROCR)
predictedROC <- prediction(prediction[,2], as.factor(test$goodkit))
as.numeric(performance(predictedROC, "auc")@y.values))

【讨论】:

  • 我尝试了你的代码,我得到了一些错误。另外,我不明白。我认为直到predigedroc
  • 我认为我们不需要指定“as.numeric”,因为我在预测上使用类型=“prob”。此外,我不明白“performance(predgeedroc,”auc“)”,为什么当您尝试计算该语句时,为什么在语句中包含。代码的最后一部分“@ y.values”似乎用于做相同类型的cv ?? “y.values”的定义说:每个条目包含此特定交叉验证运行曲线的y值的列表。 span>
  • 抱歉,我忘记了一个小,但对该代码的关键部分!但是,你似乎很困惑。 R的主要高级部分是能够为特定问题构建自己的特殊数据结构。许多包裹,覆盖范围利用这一点。 S4对象是这些特殊类型的对象。因此,我们首先使用reoct预测函数创建预测对象,然后在创建性能对象时使用该预测对象。这就是为什么我在代码中使用AS.Numeric()。 span>
  • morris,非常感谢您的帖子。我已经修改了代码,现在正在运作。 span>
猜你喜欢
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2019-05-04
  • 2018-01-18
  • 2020-02-25
  • 1970-01-01
相关资源
最近更新 更多