Различия между h2o.gbm, h2o.xgboost и h2o4gpu.gradient_boosting_regressor

Я хотел бы задать вам вопрос о различных функциях 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?

0 ответов

Другие вопросы по тегам