ПочатиПочніть безкоштовно

Автоматичний вибір кількості бустингових раундів за допомогою early_stopping

Тепер, замість того щоб намагатися вручну підібрати найкращу кількість бустингових раундів, ви можете легко доручити XGBoost автоматично обрати їх кількість у межах xgb.cv(). Це робиться за допомогою техніки під назвою раннє зупинення (early stopping).

Раннє зупинення працює так: після кожного бустингового раунду модель XGBoost перевіряється на відкладеній вибірці, і створення наступних раундів зупиняється (тобто тренування моделі завершується раніше), якщо метрика на відкладеній вибірці (у нашому випадку "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(____)
Редагувати та запускати код