2017-06-21 26 views
1

大きな欠損値(40%以上欠損)を持つデータセットがあります。 xgboostとH2oのグラジエントブースティングでモデル化された - 両方のケースでまともなモデルを得ま​​した。しかし、xgboostはこの変数をモデルの主要な貢献者の1つとして示していますが、H2o Gradient Boostingによれば変数は重要ではありません。 xgboostは欠損値を持つ変数を別々に扱いますか?両方のモデルに対するすべての構成はまったく同じです。xgboostとH2oグラジエントブースト

答えて

4

2つの方法では、不足しているバリュー処理と変数のインポートが少し異なります。どちらも情報として欠損値を扱っている(つまり、彼らはそれらから学び、単純な定数で代用するだけではない)。変数importancesは、ツリー構築中のそれぞれの損失関数の利得から計算されます。 H2Oは二乗誤差を使用し、XGBoostは勾配とヘッセ行列に基づいてより複雑なものを使用します。

あなたが確認できることの1つは、さまざまなシードを使用した異なる実行間の変数の差異の差異で、各メソッドが変数の有効性の点でどの程度安定しているかを確認することです。

PS。カテゴリがある場合は、H2Oの要素として列を残しておく方がよいでしょう。独自のエンコーディングを行う必要はありません。これは、列とXGBoostのデータセットの有効なカウントが異なるため、列のサンプリングでは状況が異なります。