CommencerCommencer gratuitement

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

Afficher le cours

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))
Modifier et exécuter le code