Ajuster colsample_bytree
Vous allez maintenant régler "colsample_bytree". Vous avez déjà croisé ce paramètre si vous avez utilisé le RandomForestClassifier ou le RandomForestRegressor de scikit-learn, où il s’appelait simplement max_features. Dans xgboost comme dans sklearn, ce paramètre (même s’il porte un nom différent) indique la fraction de variables explicatives parmi lesquelles choisir à chaque séparation d’un arbre. Dans xgboost, colsample_bytree doit être un nombre décimal compris entre 0 et 1.
Cet exercice fait partie du cours
Extreme Gradient Boosting avec XGBoost
Instructions
- Créez une liste appelée
colsample_bytree_valspour stocker les valeurs0.1,0.5,0.8et1. - Faites varier systématiquement
"colsample_bytree"et effectuez une validation croisée, exactement comme vous l’avez fait précédemment avecmax_deptheteta.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create your housing DMatrix
housing_dmatrix = xgb.DMatrix(data=X,label=y)
# Create the parameter dictionary
params={"objective":"reg:squarederror","max_depth":3}
# Create list of hyperparameter values: colsample_bytree_vals
____ = ____
best_rmse = []
# Systematically vary the hyperparameter value
for curr_val in ____:
____ = ____
# Perform cross-validation
cv_results = xgb.cv(dtrain=housing_dmatrix, params=params, nfold=2,
num_boost_round=10, early_stopping_rounds=5,
metrics="rmse", as_pandas=True, seed=123)
# Append the final round rmse to best_rmse
best_rmse.append(cv_results["test-rmse-mean"].tail().values[-1])
# Print the resultant DataFrame
print(pd.DataFrame(list(zip(colsample_bytree_vals, best_rmse)), columns=["colsample_bytree","best_rmse"]))