2017-08-30 80 views
0

傳統GBM,我們可以使用 predict.gbm(模型,newsdata = ...,n.tree = ...)的樹木h2o.gbm數

這樣我可以比較不同的結果測試數據的樹數。

在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快得多,所以如果它能得到每棵樹的詳細結果,那將是很棒的。

+1

預測您僅在'h2o.gbm.model'中使用該模型n.tree未使用https://www.rdocumentation.org/packages/ h2o/versions/2.8.1.1/topics/h2o.predict –

+0

@ s.brunel 2.8.1.1很舊。最新文檔:http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/gbm.html –

回答

0

我不認爲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是很多的虹膜!

順便說一句,如果你的real的目的是找出最佳使用樹數,然後切換到早期停止,它會自動爲你做。 (只要確保您使用的是驗證和測試數據幀。)

+0

請在評論時請評論,特別是如果存在某些需要更正的技術不準確情況。 (我以爲我在第一句中正確地回答了這個問題。) –