Random search ด้วย XGBoost
GridSearchCV อาจใช้เวลานานมากในหลายกรณี ดังนั้นในทางปฏิบัติ อาจเลือกใช้ RandomizedSearchCV แทน ซึ่งเป็นสิ่งที่จะทำในแบบฝึกหัดนี้ ข่าวดีคือต้องปรับแก้โค้ดจาก GridSearchCV เพียงเล็กน้อยเท่านั้น ความแตกต่างหลักคือต้องระบุพารามิเตอร์ param_distributions แทน param_grid
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Extreme Gradient Boosting with XGBoost
คำแนะนำการฝึกหัด
- สร้าง parameter grid ชื่อ
gbm_param_gridที่ประกอบด้วยลิสต์ค่าเดียวสำหรับ'n_estimators'(ค่า25) และลิสต์ค่า'max_depth'ตั้งแต่2ถึง11สำหรับ'max_depth'— ใช้range(2, 12)สำหรับส่วนนี้ - สร้างออบเจกต์
RandomizedSearchCVชื่อrandomized_mseโดยส่งค่าดังนี้: parameter grid ไปยังparam_distributions,XGBRegressorไปยังestimator,"neg_mean_squared_error"ไปยังscoring,5ไปยังn_iterและ4ไปยังcvรวมทั้งระบุverbose=1เพื่อให้เข้าใจผลลัพธ์ได้ง่ายขึ้น - Fit ออบเจกต์
RandomizedSearchCVกับXและy
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Create the parameter grid: gbm_param_grid
gbm_param_grid = {
'____': [____],
'____': ____(____, ____)
}
# Instantiate the regressor: gbm
gbm = xgb.XGBRegressor(n_estimators=10)
# Perform random search: grid_mse
randomized_mse = ____
# Fit randomized_mse to the data
____
# Print the best parameters and lowest RMSE
print("Best parameters found: ", randomized_mse.best_params_)
print("Lowest RMSE found: ", np.sqrt(np.abs(randomized_mse.best_score_)))