R中的randomForest包中mse计算

3

我感觉我在这里缺少了一些非常基础的东西。

我运行了一个随机森林回归:

INTERP.rf<-randomForest(y~.,data=df,importance=T,mtry=3,ntree=300)

然后提取了训练集的预测结果:

rf.predict<-predict(INTERP.rf,df,type="response")

RF.predict返回的%var值看起来过低,因此我进行了检查:

MSE.rf<-sum((rf.predict-y)^2)/length(y)

...并且得到的答案与检查rf.predict对象得到的结果大不相同。

请问有人能指出我的错误吗?


2
你正在对用于构建模型的数据进行预测。这是不好的,通常不会这样做(过拟合)。默认情况下,“randomForest”报告袋外(OOB)误差。 - joran
@joran - 我认为在评估模型时使用构建模型的数据可能导致过拟合。但是,通过在“randomForest”对象上使用“predict”生成的输出进行验证绝不是一个坏主意。 - davechilders
@DMC 你说得对,我写评论的时候有点匆忙。从衡量预测准确性的角度来看,它是“糟糕的”。 - joran
我想补充一下,上面的评论非常粗心和不太有用,使用的语言也不太恰当。在任何统计分析中,最重要的是您知道自己在请求什么、接收到什么以及在运行任何函数时两者的影响。我认为重点很明确,即 OP 对 randomForest() 预测工作方式存在误解,无论是 OOB 还是针对“新”或原始数据。与其说某些东西是“垃圾”,不如链接到说明函数工作方式的文档和示例更有帮助。 - Forrest R. Stevens
谢谢@Vlo!我之前不知道这个区别,现在我的问题得到了解决。 - Lisa Avery
1个回答

1

正确的做法是使用:

rf.predict<-predict(INTERP.rf)

我不知道需要使用predict.randomforest(model)而不是predict.randomForest(model,trainingData)来获取OOB预测结果。
感谢@joran和@Vlo的有用评论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接