ランダムフォレストと極端にランダム化されたツリーは、ランダムフォレスト内のツリーの分割が非常にランダム化されたツリーの場合はランダムですが、決定論的です(より正確には、次の分割は、現在のツリーの選択された変数のランダムな均一分割の中で最良の分割です)。しかし、さまざまな状況でのこのさまざまな分割の影響を完全には理解していません。
- バイアス/分散の観点からどのように比較しますか?
- どのように比較しますか無関係な変数の存在?
- 相関変数の存在下でそれらをどのように比較しますか?
コメント
回答
エクストラ-(ランダム化)-ツリー(ET) article には、バイアス分散分析が含まれています。16ページで、6つのテスト(ツリーc)でのRFを含む複数の方法との比較を確認できます。 lassificationと3つの回帰)。
どちらの方法もほぼ同じですが、(高次元のデータセットに)ノイズの多い特徴が多数ある場合、ETは少し悪化します。
とはいえ、(おそらく手動で)特徴選択がほぼ最適であれば、パフォーマンスはほぼ同じですが、ETの計算速度は速くなります。
記事自体から:
アルゴリズムの分析と、いくつかのテスト問題バリアントでのKの最適値の決定により、値は原則として問題の詳細、特に無関係な属性の割合。 […]バイアス/分散分析は、エクストラツリーが分散を減少させると同時に、バイアスを増加させることによって機能することを示しています。 […]ランダム化が最適レベルを超えて増加すると、分散はわずかに減少しますが、バイアスはしばしば大幅に増加します。
いつものように特効薬はありません。
Pierre Geurts、Damien Ernst、LouisWehenke。 「非常にランダム化されたツリー」
コメント
- ノイズが多い場合にETが少し悪化することに関する参照(経験的または理論的)特徴?それとも、これは経験に基づいていますか?
- 私の経験では、逆のことが当てはまります。Extra-Treesは、多くのノイズの多い機能を使用した方が優れています。大きなフォレスト(多くの推定量、sklearnのn_estimators)が必要であり、これが機能するためには、各分割で考慮される特徴の数(sklearnのmax_features)を調整する必要があることに注意してください。単一のエクストラツリーは、複数のランダムフォレストツリーにオーバーフィットしますが、エクストラツリーが多数ある場合、それらはさまざまな方法でオーバーフィットする傾向があり、オーバーフィットしません。多くの場合、最大3000の推定量で大幅な改善が見られます。
- @ramhiserが指摘したように、ETは、ノイズの多い機能が存在する場合でも、より高いパフォーマンスを維持しているようです。回答にいくつかの参照を追加できますか?
- エクストラツリーのツリーは常に'切り株'です(ただ1つの分割)??他の記事を読むと、そのような印象を与えます。
回答
ExtraTreesClassifierは、RandomForestの兄弟のようなものですが、2つの重要な要素があります。違い。
複数の決定木を構築します。複数のツリーを構築するには、複数のデータセットが必要です。ベストプラクティスは、完全なデータセットで決定木をトレーニングするのではなく、各ツリーのデータの一部(約80%)でのみトレーニングすることです。ランダムなフォレストでは、置換を使用して観測値を描画します。ランダムフォレストでの観測。ExtraTreesClassifierでは、置換なしで観測を描画しているため、ランダムフォレストのように観測が繰り返されることはありません。
分割は、不均一な親ノードを変換するプロセスです。 RandomForestでは、親を2つの最も均質な子ノードに変換するための最良の分割を選択します。ExtraTreesClassifierでは、ランダム分割を選択して、親ノードを2つのランダムな子ノードに分割します。
ExtraTreesClassifierで終わる高分散から低分散の順に並べられたいくつかのアンサンブルメソッドを見てみましょう。
1。デシジョンツリー(高分散)
単一のデシジョンツリーは、次の1つの経路からのみ学習するため、通常、学習元のデータに適合しません。決定。通常、単一の決定木からの予測では、新しいデータを正確に予測することはできません。
2。ランダムフォレスト(中分散)
ランダムフォレストモデルは、次の方法でランダム性を導入することにより、過剰適合のリスクを軽減します。
- 複数のツリーを構築する(n_estimators)
- 置換を使用して観測値を描画する(つまり、ブートストラップされたサンプル)
- すべてのノードで選択された機能のランダムなサブセット間で最適な分割でノードを分割する。分割は、非同種の親ノードを2つの同種の子ノードに変換するプロセスです(可能な限り)。
3。エクストラツリー(低分散)
エクストラツリーは、複数のツリーを構築し、のランダムなサブセットを使用してノードを分割するという点で、ランダムフォレストに似ています。機能ですが、2つの重要な違いがあります。それは、観測値をブートストラップしない(つまり、置換なしでサンプリングする)ことと、ノードが最適な分割ではなくランダムな分割で分割されることです。したがって、要約すると、ExtraTrees:
- デフォルトでbootstrap = Falseを使用して複数のツリーを構築します。つまり、置換なしでサンプリングします
- ノードはランダムなサブセット間のランダムな分割に基づいて分割されますすべてのノードで選択された機能の内訳
エクストラツリーでは、ランダム性はデータのブートストラップからではなく、すべての観測値のランダムな分割から生じます。 ExtraTreesは(Extremely Randomized Trees)にちなんで名付けられています。
コメント
- [ブートストラップ]( en .wikipedia.org / wiki / Bootstrapping_(statistics)は、置換でサンプリングしています。
回答
回答ありがとうございます!まだ質問があるので、これら2つの方法の動作についてより多くの洞察を得るために、いくつかの数値シミュレーションを実行しました。
- 追加ノイズの多い機能が存在する場合、ツリーはより高いパフォーマンスを維持しているようです。
次の図は、ターゲットに関係のないランダムな列がデータセットに追加されたときのパフォーマンス(相互検証で評価)を示しています。ターゲットは最初の3つの列の単なる線形の組み合わせです。
-
すべての変数が関連している場合、両方の方法で同じパフォーマンスが達成されているように見えますce、
-
余分なツリーはランダムフォレストより3倍速いようです(少なくとも、scikit learnの実装では)
ソース
記事全文へのリンク:ランダムフォレストと追加ツリー。
コメント
- リンクされた記事から:"青でランダムフォレストの結果が表示され、赤で追加のツリーが表示されます。"
回答
答えは、状況によって異なります。問題については、ランダムフォレストと追加のツリーの両方を試してみることをお勧めします。大規模なフォレスト(1000〜3000ツリー/推定器、sklearnのn_estimators)を試し、各分割で考慮される特徴の数(sklearnのmax_features)と、分割ごとの最小サンプル(sklearnのmin_samples_split)および最大ツリー深度( sklearnのmax_depth)。とはいえ、オーバーチューニングは過剰適合の一形態である可能性があることを覚えておく必要があります。
私が個人的に取り組んだ2つの問題があります。非常にノイズの多いデータでは、追加のツリーが有用であることが証明されました。
uniform split
とは何ですか?