Разница между оригинальным 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)