เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การปรับค่า 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 รอบ), boosting 10 รอบ, เมตริก "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"]))
แก้ไขและรันโค้ด