如何从R中的随机林中获取单个树的概率?
我正在使用R中的randomForest包处理一个分类问题(结果是二进制的)。 我想得到每棵树的概率输出(以获得预测区间)。 我在预测中设置了predict.all=TRUE参数,但它给了我一个800列的矩阵(=我的林中的树数),每个列都是1或0。如何获得概率输出而不是类 PS:我的节点的大小=1,这意味着这应该是有意义的。但是,我更改了节点大小=50,仍然得到了所有0和1的无概率 下面是我正在做的:如何从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
#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的概率 啊,打字错误,我实际上使用了测试数据集。将编辑。谢谢