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
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))