Tìm kiếm theo lưới với XGBoost
Giờ bạn đã biết cách tinh chỉnh từng tham số riêng lẻ trong XGBoost, hãy nâng cấp việc tinh chỉnh bằng cách dùng GridSearch và RandomizedSearch của scikit-learn với cross-validation nội bộ thông qua các hàm GridSearchCV và RandomizedSearchCV. Bạn sẽ dùng chúng để tìm ra mô hình tốt nhất một cách toàn diện từ tập các giá trị tham số có thể có, đồng thời trên nhiều tham số. Bắt đầu thôi, với GridSearchCV!
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 lưới tham số tên
gbm_param_gridchứa danh sách các giá trị"colsample_bytree"(0.3,0.7), một danh sách chỉ có một giá trị cho"n_estimators"(50), và danh sách 2 giá trị"max_depth"(2,5). - Khởi tạo một đối tượng
XGBRegressortêngbm. - Tạo một đối tượng
GridSearchCVtêngrid_mse, truyền vào: lưới tham số choparam_grid,XGBRegressorchoestimator,"neg_mean_squared_error"choscoring, và4chocv. Đồng thời đặtverbose=1để bạn dễ hiểu đầu ra hơn. - Fit đối tượng
GridSearchCVvàoXvày. - In ra các giá trị tham số tốt nhất và RMSE thấp nhất, lần lượt dùng thuộc tính
.best_params_và.best_score_củagrid_mse.
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 the parameter grid: gbm_param_grid
gbm_param_grid = {
'____': [____, ____],
'____': [____],
'____': [____, ____]
}
# Instantiate the regressor: gbm
gbm = ____
# Perform grid search: grid_mse
grid_mse = ____
# Fit grid_mse to the data
____
# Print the best parameters and lowest RMSE
print("Best parameters found: ", ____)
print("Lowest RMSE found: ", np.sqrt(np.abs(____)))