Share |

воскресенье, 25 июня 2017 г.

LightGBM vs XGBoost


Сейчас в моду входит алгоритм LightGBM, появляются статьи а ля Which algorithm takes the crown: Light GBM vs XGBOOST?. В задаче говорится о том, что LightGBM  дал на одинаковых данных прогноз чуть лучше, чем XGBoost, но зато по времени LightGBM работает гораздо быстрее, чем XGBoost
На Каггле LightGBM во многих задачах стал обходить XGBoost.
Я решил проверить на своих данных. Алгоритм моей услуги - прогноз зарплаты Сколько я стою на рынке - построен на XGBoost. Сегодня на том же датасете я запустил оба алгоритма. 
Для XGBoost
xgb = XGBRegressor( nthread=4,   seed=1234567890)
Для LightGBM 
gbm = lgb.LGBMRegressor(objective='regression', nthread=4,   seed=1)
Далее параметры для обоих алгоритмов одинаковые
param1 = {
 'model_fitting__learning_rate': [ 0.01, 0.02,  0.03, 0.04, 0.05,  0.06, 0.07, 0.08, 0.09, 1],
 'model_fitting__n_estimators': [   100, 150, 200, 250, 300, 350, 400, 450, 500, 550]
}
Плюс настраиваю сетку
cv = ShuffleSplit(n_splits=6, test_size=0.25, random_state=678901)
score = 'neg_mean_absolute_error'
gsearch1 = GridSearchCV(pipeline, param1 , scoring= score,iid=False, cv=cv)

Результаты

XGBoost работал более 5 часов
({'model_fitting__learning_rate': 0.03, 'model_fitting__n_estimators': 500},
 -0.30208288404701737)
LightGBM работал в два раза быстрее Wall time: 2h 42min 59s
({'model_fitting__learning_rate': 0.03, 'model_fitting__n_estimators': 200},
 -0.30150633397192345)

* Вставка 26.06.

Я проверил данные также на похожем датасете.
XGBoost также отработал более 6 часов, метрика -0.28208288404701737
LightGBM  Wall time: 3h 34min 35s, метрика -0.28217897475881154
В качестве метрики была MAE - y измеряется в логарифмированных рублях, поэтому различие практически никакое. А вот время работы да, отличается сильно.
И логика экономии времени понятна: LightGBM обходится меньшим количеством деревьев - n_estimators
Ну как результаты?) Вполне себе согласуются с тем, что написал индус в своем посте по ссылке выше. Я не стал пока дальше сетку копать, у меня датасет объемный. Плюс надо еще разбираться с гиперпараметрами LightGBM. Обязательно отпишусь, когда полностью настрою модель.

Полезные ссылки про LightGBM

Про установку пакета не буду писать, а вот для работы с пакетом мне самыми полезными показались две ссылки

  1. LightGBM в sklearn - я ленивый, работаю в sklearn обертке, мне такой вариант наиболее подходящий для работы с пакетом и настройки сетки grid
  2. Source code for lightgbm.sklearn - а этот пост помогает понять, какие гипрепараметры настраивать. Тут много вкусного, с чем можно поиграться.

Понравился пост? 

и Вы захотите выразить мне благодарность, просто покликайте на директ рекламу ниже на странице - у вас это отнимет несколько секунд, а мне принесет немного денег.

Комментариев нет:

Отправить комментарий

рек

Популярные сообщения