Aan de slagGa gratis aan de slag

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

Cursus bekijken

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))
Code bewerken en uitvoeren