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

สำรวจการ Overfit ใน XGBoost

หลังจากที่ฝึกโมเดล XGBoost จำนวน 3 โมเดลด้วยค่าความลึกสูงสุดที่แตกต่างกัน ตอนนี้จะมาประเมินคุณภาพของแต่ละโมเดล โดยวัดคุณภาพบนทั้งข้อมูล train และข้อมูล test ข้อมูล train คือข้อมูลที่ใช้ฝึกโมเดล ส่วนข้อมูล test คือข้อมูลยอดขายของเดือนถัดไปที่โมเดลไม่เคยเห็นมาก่อน

เป้าหมายของแบบฝึกหัดนี้คือการตรวจสอบว่าโมเดลใดเกิดการ overfit หรือไม่ โดยใช้ Mean Squared Error (MSE) เป็นตัววัดคุณภาพ ซึ่งสามารถเรียกใช้ได้จาก sklearn.metrics ผ่านฟังก์ชัน mean_squared_error() ที่รับอาร์กิวเมนต์ 2 ตัว ได้แก่ ค่าจริงและค่าที่พยากรณ์ได้

DataFrame train และ test พร้อมกับโมเดลที่ฝึกไว้แล้วทั้ง 3 โมเดล (xg_depth_2, xg_depth_8, xg_depth_15) พร้อมใช้งานใน workspace ของคุณ

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

การแข่งขัน Kaggle ด้วย Python

ดูคอร์ส

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

  • พยากรณ์ค่าด้วยแต่ละโมเดลบนทั้งข้อมูล train และข้อมูล test
  • คำนวณค่า MSE ระหว่างค่าจริงกับค่าที่พยากรณ์ได้ทั้งบนข้อมูล train และข้อมูล test

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

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

from sklearn.metrics import mean_squared_error

dtrain = xgb.DMatrix(data=train[['store', 'item']])
dtest = xgb.DMatrix(data=test[['store', 'item']])

# For each of 3 trained models
for model in [xg_depth_2, xg_depth_8, xg_depth_15]:
    # Make predictions
    train_pred = model.____(dtrain)     
    test_pred = model.____(dtest)          
    
    # Calculate metrics
    mse_train = ____(train['sales'], train_pred)                  
    mse_test = ____(test['sales'], test_pred)
    print('MSE Train: {:.3f}. MSE Test: {:.3f}'.format(mse_train, mse_test))
แก้ไขและรันโค้ด