ランダムフォレストを使用したモデリングには相互検証が必要ですか?


23

私が見た限りでは、これについて意見が異なる傾向があります。最善の方法は、クロス検証を使用することです(特に、同じデータセット上のRFと他のアルゴリズムを比較する場合)。一方、元のソースは、モデルトレーニング中にOOBエラーが計算されるという事実は、テストセットのパフォーマンスの指標として十分であると述べています。Trevor Hastieでさえ、比較的最近の講演で「ランダムフォレストは無料の相互検証を提供する」と述べています。直感的に、1つのデータセットでRFベースのモデルをトレーニングして改善しようとする場合、これは理にかなっています。

誰かがランダムフォレストとの交差検証の必要性に対する賛成論と反対論を並べてください。


明示的に意見を求める質問は、スタック交換サイトdatascience.stackexchange.com/help/dont-askで一般的に推奨されていません。または、いずれかのポジションの理論的基礎を探します。
image_doctor

2
ランダムフォレストは他のMLアルゴリズムをオーバーフィットする可能性は低くなりますが、クロス検証(または代替の評価形式)を引き続きお勧めします。
デビッド

:私はあなたが統計学者SO上でその質問をsholud考えるstats.stackexchange.com
マルチンコジンスキー

@Davidを2回目にしたいと思います...何らかの方法で、クロス検証を行うことになります。

Trevor Hastieが主張した声明の参照を提供してもらえますか?
-tipanverella

回答:


7

既定では、ランダムフォレストは、回帰テスト用のトレーニングと残りの2/3のデータと、分類中のテスト用のトレーニングと残りのほぼ70%のデータを取得します。ただし、sklearnでnfoldsを使用してCVを使用する場合は、oob_score(out of bag)= TrueなどのCVを使用または使用せずにモデルのパフォーマンスを示すホールドアウトセットの概念を使用できます。つまり、nfoldsの有無にかかわらずoob_score = Trueを使用することで、CVの使用がデータに適しているかどうかを判断できます。一般に、ターゲットが特定の分布に従っていて、観測データがあまりない場合は、CV多くの改善。


5

主な違いの1つは、相互検証により、すべてのサンプルがトレーニングセットとテストセットに表示されることを保証するため、ある時点でデータの100%がトレーニングとテストに使用されることです。

データセットのサイズに応じて、ブートストラップ、置換によるサンプリング、ランダムフォレストでの発生は、ツリーに表示される分割にすべてのインスタンスが含まれることを保証しません。フォレストに十分なツリーがある場合、OOB推定値は最適なOOB推定値に漸近的に収束するはずです。

両方の方法の精度はある程度データに依存するため、目の前にある特定のデータで両方の方法を比較し、CVとRF OOBの推定値が同様の値を与えるかどうかを確認するのが賢明かもしれません。

そうでない場合、おそらくCVのKの値がはるかに高いため、真のエラー率の推定値をさらに調べる価値があります。


3

を使用して、5万行のデータセットに対していくつかのテストを行いましたsklearn.RandomForestRegressor

かなり異なるスコアが得られます-メトリックに正規化されたジニを使用しています- rf.oob_prediction_(0.2927)またはKFold CV(7倍で0.3258、3倍で0.3236)を使用しているかどうかによって異なります。

それにより、「特に同じデータセット上のRFと他のアルゴリズムを比較する場合」についてのあなたのポイントは、OOB予測に頼るのではなく、手動のCVを使用することに対する強い考慮事項であると思われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.