在传统的gbm中,我们可以使用
    Forecast.gbm(模型,newsdata = ...,n.tree = ...)

这样我就可以将测试结果与不同数量的树进行比较。

在h2o.gbm中,尽管要设置n.tree,但似乎对结果没有任何影响。与默认模型相同:

h2o.test.pred <- as.vector(h2o.predict(h2o.gbm.model, newdata=test.frame, n.tree=100))
R2(h2o.test.pred, test.mat$y)
[1] -0.00714109
h2o.test.pred <- as.vector(h2o.predict(h2o.gbm.model, newdata=test.frame, n.tree=10))
> R2(h2o.test.pred, test.mat$y)
[1] -0.00714109


有没有类似的问题?怎么解决呢? h2o.gbm比gbm快得多,因此,如果它可以获得每棵树的详细结果,那将是很好的。

最佳答案

我认为H2O不支持您所描述的内容。

但是,如果要获得的性能是相对于使用的树木数量而言,则可以在模型构建时完成。

library(h2o)
h2o.init()

iris <- as.h2o(iris)
parts <- h2o.splitFrame(iris,c(0.8,0.1))
train <- parts[[1]]
valid <- parts[[2]]
test <- parts[[3]]
m <- h2o.gbm(1:4, 5, train,
             validation_frame = valid,
             ntrees = 100, #Max desired
             score_tree_interval = 1)

h2o.scoreHistory(m)
plot(m)


分数历史记录将在添加每棵新树后显示评估。 plot(m)将显示一个图表。看起来20足够虹膜了!

顺便说一句,如果您的真正目的是找出要使用的最佳树木数量,那么请尽早打开并停止运行,它将为您自动完成。 (只需确保您同时使用了验证和测试数据框。)

关于r - h2o.gbm中的树数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45953884/

10-12 19:39