Explorer le surapprentissage avec XGBoost
Après avoir entraîné 3 modèles XGBoost avec des profondeurs maximales différentes, vous allez maintenant évaluer leur qualité. Pour cela, vous mesurerez les performances de chaque modèle à la fois sur les données d’entraînement et sur les données de test. Comme vous le savez, les données d’entraînement sont celles sur lesquelles les modèles ont été ajustés. Les données de test correspondent aux ventes du mois suivant, que les modèles n’ont jamais vues.
L’objectif de cet exercice est de déterminer si l’un des modèles entraînés fait du surapprentissage (overfitting). Pour évaluer la qualité des modèles, vous utiliserez l’erreur quadratique moyenne (Mean Squared Error, MSE). Elle est disponible dans sklearn.metrics sous la forme de la fonction mean_squared_error() qui prend deux arguments : les vraies valeurs et les valeurs prédites.
Les DataFrames train et test, ainsi que les 3 modèles entraînés (xg_depth_2, xg_depth_8, xg_depth_15), sont disponibles dans votre espace de travail.
Cet exercice fait partie du cours
Gagner une compétition Kaggle en Python
Instructions
- Faites des prédictions pour chaque modèle, à la fois sur les données d’entraînement et sur les données de test.
- Calculez la MSE entre les vraies valeurs et vos prédictions pour les données d’entraînement et de test.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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))