web-dev-qa-db-fra.com

Quelle est la différence entre num_boost_round et n_estimators

J'ai vu que certaines méthodes xgboost prennent un paramètre num_boost_round, comme ça:

model = xgb.cv(params, dtrain,  num_boost_round=500, early_stopping_rounds=100)

D'autres prennent cependant n_estimators comme ça:

model_xgb = xgb.XGBRegressor(n_estimators=360, max_depth=2, learning_rate=0.1)

Pour autant que je sache, chaque fois qu'un boosting est appliqué, un nouvel estimateur est créé. N'est-ce pas exact?

Si tel est le cas, les chiffres num_boost_round et n_estimators devrait être égal, non?

14
octavian

Oui, ils sont les mêmes, se référant tous deux au même paramètre ( voir les documents ici , ou le problème de github ).

La raison du nom différent est parce que xgb.XGBRegressor est une implémentation de l'API scikit-learn; et scikit-learn utilise classiquement n_estimators pour se référer au nombre d'étapes de boosting (par exemple le GradientBoostingClassifier )

1
Tin Lai