来自R中的h2o包的predict.H2OModel()是否为h2o.randomForest()模型提供了OOB预测?

时间:2018-05-22 01:31:55

标签: r random-forest h2o

我无法从文档中看出R中predict.H2OModel()包中的h2o函数是否为使用h2o.randomForest()构建的随机森林模型提供了OOB预测。

事实上,在我尝试的3-4个示例中,似乎predict.H2OModel()的结果更接近predict.randomForest()来自randomForest包的非OOB预测。 OOB的。

有人知道他们是否是OOB预测?如果没有,您知道如何获得h2o.randomForest()模型的OOB预测吗?

示例:

set.seed(123)
library(randomForest)
library(h2o)

data(mtcars)
d = mtcars[,c('mpg', 'cyl', 'disp', 'hp', 'wt' )]

## define some common settings for both random forests
n.trees=1000
mtry = 3  
min.node = 3

## prep for h2o.randomForest
h2o.init()  
d.h2o= as.h2o(d) 
x.names = colnames(d)[2:5] ## predictors

## fit both models
set.seed(123); 
rf  =     randomForest(mpg ~ .,                      data = d    ,  ntree=n.trees,   mtry = mtry, nodesize=min.node)
h2o = h2o.randomForest(y='mpg', x=x.names, training_frame = d.h2o, ntrees=n.trees, mtries = mtry, min_rows=min.node)

## Correct way and incorrect way of getting OOB predictions for a randomForest model. Not sure about h2o model. 
d$rf.oob.pred =           predict(rf)                  ## Gives OOB predictions
d$rf.pred     =           predict(rf , newdata=d    )  ## Doesn't give OOB predictions.
d$h2o.pred    = as.vector(predict(h2o, newdata=d.h2o)) ## Not sure if this is OOB or not.  

## d$h2o.pred seems more similar to d$rf.pred than d$rf.oob.pred, 
## suggesting that predict.H2OModel() might not give OOB predictions.
mean((d$rf.pred     - d$h2o.pred)^2)
mean((d$rf.oob.pred - d$h2o.pred)^2)

1 个答案:

答案 0 :(得分:2)

H2O的h2o.predict()不提供OOB数据的预测。您必须使用newdata =参数指定要预测的数据集。因此,当您拥有newdata=d.h2o时,您将获得对指定的d.h2o数据帧的预测。

当前没有任何方法可以得到oob数据的预测。但是,有一个jira ticket用于指定您是否需要oob指标(请注意,此故障单还链接到另一个故障单,这有助于阐明当前如何报告随机森林的训练指标)。