Тюнінг eta
Час попрактикуватися в налаштуванні інших гіперпараметрів XGBoost і подивитися, як це впливає на якість моделі! Ви почнете з налаштування "eta", також відомого як швидкість навчання (learning rate).
Швидкість навчання в XGBoost — це параметр у діапазоні від 0 до 1: що більше значення "eta", то сильніше штрафуються ваги ознак, тобто регуляризація стає жорсткішою.
Ця вправа є частиною курсу
Екстремальний градієнтний бустинг з XGBoost
Інструкції до вправи
- Створіть список
eta_vals, у якому збережіть такі значення"eta":0.001,0.01і0.1. - Проітерайтеся списком
eta_valsза допомогою циклуfor. - У кожній ітерації циклу
forвстановіть ключ"eta"уparamsрівнимcurr_val. Потім виконайте 3-кратну перехресну перевірку з достроковою зупинкою (5раундів),10раундами бустингу, метрикою"rmse"іseedрівним123. Переконайтеся, що результат — це DataFrame. - Додайте значення RMSE з фінального раунду до списку
best_rmse.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary for each tree (boosting round)
params = {"objective":"reg:squarederror", "max_depth":3}
# Create list of eta values and empty list to store final round rmse per xgboost model
____ = [____, ____, ____]
best_rmse = []
# Systematically vary the eta
for curr_val in ____:
params["___"] = curr_val
# Perform cross-validation: cv_results
cv_results = ____
# Append the final round rmse to best_rmse
____.____(____["____"].tail().values[-1])
# Print the resultant DataFrame
print(pd.DataFrame(list(zip(eta_vals, best_rmse)), columns=["eta","best_rmse"]))