使用 party 包中的 cforest 处理案例权重和 OOB 预测问题

Issue with caseweights and OOB prediction using cforest from the party package

我正在用可选参数 caseweights 拟合 cforest,它是一个双矩阵,其中 ncol(caseweights)== 我的随机森林中的树数和 nrow(caseweights) = 观察次数。此外,我正在对它们进行归一化,以便 colSums 等于 1。但是,当我想将我的 OOB 预测与真实响应进行比较时,我总是会收到以下错误:

Error in RET@prediction_weights(newdata = newdata, mincriterion = mincriterion, : cannot compute out-of-bag predictions for observation number 1

我已经在 github 上查找了 C 源代码,但是找不到为什么它不起作用。

(如果我使用“'standard'”权重也会出现同样的错误,即长度向量 == 观察数,仅用于采样)

我做错了什么?

这是一个可重现的例子:

install.packages('party')
require('party')
head(iris)
weights<-rep(1,nrow(iris))
weights[iris$Species=='virginica']<-2
#normalize
weights<-weights/sum(weights) 
ntree<-100
#generate double matrix of caseweights
caseweights<-matrix(rep(weights,ntree),ncol=ntree)
colSums(caseweights)
#fit forest
f <- cforest(Species ~ ., data = iris,controls = cforest_unbiased(ntree=ntree,mtry=3,trace=TRUE),weights=caseweights)
#check out of bag cross classification
table(iris$Species,Predict(f,OOB=TRUE)) #throws error

非常感谢您的帮助。

好吧,none 你的权重是零,所以没有袋外观察,这就是错误消息正确告诉你的。顺便说一句,派对不是在 github 上举办的,而是在 R-forge 上举办的。

托斯滕