Соревнование алгоритмов бустинга: Light против Extreme
Модель CatBoost показывает неплохие результаты, однако давайте попробуем два других подхода к бустингу и выясним, какой из них окажется лучше: «Light» или «Extreme».
CatBoost особенно рекомендуется, когда в данных есть категориальные признаки. В данном случае все признаки числовые, поэтому один из других подходов может дать более высокое качество.
Поскольку мы строим регрессионные модели, нам понадобится дополнительный параметр objective, который задаёт используемую функцию потерь. Чтобы применить среднеквадратическую ошибку, установите objective в значение 'reg:squarederror' для XGBoost и 'mean_squared_error' для LightGBM.
Кроме того, для XGBoost укажите параметр n_jobs, чтобы ускорить вычисления.
ВНИМАНИЕ: не используйте классификаторы — это может привести к завершению сессии!
Это упражнение является частью курса
Ансамблевые методы в Python
Инструкции к упражнению
- Создайте
XGBRegressorсо следующими параметрами:max_depth = 3,learning_rate = 0.1,n_estimators = 100иn_jobs=2. - Создайте
LGBMRegressorсо следующими параметрами:max_depth = 3,learning_rate = 0.1иn_estimators = 100.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Build and fit an XGBoost regressor
reg_xgb = ____.____(____, ____, ____, ____, objective='reg:squarederror', random_state=500)
reg_xgb.fit(X_train, y_train)
# Build and fit a LightGBM regressor
reg_lgb = ____.____(____, ____, ____, objective='mean_squared_error', seed=500)
reg_lgb.fit(X_train, y_train)
# Calculate the predictions and evaluate both regressors
pred_xgb = reg_xgb.predict(X_test)
rmse_xgb = np.sqrt(mean_squared_error(y_test, pred_xgb))
pred_lgb = reg_lgb.predict(X_test)
rmse_lgb = np.sqrt(mean_squared_error(y_test, pred_lgb))
print('Extreme: {:.3f}, Light: {:.3f}'.format(rmse_xgb, rmse_lgb))