Автоматический выбор числа раундов бустинга с помощью early_stopping
Вместо того чтобы вручную подбирать оптимальное количество раундов бустинга, можно поручить XGBoost сделать это автоматически — прямо внутри xgb.cv(). Для этого используется техника ранней остановки (early stopping).
Ранняя остановка работает следующим образом: после каждого раунда бустинга модель проверяется на отложенной выборке, и если метрика ("rmse" в нашем случае) не улучшается на протяжении заданного числа раундов, обучение прекращается досрочно. В этом упражнении вы используете параметр early_stopping_rounds в xgb.cv() при большом максимальном числе раундов (50). Обратите внимание: если метрика на отложенной выборке продолжает улучшаться вплоть до достижения значения num_boost_rounds, ранняя остановка не срабатывает.
Объект DMatrix и словарь параметров уже подготовлены для вас. Ваша задача — выполнить кросс-валидацию с ранней остановкой. Приступайте!
Это упражнение является частью курса
Экстремальный градиентный бустинг с XGBoost
Инструкции к упражнению
- Выполните 3-кратную кросс-валидацию с ранней остановкой, используя
"rmse"в качестве метрики. Укажите10раундов ранней остановки и50раундов бустинга. Задайте значениеseedравным123и убедитесь, что результат возвращается в виде DataFrame библиотекиpandas. Не забудьте указать остальные параметры:dtrain,paramsиmetrics. - Выведите
cv_results.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}
# Perform cross-validation with early stopping: cv_results
cv_results = ____
# Print cv_results
print(____)