Zacznij terazZacznij za darmo

Pojedynek boosterów: Light kontra Extreme

Wyniki modelu CatBoost są całkiem niezłe, ale sprawdźmy dwa inne podejścia do boostingu i zobaczmy, które wypada lepiej: „Light" czy „Extreme".

CatBoost szczególnie sprawdza się wtedy, gdy zbiór danych zawiera cechy kategoryczne. W tym przypadku wszystkie cechy są numeryczne, więc jedno z pozostałych podejść może dać lepsze rezultaty.

Ponieważ budujemy regresory, użyjemy dodatkowego parametru objective, który określa funkcję uczenia. Aby zastosować błąd kwadratowy, ustaw objective na 'reg:squarederror' dla XGBoost oraz 'mean_squared_error' dla LightGBM.

Dodatkowo dla XGBoost określ parametr n_jobs, aby skrócić czas obliczeń.

UWAGA: uważaj, żeby nie używać klasyfikatorów – w przeciwnym razie sesja może wygasnąć!

To ćwiczenie jest częścią kursu

Metody zespołowe w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zbuduj XGBRegressor z parametrami: max_depth = 3, learning_rate = 0.1, n_estimators = 100 i n_jobs=2.
  • Zbuduj LGBMRegressor z parametrami: max_depth = 3, learning_rate = 0.1 i n_estimators = 100.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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))
Edytuj i uruchom kod