ランダム フォレスト
ランダム フォレストはディシジョン ツリーのアンサンブルであり、各ディシジョン ツリーは特定のランダムノイズでトレーニングされます。ランダム フォレストは、ディシジョン ツリー アンサンブルの最も一般的な形式です。このユニットでは、効果的なランダム フォレストを構築する確率を高めるために、独立したディシジョン ツリーを作成するいくつかの方法について説明します。
バッグ
バギング(bootstrap aggregat)とは、トレーニング セット内のサンプルのランダムなサブセットで各ディシジョン ツリーをトレーニングすることを意味します。つまり、ランダム フォレスト内の各ディシジョン ツリーは、サンプルの異なるサブセットでトレーニングされます。
バッグは独特なものです。各ディシジョン ツリーは、元のトレーニング セットと同じ数の例でトレーニングされます。たとえば、元のトレーニング セットに 60 個のサンプルが含まれている場合、各ディシジョン ツリーは 60 個のサンプルでトレーニングされます。ただし、バギングでは、これらのサンプルのサブセット(通常は 67%)で各ディシジョン ツリーのみがトレーニングされます。そのため、サブセットに含まれる 40 個のサンプルの一部は、特定のディシジョン ツリーのトレーニング中に再利用する必要があります。この再利用は「置換ありのトレーニング」と呼ばれます
たとえば、表 6 は、バギングが 6 つのサンプルを 3 つのディシジョン ツリーに分散する方法を示しています。次の点に注意してください。
- 各ディシジョン ツリーは合計 6 つのサンプルでトレーニングされます。
- 各ディシジョン ツリーは異なるサンプルのセットでトレーニングされます。
- 各ディシジョン ツリーでは特定の例が再利用されます。たとえば、例 4 はトレーニング決定木 1 で 2 回使用されます。したがって、決定木 1 では例 4 の学習した重みが実質的に 2 倍になります。
表 6. 3 つのディシジョン ツリーに 6 つのトレーニング サンプルをまとめる。各数字は、特定のディシジョン ツリー(1 ~ 3)のトレーニング データセットで特定のトレーニング例(#1 ~ 6)が繰り返された回数を表します。
トレーニング サンプル | ||||||
---|---|---|---|---|---|---|
#1 | #2 | #3 | #4 | #5 | 6 位 | |
元のデータセット | 1 | 1 | 1 | 1 | 1 | 1 |
ディシジョン ツリー 1 | 1 | 1 | 0 | 2 | 1 | 1 |
ディシジョン ツリー 2 | 3 | 0 | 1 | 0 | 2 | 0 |
ディシジョン ツリー 3 | 0 | 1 | 3 | 1 | 0 | 1 |
バギングでは、各ディシジョン ツリーはほとんどの場合、元のトレーニング セットに含まれるサンプルの総数でトレーニングされます。各ディシジョン ツリーをトレーニングするサンプルの数を増やしたり、減らしたりすると、ランダム フォレストの品質が低下する傾向があります。
元のランダム フォレスト論文には記載されていませんが、サンプルのサンプリングは「置き換えなし」で行われることがあります。つまり、トレーニング サンプルをディシジョン ツリーのトレーニング セットに複数回使用することはできません。たとえば、上の表では、すべての値はすべて 0 または 1 になります。
bootstrap_training_dataset=False
を割り当てることで、置換なしでトレーニングを有効にできます。属性のサンプリング
属性のサンプリングでは、使用可能なすべての特徴の中から最適な条件を探すのではなく、各ノードでランダムなサブセットがテストされます。テスト済みの特徴のセットは、ディシジョン ツリーの各ノードでランダムにサンプリングされます。
次のディシジョン ツリーは、属性 / 特徴のサンプリングを示しています。ディシジョンツリーは 5 つの特徴(f1 ~ f5)で トレーニングされています青いノードはテスト済みの機能を表し、白いノードはテストされていません。条件は、最もテストされた特徴(赤い輪郭で表示)から構築されています。
図 21. 属性のサンプリング。
属性サンプリングの比率は、正則化の重要なハイパーパラメータです。上の図では、約 3⁄5 の比率を使用しています。多くのランダム フォレスト実装では、デフォルトで、回帰用の特徴量の 1/3 と分類用の sqrt(特徴量数)をテストします。
TF-DF では、次のハイパーパラメータが属性のサンプリングを制御します。
num_candidate_attributes
num_candidate_attributes_ratio
たとえば、num_candidate_attributes_ratio=0.5
の場合、各ノードで機能の半分がテストされます。
ディシジョン ツリーの正則化を無効にする
ランダム フォレスト内の個々のディシジョン ツリーは、プルーニングなしでトレーニングされます。(過学習とプルーニングをご覧ください)。これにより、過度に複雑なツリーが生成され、予測品質が低下します。個々のツリーを正則化するのではなく、ツリーがアンサンブルされ、全体的な予測がより正確になります。
ランダム フォレストのトレーニングとテストの精度が異なるとexpectします。ランダム フォレストのトレーニング精度は一般的にはるかに高くなります(100% に等しいこともあります)。ただし、ランダム フォレストにおける非常に高いトレーニング精度は標準であり、ランダム フォレストが過学習していることを示すものではありません。
ランダム性の 2 つの原因(バギングと属性サンプリング)により、ディシジョン ツリー間の相対的な独立性が保証されます。この独立性により、個々のディシジョン ツリーの過学習が是正されます。したがって、アンサンブルが過学習することはありません。この非直感的な効果については、次のユニットで説明します。
純粋なランダム フォレストは、リーフあたりの最大深度や最小監視数なしでトレーニングされます。実際には、リーフあたりの最大深度と最小観測数を制限すると効果的です。デフォルトでは、多くのランダム フォレストは次のデフォルトを使用します。
- 最大深度: 約 16
- リーフあたりの最小観測数は約 5 です。
これらのハイパーパラメータは調整できます。
ノイズの明瞭さ
ランダムノイズによってランダム フォレストの品質が向上するのはなぜですか。ランダムノイズの利点を説明するために、図 22 は、楕円パターンの単純な 2 次元の問題の例でトレーニングされた古典的な(プルーニングされた)ディシジョン ツリーとランダム フォレストの予測を示しています。
楕円パターンは、ディシジョン ツリーとディシジョン フォレスト アルゴリズムが軸に整列した条件で学習するのが難しいことで知られており、良い例です。プルーニングされたディシジョン ツリーでは、ランダム フォレストと同じ品質の予測を得ることはできません。
図 22. グラウンド トゥルースと、単一のプルーニング ディシジョン ツリーによって生成された予測とランダム フォレストによって生成された予測の比較。
次のプロットは、ランダム フォレストの最初の 3 つの枝刈りされていないディシジョン ツリーの予測を示しています。つまり、ディシジョン ツリーはすべて次の組み合わせでトレーニングされます。
- バッグ
- 属性サンプリング
- プルーニングの無効化
これら 3 つのディシジョン ツリーの個々の予測は、前の図のプルーニングされたディシジョン ツリーの予測よりも悪いことに注意してください。ただし、個々のディシジョン ツリーの誤差は相関が弱いため、3 つのディシジョン ツリーがアンサンブルに結合されて効果的な予測が作成されます。
図 23. 効果的なアンサンブルを構築する 3 つの枝刈りされていないディシジョン ツリー。
ランダム フォレストのディシジョン ツリーはプルーニングされないため、ランダム フォレストのトレーニングに検証データセットは必要ありません。実際には、特に小規模なデータセットでは、利用可能なすべてのデータでモデルをトレーニングする必要があります。
ランダム フォレストをトレーニングする場合、ディシジョン ツリーが追加されるにつれて誤差はほとんど常に減少します。つまり、モデルの品質はほぼ常に向上します。はい。ほとんどの場合、ディシジョン ツリーを追加するとランダム フォレストの誤差が減少します。つまり、ディシジョン ツリーを追加しても、ランダム フォレストが過学習になることはありません。モデルの改善が止まってしまうのですLeo Breiman 氏は「木が増えてもランダム フォレストは過学習にならない」と述べています。
たとえば、次のプロットは、ディシジョン ツリーが追加された場合のランダム フォレスト モデルのテスト評価を示しています。精度は、約 0.865 で横ばい状態になるまで急速に向上します。ただし、ディシジョン ツリーを追加しても精度は低下しません。つまり、モデルが過学習することはありません。この動作は(ほとんどの場合)常に真実であり、ハイパーパラメータとは独立しています。
図 24. ランダム フォレストにディシジョン ツリーが追加されても、精度は一定に保たれます。