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

การเลือกจำนวน Boosting Round อัตโนมัติด้วย early_stopping

แทนที่จะต้องเลือกจำนวน boosting round ที่ดีที่สุดด้วยตัวเอง XGBoost สามารถเลือกจำนวนนั้นให้โดยอัตโนมัติภายใน xgb.cv() เทคนิคที่ใช้เรียกว่า early stopping

Early stopping ทำงานโดยทดสอบโมเดล XGBoost หลังจากแต่ละ boosting round กับชุดข้อมูลสำรอง แล้วหยุดสร้าง boosting round เพิ่มเติม (คือสิ้นสุดการเทรนโมเดลก่อนกำหนด) หากค่าเมตริก ("rmse" ในกรณีนี้) ไม่ดีขึ้นติดต่อกันตามจำนวน round ที่กำหนด ในที่นี้จะใช้พารามิเตอร์ early_stopping_rounds ใน xgb.cv() โดยกำหนดจำนวน boosting round สูงสุดไว้ที่ 50 อย่างไรก็ตาม หากค่าเมตริกของชุดข้อมูลสำรองยังคงดีขึ้นต่อเนื่องจนถึง num_boost_rounds ที่กำหนด early stopping จะไม่เกิดขึ้น

DMatrix และ parameter dictionary ได้เตรียมไว้ให้แล้ว งานของคุณคือใช้ cross-validation ร่วมกับ early stopping

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

Extreme Gradient Boosting with XGBoost

ดูคอร์ส

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

  • ทำ cross-validation แบบ 3-fold พร้อม early stopping โดยใช้ "rmse" เป็นเมตริก กำหนด early stopping rounds เป็น 10 และ boosting rounds เป็น 50 ระบุ seed เป็น 123 และให้ผลลัพธ์เป็น DataFrame ของ pandas อย่าลืมระบุพารามิเตอร์อื่น ๆ เช่น dtrain, params และ metrics ด้วย
  • แสดงผล cv_results

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

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

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

# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}

# Perform cross-validation with early stopping: cv_results
cv_results = ____

# Print cv_results
print(____)
แก้ไขและรันโค้ด