Tinh chỉnh eta
Đến lúc bạn thực hành tinh chỉnh các siêu tham số khác của XGBoost một cách nghiêm túc và quan sát tác động của chúng lên hiệu năng mô hình! Bạn sẽ bắt đầu bằng cách tinh chỉnh "eta", hay còn gọi là learning rate.
Learning rate trong XGBoost là một tham số có thể nằm trong khoảng từ 0 đến 1, với giá trị "eta" càng cao thì càng phạt mạnh trọng số của đặc trưng, dẫn đến regularization mạnh hơn nhiều.
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
- Tạo một list tên
eta_valsđể lưu các giá trị"eta"sau:0.001,0.01, và0.1. - Lặp qua list
eta_valscủa bạn bằng vòng lặpfor. - Ở mỗi vòng lặp
for, đặt khóa"eta"củaparamsbằngcurr_val. Sau đó, thực hiện cross-validation 3-fold với early stopping (5vòng),10vòng boosting, metric là"rmse", vàseedlà123. Đảm bảo đầu ra là một DataFrame. - Thêm (append) giá trị RMSE ở vòng cuối vào list
best_rmse.
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 (boosting round)
params = {"objective":"reg:squarederror", "max_depth":3}
# Create list of eta values and empty list to store final round rmse per xgboost model
____ = [____, ____, ____]
best_rmse = []
# Systematically vary the eta
for curr_val in ____:
params["___"] = curr_val
# Perform cross-validation: cv_results
cv_results = ____
# Append the final round rmse to best_rmse
____.____(____["____"].tail().values[-1])
# Print the resultant DataFrame
print(pd.DataFrame(list(zip(eta_vals, best_rmse)), columns=["eta","best_rmse"]))