如何在R中计算随机森林回归模型的置信水平

8

我在R中使用randomForest软件包,用于预测蛋白质间的距离(RF回归模型)用于同源建模,结果相当不错。然而,为了排名我的预测值并过滤掉不良模型,我需要有一个置信度水平,所以我想知道是否有可能计算这种置信度水平,或者是否有其他方式来测量预测的确定性?非常感谢任何建议或推荐。


5
一个简单的方法是将森林中每棵树的预测视为预测样本,从中可以像计算平均值的置信区间一样计算平均值和标准误。 - joran
1个回答

1

按照本文中提到的折叠交叉验证方法获取标准误差,您可以使用ranger软件包中的实现:

library(ranger)
library(mlbench)
data(BostonHousing)

mdl = ranger(medv ~ .,data=BostonHousing[1:400,],keep.inbag = TRUE)

pred = predict(mdl,BostonHousing[401:nrow(BostonHousing),],type="se")

 head(cbind(pred$predictions,pred$se ))
          [,1]     [,2]
[1,] 10.673356 1.107839
[2,] 11.390374 1.102217
[3,] 12.760511 1.126945
[4,] 10.458128 1.100246
[5,] 10.720076 1.084376
[6,]  9.914648 1.102000

置信区间可以估算为1.96*标准误差。还有一个新的包forestError可用于随机森林对象:
library(randomForest)
library(forestError)
mdl = randomForest(medv ~ .,data=BostonHousing[1:400,],keep.inbag=TRUE)

err = quantForestError(mdl,BostonHousing[1:400,],BostonHousing[401:nrow(BostonHousing),])

head(err$estimates)
       pred     mspe       bias lower_0.05 upper_0.05
1 10.649734 15.70943 -1.5336411   2.935949   12.59486
2 11.611078 15.16339 -1.4436056   3.897293   13.55621
3 12.603938 20.92701 -0.9590869   4.890153   22.32699
4 10.650549 12.42555 -1.4188440   3.941648   12.49029
5 10.414707 29.08155 -1.1438267   2.700922   31.42272
6  9.720305 19.63286 -1.3469671   2.006520   16.43220

您可以参考这个论文了解实际使用的方法,


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