Explorer le surapprentissage avec XGBoost
Après avoir entraîné trois modèles XGBoost avec des profondeurs maximales différentes, vous allez maintenant évaluer leur qualité. Pour ce faire, vous mesurerez la qualité 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é entraîné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 présente du surapprentissage. Pour mesurer la qualité des modèles, vous utiliserez l'erreur quadratique moyenne (MSE). Elle est disponible dans sklearn.metrics sous la forme de la fonction mean_squared_error() qui prend deux arguments : les valeurs réelles et les valeurs prédites.
Les DataFrames train et test, ainsi que les trois modèles entraînés (xg_depth_2, xg_depth_8, xg_depth_15), sont déjà disponibles dans votre espace de travail.
Cette activité fait partie du cours
Remporter une compétition Kaggle en Python
Instructions de l’exercice
- Faites des prédictions pour chaque modèle, tant sur les données d'entraînement que sur les données de test.
- Calculez la MSE entre les valeurs réelles et vos prédictions, pour les données d'entraînement et pour les données de test.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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))