Khám phá hiện tượng overfitting với XGBoost
Sau khi huấn luyện 3 mô hình XGBoost với các độ sâu tối đa khác nhau, bạn sẽ đánh giá chất lượng của chúng. Cụ thể, bạn sẽ đo lường chất lượng của từng mô hình trên cả dữ liệu train và dữ liệu test. Như bạn đã biết, dữ liệu train là dữ liệu mà mô hình được huấn luyện. Dữ liệu test là dữ liệu doanh số của tháng tiếp theo mà mô hình chưa từng thấy trước đó.
Mục tiêu của bài tập này là xác định xem có mô hình nào bị overfitting hay không. Để đo lường chất lượng mô hình, bạn sẽ dùng Mean Squared Error (MSE). Hàm này có sẵn trong sklearn.metrics dưới tên mean_squared_error() và nhận hai đối số: giá trị thực và giá trị dự đoán.
Các DataFrame train và test cùng với 3 mô hình đã được huấn luyện (xg_depth_2, xg_depth_8, xg_depth_15) đã có sẵn trong workspace của bạn.
Bài tập này là một phần của khóa học
Chinh phục cuộc thi Kaggle bằng Python
Hướng dẫn bài tập
- Tạo dự đoán cho mỗi mô hình trên cả dữ liệu train và dữ liệu test.
- Tính MSE giữa giá trị thực và dự đoán của bạn cho cả dữ liệu train và dữ liệu test.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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))