การปรับค่า eta
ถึงเวลาฝึกปรับ hyperparameter อื่น ๆ ของ XGBoost และสังเกตผลกระทบที่มีต่อประสิทธิภาพของโมเดลกันแล้ว! เริ่มต้นด้วยการปรับค่า "eta" หรือที่รู้จักกันในชื่อ learning rate
ใน XGBoost นั้น learning rate คือพารามิเตอร์ที่มีค่าอยู่ระหว่าง 0 ถึง 1 โดยค่า "eta" ที่สูงขึ้นจะส่งผลให้การลงโทษ (penalize) น้ำหนักของ feature รุนแรงขึ้น ซึ่งทำให้เกิด regularization ที่แข็งแกร่งขึ้นตามไปด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Extreme Gradient Boosting with XGBoost
คำแนะนำการฝึกหัด
- สร้างลิสต์ชื่อ
eta_valsเพื่อเก็บค่า"eta"ต่อไปนี้:0.001,0.01และ0.1 - วนซ้ำผ่านลิสต์
eta_valsโดยใช้ลูปfor - ในแต่ละรอบของลูป
forให้กำหนดค่าคีย์"eta"ในparamsให้เท่ากับcurr_valจากนั้นทำ cross-validation แบบ 3-fold พร้อม early stopping (5รอบ), boosting10รอบ, เมตริก"rmse"และseedเป็น123โดยให้ผลลัพธ์ออกมาเป็น DataFrame - เพิ่มค่า RMSE ของรอบสุดท้ายลงในลิสต์
best_rmse
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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"]))