สำรวจการ 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))