Overfitting in XGBoost verkennen
Je hebt 3 XGBoost-modellen getraind met verschillende maximale dieptes en gaat nu hun kwaliteit beoordelen. Daarvoor meet je de kwaliteit van elk model op zowel de traindata als de testdata. Zoals je inmiddels weet, is de traindata de data waarop de modellen zijn getraind. De testdata zijn de verkoopcijfers van de volgende maand die de modellen nog niet hebben gezien.
Het doel van deze oefening is bepalen of een van de getrainde modellen overfit. Om de kwaliteit van de modellen te meten gebruik je de Mean Squared Error (MSE). Die is beschikbaar in sklearn.metrics als de functie mean_squared_error() die twee argumenten verwacht: de echte waarden en de voorspelde waarden.
De DataFrames train en test, samen met 3 getrainde modellen (xg_depth_2, xg_depth_8, xg_depth_15), zijn beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Een Kaggle-competitie winnen met Python
Oefeninstructies
- Maak voorspellingen voor elk model op zowel de train- als testdata.
- Bereken de MSE tussen de echte waarden en je voorspellingen voor zowel de train- als testdata.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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))