Grid search กับ XGBoost
หลังจากที่เรียนรู้วิธีปรับพารามิเตอร์ทีละตัวใน XGBoost แล้ว ก็ถึงเวลายกระดับการ tune พารามิเตอร์ด้วยความสามารถ GridSearch และ RandomizedSearch ของ scikit-learn ซึ่งมี cross-validation ในตัวผ่านฟังก์ชัน GridSearchCV และ RandomizedSearchCV เราจะใช้ฟังก์ชันเหล่านี้เพื่อค้นหาโมเดลที่ดีที่สุดจากชุดค่าพารามิเตอร์ที่เป็นไปได้หลายค่าพร้อมกัน เริ่มต้นกันเลยด้วย GridSearchCV!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Extreme Gradient Boosting with XGBoost
คำแนะนำการฝึกหัด
- สร้าง parameter grid ชื่อ
gbm_param_gridที่ประกอบด้วย: ลิสต์ของค่า"colsample_bytree"(0.3,0.7), ลิสต์ที่มีค่าเดียวสำหรับ"n_estimators"(50) และลิสต์ของค่า"max_depth"2 ค่า (2,5) - สร้าง object
XGBRegressorชื่อgbm - สร้าง object
GridSearchCVชื่อgrid_mseโดยส่ง: parameter grid ไปที่param_grid,XGBRegressorไปที่estimator,"neg_mean_squared_error"ไปที่scoringและ4ไปที่cvพร้อมระบุverbose=1เพื่อให้เข้าใจผลลัพธ์ได้ดียิ่งขึ้น - Fit object
GridSearchCVกับXและy - แสดงค่าพารามิเตอร์ที่ดีที่สุดและค่า RMSE ต่ำสุด โดยใช้ attribute
.best_params_และ.best_score_ของgrid_mseตามลำดับ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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(____)))