如何从R中的随机林中获取单个树的概率?

如何从R中的随机林中获取单个树的概率?,r,classification,prediction,random-forest,R,Classification,Prediction,Random Forest,我正在使用R中的randomForest包处理一个分类问题(结果是二进制的)。 我想得到每棵树的概率输出(以获得预测区间)。 我在预测中设置了predict.all=TRUE参数,但它给了我一个800列的矩阵(=我的林中的树数),每个列都是1或0。如何获得概率输出而不是类 PS:我的节点的大小=1,这意味着这应该是有意义的。但是,我更改了节点大小=50,仍然得到了所有0和1的无概率 下面是我正在做的: #build model (node size=1) rf<-randomForest

我正在使用R中的randomForest包处理一个分类问题(结果是二进制的)。 我想得到每棵树的概率输出(以获得预测区间)。 我在预测中设置了predict.all=TRUE参数,但它给了我一个800列的矩阵(=我的林中的树数),每个列都是1或0。如何获得概率输出而不是类

PS:我的节点的大小=1,这意味着这应该是有意义的。但是,我更改了节点大小=50,仍然得到了所有0和1的无概率

下面是我正在做的:

#build model (node size=1) 
rf<-randomForest(y~. ,data=train, ntree=800,replace=TRUE, proximilty=TRUE, keep.inbag=TRUE)

#get the predictions 

#store the predictions from all the trees
all_tree_train<-predict(rf, test, type="prob", predict.all= TRUE)$individual
#构建模型(节点大小=1)

rf因此
predict.randomForest
的文档说明:

如果predict.all=TRUE,则返回 对象是一个字符矩阵,其中每列包含预测的 在森林里的一棵树旁上课

…因此,似乎不可能为每个单独的树返回概率

如果您想要一个分类的预测间隔,您可以尝试用更多的树拟合一个随机森林,然后从森林的许多不同(随机?)子集生成预测


不过,您需要注意的一点是,您似乎正在将训练数据输入到
predict.randomForest
。这当然会给你带来有偏见的预测,除非你使用随机森林对象的
inbag
组件中的信息来只选择那些观察结果已经过时的树。

我意识到这个问题已经过时了,但它可能会帮助任何有类似问题的人

如果查询树的结果,您将始终得到最终分类,这些分类是给定初始林的确定性分类。您可以通过将predict all设置为TRUE,并将投票数相加,从而提取概率

如果您有两个以上的类,则林将项“m”按概率分类为类“x” (将m划分为x的树数)/(树数)


由于您只有一个二元分类,预测矩阵的列和为您提供了属于类1的概率

啊,打字错误,我实际上使用了测试数据集。将编辑。谢谢