web-dev-qa-db-ja.com

オリジナルのxgboost(Learning API)とsklearn XGBClassifier(Scikit-Learn API)の違い

以下のxgbootssklearnインターフェースを使用して、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に違いはありますか?

13
ybdesire

私が理解しているように、xgbとそのsklearnインターフェースのデフォルトパラメーターには多くの違いがあります。例:デフォルトのxgbのeta = 0.3で、もう一方のxgbのeta = 0.1です。各実装のデフォルトパラメータの詳細については、次を参照してください。

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

5
Du Phan

XGBClassifiersklearnのインターフェイスであり、最終的にはxgbライブラリを呼び出すため、結果は同じである必要があります。

同じ結果を得るために、両方のアプローチに同じseedを追加してみることができます。たとえば、sklearnのインターフェースでは次のようになります。

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