勾配ブースティングツリー:「変数が多いほど良い」?


10

XGBoost のチュートリアルから、各ツリーが成長すると、すべての変数がスキャンされてノードが分割され、最大のゲイン分割を持つ変数が選択されると思います。だから私の質問は、いくつかのノイズ変数をデータセットに追加すると、これらのノイズ変数は変数の選択に影響しますか?私の論理では、これらのノイズ変数は最大ゲイン分割をまったく提供しないため、それらが選択されることはなく、ツリーの成長に影響を与えません。

答えが「はい」の場合、「変数が多いほどXGBoostに適している」というのは本当ですか?トレーニング時間は考慮しません。

また、答えが「はい」の場合、「モデルから重要でない変数を除外する必要がない」というのは本当です。

ありがとうございました!

回答:


10

私の論理では、これらのノイズ変数は最大ゲイン分割をまったく提供しないため、それらが選択されることはなく、ツリーの成長に影響を与えません。

これは、トレーニングセット内のサンプル数がすべてのバリエーションの適切なカバレッジを提供する、非常に大規模でほぼ無限のデータセットに対してのみ完全に正しいです。実際には、十分な次元を使用すると、多くのサンプリングノイズが発生します。これは、データの次元が多いほど、可能な例のカバー範囲が弱くなるためです。

ターゲット変数と偶然に相関てしまう弱い変数のノイズは、ブースティングアルゴリズムの有効性を制限する可能性があり、これは、評価対象のデータがすでに小さなサブセットにグループ化されているディシジョンツリーのより深い分割でより簡単に起こります。

追加する変数が多ければ多いほど、特定の組み合わせの分割選択アルゴリズムによく似た弱い相関変数が得られ、意図した信号の代わりにこのノイズを学習するツリーが作成され、最終的にはひどく一般化します。

実際には、XGBoostは小規模のノイズに対して非常に堅牢であることがわかりました。ただし、同様の理由により、相関性の高いデータよりも質の低い工学変数が選択されることもあります。したがって、これは「変数が多いほどXGBoostに適している」アルゴリズムではなく、可能な低品質の機能に注意する必要があります。


非常に素晴らしい。ありがとう!あなたの経験に基づいて、XGBoostをフィッティングする前に機能を選択する必要があると思いますか?
WCMC 2017年

@フランク:たぶん。同様に、機能一式から始めて、xgboost変数重要度レポートを使用して支援することもできます。ただし一般的に、XGBoostは機能の選択とエンジニアリングに関する通常の懸念から完全にあなたを救うわけではありません。
Neil Slater

こんにちは@Neilは、をご覧くださいdatascience.stackexchange.com/questions/17288/...あなたはチャンスを得た時はいつでも。ありがとうございました。
WCMC 2017年

@フランク:数字が少しずれているようだったので、私はすでに昨日やっていましたが、明確にするために質問を残しました。
Neil Slater

こんにちは@ニール、前のポスターはあなたの質問に答えなかったので、私は自分のプロジェクトでここに再投稿します。データセットとRスクリプトもここに提供しました。他の人が問題を理解するのにもっと便利だと思います。手助けをしていただけるとありがたいです。
WCMC 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.