タイトルにはすべてが含まれていますが、ランダムフォレストを使用する前に機能選択を使用することには意味がありますか?
タイトルにはすべてが含まれていますが、ランダムフォレストを使用する前に機能選択を使用することには意味がありますか?
回答:
はい、それはあり、それは非常に一般的です。50%を超える機能を期待している場合でも、冗長性はありませんが、まったく役に立ちません。たとえば、randomForestパッケージにはラッパー関数rfcv()があり、これはrandomForestを事前トレーニングし、最も重要度の低い変数を省略します。rfcv関数はこの章を参照してください。楽観的な結果を超えないように、特徴選択+モデリングを外側の交差検証ループに埋め込むことを忘れないでください。
[以下を編集]
私は「まったく役に立たない」を和らげることができました。単一のランダムフォレストでは、ほとんどの場合、たとえば、ラッソ正則化を使用した回帰では、これらが(シミュレートされた後知恵で)ランダムな特徴であったとしても、完全に無視されます。機能によるディシジョンツリーの分割は、数千または数百万のノードのいずれかでローカル基準によって選択され、後で元に戻すことはできません。機能を1つの優れた選択に切り下げることはお勧めしませんが、一部のデータセットでは、この変数選択を使用して予測パフォーマンスを大幅に向上させることができます(繰り返しの外部相互検証によって推定)。典型的な発見は、機能の100%を維持するか、数パーセントしか機能しないことであり、同様の推定予測パフォーマンスを持つ広い中間範囲が存在する可能性があります。
おそらく妥当な経験則:なげなわのような正則化は、特定の問題に対してリッジのような正則化よりも優れていると予想される場合、ランダムフォレストを事前トレーニングして、内部の out-of-bagで機能をランク付けすることができます変数の重要性を相互検証し、最も重要でない機能のいくつかを削除してみてください。変数の重要度は、トレーニング後に予測の前に特定の機能が置換される(値がシャッフルされる)ときに、交差検証されたモデルの予測がどの程度減少するかを定量化します。特定の機能を含める必要があるかどうかは確実ではありませんが、上位5%の機能を予測する方が、下位5%を予測するよりはるかに簡単です。
実用的な観点からは、機能ごとの固定取得コストがあれば、計算の実行時間を短縮でき、リソースを節約できる可能性があります。