Различия между h2o.gbm, h2o.xgboost и h2o4gpu.gradient_boosting_regressor - PullRequest
0 голосов
/ 22 ноября 2018

Я хотел бы задать вам вопрос о различных функциях Gradient Boosting Machine пакета h2o в R. Чтобы определить разницу в скорости между этими функциями;одни и те же параметры с одинаковыми данными обучения были обучены для 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 самый быстрый, когда мы сравниваем.Затем я решил перейти к более подробной модели, просто увеличив параметр ntree только с h2o4gpu и h2o.gbm.Скорость 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?

...