early_stopping을 사용한 자동 boosting 라운드 선택
이제 더 이상 최적의 boosting 라운드 수를 일일이 골라낼 필요가 없습니다. xgb.cv() 안에서 XGBoost가 자동으로 boosting 라운드 수를 선택하도록 아주 쉽게 설정할 수 있어요. 이는 early stopping이라는 기법을 사용합니다.
Early stopping은 매 boosting 라운드마다 보류(hold-out) 데이터셋으로 XGBoost 모델을 평가하고, 지정된 라운드 수 동안 보류 지표(여기서는 "rmse")가 개선되지 않으면 추가 boosting 라운드 생성을 중단하여(즉, 학습을 조기 종료하여) 동작합니다. 여기서는 가능한 boosting 라운드 수를 크게 잡아(50) xgb.cv()의 early_stopping_rounds 매개변수를 사용하겠습니다. 참고로, 보류 지표가 num_boost_rounds에 도달할 때까지 계속 개선되면 early stopping은 발생하지 않습니다.
여기서는 DMatrix와 매개변수 딕셔너리가 이미 준비되어 있습니다. 여러분의 할 일은 early stopping을 적용하여 교차 검증을 수행하는 것입니다. 시작해 볼까요?
이 연습은 강의의 일부입니다
XGBoost로 익히는 Extreme Gradient Boosting
연습 안내
- 3겹 교차 검증을 early stopping과 함께 수행하고, 평가지표는
"rmse"로 지정하세요.early_stopping_rounds는10, boosting 라운드는50으로 설정하세요.seed는123으로 지정하고, 출력이pandasDataFrame이 되도록 하세요.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(____)