LoslegenKostenlos loslegen

Overfitting mit XGBoost untersuchen

Nachdem du drei XGBoost-Modelle mit unterschiedlichen maximalen Tiefen trainiert hast, bewertest du nun ihre Qualität. Dafür misst du die Güte jedes Modells sowohl auf den Trainingsdaten als auch auf den Testdaten. Wie du inzwischen weißt, sind die Trainingsdaten diejenigen, auf denen die Modelle trainiert wurden. Die Testdaten entsprechen den Verkaufszahlen des nächsten Monats, die die Modelle noch nie zuvor gesehen haben.

Ziel dieser Übung ist es festzustellen, ob eines der trainierten Modelle overfittet. Zur Qualitätsmessung der Modelle verwendest du den Mean Squared Error (MSE). Er ist in sklearn.metrics als Funktion mean_squared_error() verfügbar, die zwei Argumente erhält: wahre Werte und vorhergesagte Werte.

Die DataFrames train und test sowie die drei trainierten Modelle (xg_depth_2, xg_depth_8, xg_depth_15) stehen dir in deinem Workspace zur Verfügung.

Diese Übung ist Teil des Kurses

Eine Kaggle-Competition in Python gewinnen

Kurs anzeigen

Anleitung zur Übung

  • Erstelle für jedes Modell Vorhersagen sowohl auf den Trainings- als auch auf den Testdaten.
  • Berechne den MSE zwischen den wahren Werten und deinen Vorhersagen für die Trainings- und die Testdaten.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen