web-dev-qa-db-ja.com

xgb.trainとxgb.XGBRegressor(またはxgb.XGBClassifier)の違いは何ですか?

もう知っている "xgboost.XGBRegressorは、XGBoost用のScikit-Learn Wrapperインターフェースです。」

しかし、彼らは他の違いを持っ​​ていますか?

15
Statham

xgboost.train は、勾配ブースティングメソッドを介してモデルをトレーニングするための低レベルAPIです。

xgboost.XGBRegressorxgboost.XGBClassifierは、DMatrixを準備して渡すラッパー(Scikit-Learnのようなラッパーと呼ばれます)です。対応する目的関数とパラメーター。結局、fit呼び出しは単純に次のように要約されます。

self._Booster = train(params, dmatrix,
                      self.n_estimators, evals=evals,
                      early_stopping_rounds=early_stopping_rounds,
                      evals_result=evals_result, obj=obj, feval=feval,
                      verbose_eval=verbose)

これは、XGBRegressorおよびXGBClassifierで実行できるeverythingは、基礎となるxgboost.train関数を介して実行できることを意味します。その逆は明らかに正しくありません。たとえば、xgboost.trainのいくつかの有用なパラメーターはXGBModel AP​​Iでサポートされていません。顕著な違いのリストは次のとおりです。

  • xgboost.trainを使用すると、各反復の最後に適用されるcallbacksを設定できます。
  • xgboost.trainは、xgb_modelパラメータを介してトレーニングの継続を許可します。
  • xgboost.trainは、eval関数の最小化だけでなく、最大化も可能にします。
24
Maxim

@ Maxim、xgboost 0.90(またはそれ以前)では、これらの違いはもう存在しません xgboost.XGBClassifier.fit

  • callbacks
  • _xgb_model_パラメータとの連結を許可します
  • 同じ組み込みの評価メトリックまたはカスタム評価関数をサポートします

私が見つけるのは_evals_result_です。これは、フィット(clf.evals_result())後に個別に取得する必要があり、得られるdictは、それを利用できないため異なります。ウォッチリスト内の評価の名前(watchlist = [(d_train, 'train'), (d_valid, 'valid')])。

1
paulperry