НачатьНачать бесплатно

Автоматический выбор числа раундов бустинга с помощью 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(____)
Редактировать и запускать код