我想问您一个有关R2中h2o包的不同梯度提升机功能的问题。已针对h2o.gbm,h2o.xgboost和h2o4gpu.gradient_boosting_regressor训练了具有相同训练数据的相同参数。这些模型可以在下面看到;
model_cpu=h2o.gbm(x = x_col_names, y = y, training_frame = train, nfolds = 10, ntrees = 100, stopping_metric = "RMSE",max_depth = 20) #02:57.36
model_xgb=h2o.xgboost(x = x_col_names, y = y, training_frame = train, nfolds = 10, ntrees = 100, stopping_metric = "RMSE", max_depth = 20,learn_rate = 0.1) #06:31.41
model_gpu=h2o4gpu.gradient_boosting_regressor(n_estimators = 100, nfolds= 10, stopping_metric ="RMSE", max_depth = 20) %>% fit(x_gpu, y_gpu) #2:19.83
命令后的“#”符号表示该命令的运行时间。可以清楚地看到;比较时,h2o4gpu是最快的。然后,我决定继续使用更详细的模型,仅使用h2o4gpu和h2o.gbm增加ntree参数。 h2o4gpu的速度惊人。大约在h2o.gbm完成时。 18分钟内,h2o4gpu在3分钟半内完成。然后;我只是想在测试数据上比较这些模型。结果令我震惊。这些模型的结果之间存在重要差异。
cor_for_h2o.gbm=0.9294249, rmse_for_h2o.gbm=5.822826, mae_for_h2o.gbm=4.024654
cor_for_h2o4gpu=0.9182083, rmse_for_h2o4gpu=6.249201, mae_for_h2o4gpu=4.288272
据我了解,尽管参数相同,但这两个模型背后的算法是不同的。背后的原因可能是什么?我应该继续使用h2o.gbm吗?而且,为什么h2o.xgboost比其他的慢得多?
顺便说一句,有了它的网格搜索选项,我希望h2o.gbm比h2o4gpu更慢。另一方面,如果您说h2o4gpu更好。您能建议在h2o4gpu中进行超参数调整的任何选项吗?