CommencezCommencez gratuitement

Ajuster colsample_bytree

Il est maintenant temps d'ajuster "colsample_bytree". Vous avez déjà vu ce concept si vous avez travaillé avec 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 caractéristiques à considérer à chaque division dans un arbre donné. Dans xgboost, colsample_bytree doit être un nombre à virgule entre 0 et 1.

Cette activité fait partie du cours

Amorçage de gradient avancé avec XGBoost

Voir le cours

Instructions de l’exercice

  • Créez une liste appelée colsample_bytree_vals pour y stocker les valeurs 0.1, 0.5, 0.8 et 1.
  • Faites varier systématiquement "colsample_bytree" et effectuez une validation croisée, exactement comme vous l'avez fait auparavant avec max_depth et eta.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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