Esplora l'overfitting con XGBoost
Dopo aver addestrato 3 modelli XGBoost con diverse profondità massime, ora ne valuterai la qualità. A questo scopo, misurerai le prestazioni di ciascun modello sia sui dati di train sia sui dati di test. Come ormai sai, i dati di train sono quelli su cui i modelli sono stati addestrati. I dati di test sono le vendite del mese successivo, che i modelli non hanno mai visto.
L’obiettivo di questo esercizio è capire se uno dei modelli addestrati sta facendo overfitting. Per misurare la qualità dei modelli userai la Mean Squared Error (MSE). È disponibile in sklearn.metrics come funzione mean_squared_error() che accetta due argomenti: i valori veri e i valori predetti.
I DataFrame train e test, insieme ai 3 modelli addestrati (xg_depth_2, xg_depth_8, xg_depth_15), sono disponibili nel tuo workspace.
Questo esercizio fa parte del corso
Vincere una competizione Kaggle con Python
Istruzioni dell'esercizio
- Fai le predizioni per ciascun modello sia sui dati di train sia su quelli di test.
- Calcola la MSE tra i valori reali e le tue predizioni sia per i dati di train sia per quelli di test.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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))