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

การใช้ Regularization ใน XGBoost

หลังจากที่ได้เห็นตัวอย่าง l1 regularization ในวิดีโอแล้ว คราวนี้จะมาลองปรับค่าโทษ l2 regularization หรือที่รู้จักในชื่อ "lambda" และสังเกตผลที่มีต่อประสิทธิภาพโดยรวมของโมเดลบนชุดข้อมูลบ้าน Ames

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Extreme Gradient Boosting with XGBoost

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง DMatrix จาก X และ y เหมือนเดิม
  • สร้าง dictionary พารามิเตอร์เริ่มต้น โดยกำหนด "objective" เป็น "reg:squarederror" และ "max_depth" เป็น 3
  • ใช้ xgb.cv() ภายในลูป for และปรับค่า "lambda" อย่างเป็นระบบโดยส่งค่า l2 ปัจจุบัน (reg) เข้าไป
  • เพิ่มค่า "test-rmse-mean" จากรอบ boosting สุดท้ายของแต่ละโมเดล xgboost ที่ผ่านการ cross-validate
  • กด 'ส่งคำตอบ' เพื่อดูผลลัพธ์ สังเกตเห็นอะไรบ้าง?

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

reg_params = [1, 10, 100]

# Create the initial parameter dictionary for varying l2 strength: params
params = {"____":"____","____":____}

# Create an empty list for storing rmses as a function of l2 complexity
rmses_l2 = []

# Iterate over reg_params
for reg in reg_params:

    # Update l2 strength
    params["lambda"] = ____
    
    # Pass this updated param dictionary into cv
    cv_results_rmse = ____.____(dtrain=____, params=____, nfold=2, num_boost_round=5, metrics="rmse", as_pandas=True, seed=123)
    
    # Append best rmse (final round) to rmses_l2
    ____.____(____["____"].tail(1).values[0])

# Look at best rmse per l2 param
print("Best rmse as a function of l2:")
print(pd.DataFrame(list(zip(reg_params, rmses_l2)), columns=["l2", "rmse"]))
แก้ไขและรันโค้ด