Tự động chọn số vòng boosting bằng early_stopping
Giờ đây, thay vì cố gắng chọn thủ công số vòng boosting tối ưu, bạn có thể để XGBoost tự động chọn số vòng boosting cho bạn ngay trong xgb.cv(). Điều này được thực hiện bằng kỹ thuật gọi là early stopping.
Early stopping hoạt động bằng cách kiểm tra mô hình XGBoost sau mỗi vòng boosting trên một tập dữ liệu giữ lại (hold-out) và dừng việc tạo thêm các vòng boosting (tức kết thúc huấn luyện sớm) nếu metric trên tập giữ lại (trong trường hợp này là "rmse") không được cải thiện sau một số vòng nhất định. Ở đây bạn sẽ dùng tham số early_stopping_rounds trong xgb.cv() cùng với một số vòng boosting tối đa khá lớn (50). Lưu ý rằng nếu metric trên tập giữ lại liên tục được cải thiện cho đến khi chạm num_boost_rounds, thì early stopping sẽ không xảy ra.
Ở đây, DMatrix và từ điển tham số đã được tạo sẵn cho bạn. Nhiệm vụ của bạn là dùng cross-validation với early stopping. Bắt đầu thôi!
Bài tập này là một phần của khóa học
Gradient Boosting Cực Mạnh với XGBoost
Hướng dẫn bài tập
- Thực hiện cross-validation 3-fold với early stopping và dùng
"rmse"làm metric. Dùng10vòng early stopping và50vòng boosting. Chỉ địnhseedlà123và đảm bảo đầu ra là một DataFrame củapandas. Nhớ chỉ định các tham số khác nhưdtrain,params, vàmetrics. - In
cv_results.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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(____)