Menjelajahi overfitting pada XGBoost
Setelah melatih 3 model XGBoost dengan kedalaman maksimum yang berbeda, sekarang Anda akan mengevaluasi kualitasnya. Untuk itu, Anda akan mengukur kualitas setiap model pada data train dan data test. Seperti yang Anda ketahui, data train adalah data yang digunakan untuk melatih model. Data test adalah data penjualan bulan berikutnya yang belum pernah dilihat oleh model.
Tujuan latihan ini adalah menentukan apakah ada model yang mengalami overfitting. Untuk mengukur kualitas model, Anda akan menggunakan Mean Squared Error (MSE). Metrik ini tersedia di sklearn.metrics sebagai fungsi mean_squared_error() yang menerima dua argumen: nilai sebenarnya dan nilai prediksi.
DataFrame train dan test beserta 3 model yang sudah dilatih (xg_depth_2, xg_depth_8, xg_depth_15) tersedia di workspace Anda.
Latihan ini adalah bagian dari kursus
Memenangi Kompetisi Kaggle dengan Python
Petunjuk latihan
- Buat prediksi untuk setiap model pada data train dan data test.
- Hitung MSE antara nilai sebenarnya dan prediksi Anda untuk data train dan data test.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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))