プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ランダムフォレストとは何ですか?


ランダムフォレストは、決定木分類器用に特別に設計されたアンサンブルアプローチのクラスです。これは、いくつかの決定木によって行われた予測を統合します。各決定木は、ランダムなベクトルの個別のセットの値に基づいて作成されます。

ランダムベクトルは、確率分布が分類が難しいインスタンスをターゲットにするために多様であるAdaBoostで使用される適応方法とは異なり、一定の確率分布から生成されます。

バギングニーズ決定木はランダムフォレストの明確なケースであり、初期トレーニングセットから復元を使用してN個のサンプルをランダムに選択することにより、モデル構築手順にランダム性が挿入されます。バギングも、完全なモデル構築フェーズ全体でブートストラップされたサンプルを作成するために、同様の一様確率分布を必要とします。

各決定木には、一定の確率分布から生成されるランダムベクトルが必要です。ランダムベクトルは、いくつかの方法で樹木成長手順に統合できます。最初の方法は、F入力特徴をランダムに選択して、決定木の各ノードで分割することです。

その結果、アクセス可能なすべての機能を調べるのではなく、ノードを分割する決定は、これらの選択された機能から決定されます。木は剪定せずに完全に発達します。これは、次のツリーに存在するバイアスを減らすのに役立ちます。

ツリーが構築されているため、予測は多数決の設計を使用して接続されます。このアプローチはForest-R1と呼ばれ、RIはランダムな入力選択を定義します。ランダム性を向上させることができ、バギングを使用してForest-RIのブートストラップサンプルを作成できます。

ランダムフォレストの耐久性と相関は、Fのサイズに基づくことができます。Fが十分に小さい場合、したがって、木の影響はあまり相関しなくなります。言い換えると、ツリー分類器の強度は、より多くの特徴Fで強化することに影響します。

複数の元の特徴dが小さすぎる場合、決定木を構築するためにランダムな特徴の個別のセットを選択することは複雑です。特徴空間を増やす1つの方法は、入力特徴の線形セットを作成することです。特に、各ノードでは、入力フィーチャのLをランダムに選択することで新しいフィーチャが作成されます。

入力特徴は、[-1、1]の範囲の一様分布から作成された係数を使用して線形にリンクされます。すべてのノードで、そのようなランダムに組み合わされた新しい機能のFが作成され、ノードを分割するためにそれらの最良のものが最終的に選択されます。このアプローチはForest-RCと呼ばれます。


  1. C#の名前空間とは何ですか?

    名前空間は、ある名前のセットを別の名前のセットから分離する方法を提供するためのものです。名前空間の定義は、次のように、キーワードnamespaceで始まり、その後に名前空間名が続きます- namespace namespace_name {    // code declarations } 名前空間を定義する- namespace namespace_name {    // code declarations } 以下は、C#で名前空間を使用する方法を示す例です- 例 using System; namespace first_space {

  2. Javaに欠けているC++機能は何ですか?

    C ++には見られるが、Javaには見られない多くの機能があります。それらのいくつかは以下にリストされています- Javaにはunsignedintオプションはありません ガベージコレクタがこの操作を実行するため、Javaにはデストラクタも「削除」もありません。 Javaにはフレンドクラスやフレンド関数はありません。 Javaにはポインタはありません。 Javaにはtypedefオプションはありません。 Javaは純粋にオブジェクト指向言語であるため、グローバル変数やグローバル関数はありません。 C ++に存在するテンプレートの概念は、Javaにはあり