Automatyczny dobór liczby rund boostingu z użyciem early_stopping
Zamiast ręcznie szukać optymalnej liczby rund boostingu, możesz pozwolić, żeby XGBoost sam ją dobrał – za pomocą funkcji xgb.cv(). Służy do tego technika zwana wczesnym zatrzymaniem (early stopping).
Wczesne zatrzymanie polega na tym, że po każdej rundzie boostingu model jest oceniany na zbiorze walidacyjnym. Jeśli wybrana metryka ("rmse" w naszym przypadku) nie poprawia się przez określoną liczbę rund, trening zostaje zakończony przed osiągnięciem maksymalnej liczby rund. Pamiętaj, że jeśli metryka na zbiorze walidacyjnym stale się poprawia aż do osiągnięcia wartości num_boost_rounds, wczesne zatrzymanie nie zostanie uruchomione.
Obiekt DMatrix oraz słownik parametrów zostały już dla ciebie przygotowane. Twoim zadaniem jest przeprowadzenie kroswalidacji z wczesnym zatrzymaniem. Do dzieła!
To ćwiczenie jest częścią kursu
Extreme Gradient Boosting with XGBoost
Instrukcje do ćwiczenia
- Przeprowadź 3-krotną kroswalidację z wczesnym zatrzymaniem, używając
"rmse"jako metryki. Ustaw10rund wczesnego zatrzymania i50rund boostingu. Podaj wartośćseedrówną123i upewnij się, że wynik jest zwracany jako DataFrame bibliotekipandas. Pamiętaj o podaniu pozostałych parametrów, takich jakdtrain,paramsimetrics. - Wyświetl
cv_results.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____)