Concours de boosting : Light vs Extreme
Même si les performances du modèle CatBoost sont plutôt bonnes, essayons deux autres variantes du boosting pour voir laquelle fait mieux : l’approche « Light » ou l’approche « Extreme ».
CatBoost est vivement recommandé lorsqu’il y a des variables catégorielles. Ici, toutes les caractéristiques sont numériques ; l’une des autres approches pourrait donc donner de meilleurs résultats.
Comme nous entraînons des régressseurs, nous allons utiliser un paramètre supplémentaire, objective, qui précise la fonction d’apprentissage. Pour appliquer une erreur quadratique, nous définirons objective sur 'reg:squarederror' pour XGBoost et sur 'mean_squared_error' pour LightGBM.
De plus, nous préciserons le paramètre n_jobs pour XGBoost afin d’améliorer son temps de calcul.
REMARQUE : veillez à ne pas utiliser de classifieurs, sinon votre session pourrait expirer !
Cet exercice fait partie du cours
Méthodes d’ensemble en Python
Instructions
- Construisez un
XGBRegressoravec les paramètres :max_depth = 3,learning_rate = 0.1,n_estimators = 100etn_jobs=2. - Construisez un
LGBMRegressoravec les paramètres :max_depth = 3,learning_rate = 0.1etn_estimators = 100.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Build and fit an XGBoost regressor
reg_xgb = ____.____(____, ____, ____, ____, objective='reg:squarederror', random_state=500)
reg_xgb.fit(X_train, y_train)
# Build and fit a LightGBM regressor
reg_lgb = ____.____(____, ____, ____, objective='mean_squared_error', seed=500)
reg_lgb.fit(X_train, y_train)
# Calculate the predictions and evaluate both regressors
pred_xgb = reg_xgb.predict(X_test)
rmse_xgb = np.sqrt(mean_squared_error(y_test, pred_xgb))
pred_lgb = reg_lgb.predict(X_test)
rmse_lgb = np.sqrt(mean_squared_error(y_test, pred_lgb))
print('Extreme: {:.3f}, Light: {:.3f}'.format(rmse_xgb, rmse_lgb))