2017-08-30 1 views
0

dans GBM traditionnelle, nous pouvons utiliser predict.gbm (modèle, newsdata = ..., n.tree = ...)nombre d'arbres dans h2o.gbm

pour que je puisse comparer les résultats avec différents nombre d'arbres pour les données d'essai.

Dans h2o.gbm, bien qu'il ait n.tree à définir, il semble qu'il n'a aucun effet sur le résultat. C'est tout pareil que le modèle par défaut:

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 

Est-ce que anybod a un problème similaire? Comment le résoudre? h2o.gbm est beaucoup plus rapide que gbm, donc s'il peut obtenir un résultat détaillé de chaque arbre ce serait génial.

+1

pour prédire que vous utilisez uniquement le modèle dans 'h2o.gbm.model' n.tree est inutilisé https://www.rdocumentation.org/packages/ h2o/versions/2.8.1.1/topics/h2o.predict –

+0

@ s.brunel 2.8.1.1 est très ancien. Documentation la plus récente: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/gbm.html –

Répondre

0

Je ne pense pas que H2O supporte ce que vous décrivez. MAIS, si ce que vous recherchez est d'obtenir la performance par rapport au nombre d'arbres utilisés, cela peut être fait au moment de la construction du modèle.

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) 

L'historique du score indiquera l'évaluation après avoir ajouté chaque nouvel arbre. plot(m) montrera un graphique de ceci. On dirait que 20 est beaucoup pour l'iris!

BTW, si votre réel était de déterminer le nombre optimal d'arbres à utiliser, puis basculer sur l'arrêt précoce, et il le fera automatiquement pour vous. (Assurez-vous simplement que vous utilisez les trames de données de validation et de test.)

+0

Merci de commenter lors de la rétrogradation, en particulier si une erreur technique doit être corrigée. (Je pensais avoir correctement répondu à la question, dans la première phrase.) –