2017-08-26 3 views
0

私は記事hereを使っていましたが、関数CVとxgboostの "number of trees"に関する詳細を完全には理解していません。xgboost CVとツリーの数

フィーチャとターゲット値のデータフレームから開始するとします。 CVはどのラウンドで何をしますか? CV結果に500行(500個の決定木がある)の場合、各ツリーはどのように構築されますか?そして、500本の樹木をどのように組み合わせて、単一の対数損失数を生み出していますか?

CV関数から1回の予測を得ることができれば、モデル(つまり損失番号)も生成するXGBClassifier.fitが必要なのはなぜですか?

ありがとうございます。

答えて

1

Xgboostは勾配ブースト法であり、予測精度を向上させるために繰り返しごとにツリーを追加します。グラデーションブースティングがどのように機能するかについては、この記事の冒頭を参照してください。https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/これは、木がどのように構築されるかを説明するはずです。

オーバーフィットを開始するまでツリーを追加すると、予測精度が向上します。予測精度は低下します。だから、最適な数の木を見つける必要があります。

この番号を取得することは基本的には不可能です。これがxgboost.cvの目的です。トレーニングデータを2つのサブセットに分割します。最初のサブセットはxgboostのトレーニングに使用され、2番目のサブセットは検証セットとして使用されます。各繰り返しの後(追加のツリーを追加する)、xgboostは新しい検証エラーを計算します。これにより、xgboostは過大な状態になったとき(検証エラーが増加し始める時)を検出することができます。これにより、指定されたハイパーパラメータのセットに対して最適なツリー数が得られます。

xgboost.cvは評価履歴(リスト)を返しますが、xgboost.trainはブースターを返します。

また、xgboost.fitはsklearnラッパーの一部です(xgboost.ciもxgboostラーニングAPIの一部です)。

最終的には、最適なツリー数を見つけるのにxgboost.cvは必要ありません。 「early_stopping_rounds」が設定された状態でxgboost.trainを実行することもできます。

ご不明な点がございましたら、コメントにご連絡ください。

+0

'xgb.cv'は何のために使われているのですか?歴史をリストアップするだけですか? –