Настройка eta
Пришло время попрактиковаться в настройке гиперпараметров XGBoost и понаблюдать за их влиянием на качество модели! Начнём с настройки параметра "eta", известного также как скорость обучения.
Скорость обучения в 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"]))