Автоматичний вибір кількості бустингових раундів за допомогою 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і переконайтеся, що результат — це DataFramepandas. Не забудьте вказати інші параметри, такі як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(____)