ランダムフォレストの最適なツリー数は予測子の数に依存しますか?


46

予測子の数が多いときに、ランダムフォレストに多数の木が必要な理由を誰かが説明できますか?どのようにして最適なツリー数を決定できますか?

回答:


70

ランダムフォレストは、バギング(すべてではなく観測のサンプルを選ぶ)とランダムサブスペースメソッド(すべてではなく特徴のサンプルを選ぶ、つまり属性バギング)を使用してツリーを成長させます。観測値の数は多いが、木の数が少なすぎる場合、一部の観測値は一度だけ予測されるか、まったく予測されません。予測子の数は多いが、ツリーの数が少なすぎる場合、使用されるすべての部分空間で(理論的に)いくつかの特徴を見逃す可能性があります。どちらの場合も、ランダムフォレストの予測力が低​​下します。しかし、サブスペースの選択は各ノードで実行されるため、最後のケースはかなり極端なケースです。

分類中の部分空間の次元はデフォルトでは p(やや小さい、pは予測子の総数)ですが、ツリーには多くのノードが含まれています。回帰中、デフォルトでは部分空間の次元はp/3(十分な大きさ)ですが、ツリーに含まれるノードの数は少なくなります。したがって、ランダムフォレストの最適なツリー数は、極端な場合にのみ予測子の数に依存します。ppp/3

アルゴリズム公式ページには、ランダムフォレストはオーバーフィットしないと記載されており、必要なだけツリーを使用できます。しかし、Mark R. Segal(2004年4月14日。「機械学習ベンチマークとランダムフォレスト回帰。」バイオインフォマティクス&分子生物統計学センター)は、ノイズの多いデータセットに適合していることを発見しました。したがって、最適な数を取得するには、ntreeパラメーターのグリッドでランダムフォレストのトレーニングを試みるか(単純ですが、CPUをより多く消費します)、またはを使用して多数のツリーを持つ1つのランダムフォレストを構築しkeep.inbag、最初のツリーのout-of-bag(OOB)エラー率を計算します(ここでn1からに変わります)、OOBエラー率とツリー数の関係をプロットします(より複雑ですが、CPUの消費は少なくなります)。nn1ntree


-2

この記事に従って

彼らは、ランダムな森が64〜128本の間に多くの木を持つべきであると提案します。これにより、ROC AUCと処理時間のバランスが取れているはずです。


10
データセット内の特徴の数に結果が依存していないことは奇妙に思えます
...-naught101

-5

あなたが1000以上の特徴を持ち、1000行以上のツリーを持っていることができない場合は、何かを追加したいです。

私はあなたが最初にCPUとRAMの数を検出してからクロス検証を開始してそれらとツリーの数の比率を見つける必要があることをお勧めします

pythonでsikit learn n_jobs=-1を使用する場合、すべてのプロセスを使用するオプションがありますが、コストは各コアのデータのコピーを必要とします。その後、この式をtrisできます

ntree = sqrt(行の数*列の数)/ numberofcpu


6
私はあなたの声明の証拠と正当性を提供するためにこれを編集する必要があると思います。
mdewey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.