Разница между оригинальным xgboost (API обучения) и sklearn XGBClassifier (API Scikit-Learn)

Я использую интерфейс xgboots sklearn ниже для создания и обучения модели xgb-1.

clf = xgb.XGBClassifier(n_estimators = 100, objective= 'binary:logistic',)
clf.fit(x_train, y_train,  early_stopping_rounds=10, eval_metric="auc", 
    eval_set=[(x_valid, y_valid)])

И модель xgboost может быть создана с помощью оригинальной xgboost как модель-2 ниже:

param = {}
param['objective'] = 'binary:logistic'
param['eval_metric'] = "auc"
num_rounds = 100
xgtrain = xgb.DMatrix(x_train, label=y_train)
xgval = xgb.DMatrix(x_valid, label=y_valid)
watchlist = [(xgtrain, 'train'),(xgval, 'val')]
model = xgb.train(plst, xgtrain, num_rounds, watchlist, early_stopping_rounds=10)

Я думаю, что все параметры одинаковы между моделью-1 и модель-2. Но оценка проверки отличается. Любая разница между моделью-1 и моделью-2?

Ответ 1

Как я понимаю, есть много различий между параметрами по умолчанию в xgb и в его интерфейсе sklearn. Например: у xgb по умолчанию eta = 0.3, а у другого eta = 0.1. Вы можете узнать больше о параметрах по умолчанию для каждого орудия здесь:

https://github.com/dmlc/xgboost/blob/master/doc/parameter.md http://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn

Ответ 2

Результаты должны быть одинаковыми, поскольку XGBClassifier - это только интерфейс sklearn, который в конце вызывает библиотеку xgb.

Вы можете попытаться добавить тот же самый seed к обоим подходам, чтобы получить одинаковые результаты. Например, в вашем интерфейсе sklearn:

clf = xgb.XGBClassifier(n_estimators = 100, objective= 'binary:logistic',seed=1234)