xgboost icon indicating copy to clipboard operation
xgboost copied to clipboard

early_stopping_rounds can not work when train multilabel ?

Open yiwiz-sai opened this issue 2 years ago • 2 comments

import xgboost as xgb
from sklearn.multioutput import *
from sklearn.datasets import * 
 
params = {'num_parallel_tree':2, 'n_estimators': 1000, 'booster':'gbtree', 'early_stopping_rounds':2,
          'n_jobs':4}

clf = xgb.XGBClassifier(**params)
x, y = make_multilabel_classification(n_features=5,n_samples=50, n_classes=5, n_labels=2)
#print(x)
#print(y)
clf.fit(x, y, eval_set=[(x,y)])
# clf.predict_proba(x)
# xgb.plot_importance(clf)

output:

....
[845]	validation_0-logloss:0.07376
[846]	validation_0-logloss:0.07376
[847]	validation_0-logloss:0.07375
[848]	validation_0-logloss:0.07375
[849]	validation_0-logloss:0.07374
[850]	validation_0-logloss:0.07374
[851]	validation_0-logloss:0.07374 -> should stop here
[852]	validation_0-logloss:0.07373
[853]	validation_0-logloss:0.07373
[854]	validation_0-logloss:0.07372
[855]	validation_0-logloss:0.07372
[856]	validation_0-logloss:0.07371
[857]	validation_0-logloss:0.07371
[858]	validation_0-logloss:0.07371
[859]	validation_0-logloss:0.07370
[860]	validation_0-logloss:0.07370
[861]	validation_0-logloss:0.07369
[862]	validation_0-logloss:0.07369
[863]	validation_0-logloss:0.07369
...

seems early_stopping_rounds doesn't work

yiwiz-sai avatar Jun 10 '22 09:06 yiwiz-sai

I suspect that just floating-point printing inaccuracy.

trivialfis avatar Jun 14 '22 08:06 trivialfis

I suspect that just floating-point printing inaccuracy.

I don't think so, as you can see, I used 1000 n_estimators to train, binary classification always stops early

yiwiz-sai avatar Jun 14 '22 20:06 yiwiz-sai