2 クラス デシジョン フォレスト
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
デシジョン フォレスト アルゴリズムを使用して 2 クラス分類モデルを作成します
カテゴリ: Machine Learning/ モデルの初期化 / 分類
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) の 2 クラス の意思決定フォレスト モジュールを使用して、決定フォレスト アルゴリズムに基づいて機械学習モデルを作成する方法について説明します。
デシジョン フォレストは、高速な教師ありアンサンブル モデルです。 最大 2 つの結果を伴うターゲットを予測したい場合、このモジュールが適しています。 最適な結果を得るデシジョン ツリー モデルを構成する方法が分からない場合は、モデルハイパーパラメーターの調整モジュールを使用して、複数のモデルをトレーニングおよびテストすることをお勧めします。 チューニングでは、複数の可能性を反復処理し、最適なソリューションを見つけ出します。
デシジョン フォレストについて
このデシジョン フォレスト アルゴリズムは、分類タスクを対象としたアンサンブル学習手法です。 アンサンブル法は、1 つのモデルを利用するのではなく、複数の関連するモデルを作成し、それらをなんらかの方法で組み合わせた方が、より良い結果と、より一般化したモデルが得られるという一般原則に基づきます。 一般に、アンサンブル モデルは、単一のデシジョン ツリーと比べ、カバレッジと正確性が優れています。
個別のモデルを作成して 1 つのアンサンブルにまとめる方法は多数存在します。 この特定のデシジョン フォレストの実装は、複数のデシジョン ツリーを構築したうえで、最良の出力クラスに投票することで機能します。 投票は、アンサンブル モデルで結果を生成するための方法の 1 つとしてよく知られています。
- 開始点を差別化 (通常はランダム化) しながらデータセット全体を使用して個々の分類ツリーが多数作成されます。 データまたは特徴のうちのランダム化された部分だけが個々のデシジョン ツリーで使用されるという点で、これはランダム フォレスト法とは異なります。
- デシジョン フォレスト ツリー内の各ツリーからは、ラベルの頻度ヒストグラムが正規化されていない状態で出力されます。
- これらのヒストグラムをアグリゲーション プロセスで合計し、結果を正規化することで、各ラベルの "確率" が得られます。
- アンサンブルの最終決定では、予測信頼性の高いツリーに、より大きい重みが与えられます。
一般に、デシジョン ツリーには、分類タスクに関して多くの利点があります。
- 非線形の決定境界を捕捉できる。
- 計算とメモリ使用量の効率的なため、大量のデータをトレーニングして予測できる。
- トレーニング プロセスと分類プロセスに特徴選択が統合されている。
- ツリーは、ノイズの多いデータや多くの機能に対応できます。
- ノンパラメトリック モデルであるため、さまざまな分布のデータを扱うことができる。
ただし単純なデシジョン ツリーではデータのオーバーフィットが生じることがあり、ツリー アンサンブルに比べ汎化性能が低くなります。
詳細については、「デシジョン フォレスト 」、または「技術ノート」セクションに記載されているその他 の論文を参照 してください。
Two-Class Decision Forest を構成する方法
Machine Learning Studio (クラシック) の実験に 2 クラス デシジョン フォレスト モジュールを追加し、モジュールの [プロパティ] ウィンドウを開きます。
このモジュールは、 [Machine Learning]\(機械学習\) にあります。 [初期化] 、 [分類] の順に展開します。
[Resampling method]\(再サンプリング方法\) で、個々のツリーの作成に使用される方法を選択します。 [Bagging]\(バギング\) または [レプリケート] から選択できます。
[Bagging]\(バギング\) : バギングは、"ブートストラップ アグリゲーティング" とも呼ばれます。 この方法では、元のデータセットを置換しながら、元のサイズになるまでランダムにサンプリングすることによって作成された新しいサンプルに基づいて、各ツリーが作成されます。
モデルの出力は "投票" (アグリゲーションの一形態) によって結合されます。 分類決定フォレスト内の各ツリーは、ラベルの正規化されていない頻度ヒストグラムを出力します。 集計は、これらのヒストグラムを合計し、各ラベルの "確率" を取得するために正規化します。 こうして、アンサンブルの最終決定で、予測信頼性の高いツリーに、より大きい重みが与えられます。
詳細については、Wikipedia でブートストラップ アグリゲーティングに関する項目を参照してください。
[レプリケート] : レプリケーションでは、各ツリーがまったく同じ入力データでトレーニングされます。 それぞれのツリー ノードでどの分割述語が使用されるかの決定はランダムなままであり、ツリーは多様になります。
[レプリケート] オプションを使用したトレーニング プロセスの詳細 については 、「テクニカル ノート」セクションに記載されている論文 を参照 してください。
[Create trainer mode](トレーナー モードの作成) オプションを設定して、モデルのトレーニング方法を指定します。
アンサンブルに作成できるデシジョン ツリーの最大数を [Number of decision trees]\(デシジョン ツリーの数\) に入力します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなります。
注意
トレーニング済みのモデルを可視化したときに表示されるツリーの数も、この値によって制御されます。 ツリーを 1 つだけ表示または出力したい場合は、この値を「1」に設定できます。 ただし、生成できるツリーは 1 つ (最初の一連のパラメーターを備えたツリー) だけであり、それ以上のイテレーションは実行されません。
[Maximum depth of the decision trees]\(デシジョン ツリーの最大深度\) には、デシジョン ツリーの最大深度を制限する数値を入力します。 ツリーの深度を増やすと、精度が向上する可能性があるものの、オーバーフィットが発生しやすくなり、トレーニング時間が長くなるおそれがあります。
[Number of random splits per node]\(ノードごとのランダム分割数\) には、ツリーの各ノードを構築するときに使用する分割数を入力します。 "分割" とは、ツリー (ノード) の各レベルの特徴がランダムに分割されることを意味します。
[Minimum number of samples per leaf node]\(リーフ ノードごとの最小サンプル数\) には、ツリーの終端ノード (リーフ) を作成するうえで必要な最小ケース数を指定します。
この値を増やすと、新しいルールを作成するためのしきい値が大きくなります。 たとえば、既定値の 1 では、ケースが 1 つであっても新しいルールを作成できます。 この値を 5 に増やした場合、同じ条件を満たすケースがトレーニング データに少なくとも 5 つ含まれている必要があります。
トレーニングまたは検証セットにおける不明な値のグループを作成するには、[Allow unknown values for categorical features]\(カテゴリの特徴に不明な値を許可する\) オプションを選択します。 既知の値に対してはモデルの精度が低くなる可能性がある一方、新しい (不明な) 値に対しては予測精度が向上する可能性があります。
このオプションをオフにした場合、モデルに与えることができる値は、トレーニング データに含まれているものに限定されます。
ラベル付けされたデータセットと、いずれかのトレーニング モジュールをアタッチします。
[Create trainer mode]\(トレーナー モードの作成\) を [Single Parameter]\(単一パラメーター\) に設定した場合は、モデルのトレーニング モジュールを使用します。
[トレーナー モードの作成] を [パラメーター範囲] に設定した場合は、モデルハイパーパラメーターの調整を使用します。
注意
モデルのトレーニングにパラメーター範囲を渡 す場合は、パラメーター範囲リストの最初の値だけが使用されます。
[Tune Model Hyperparameters]\(モデルのハイパーパラメーターの調整\) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。
[パラメーター 範囲] オプション を選択し、任意のパラメーターに 1 つの値を入力した場合、他のパラメーターが値の範囲にわたって変更された場合でも、その 1 つの値がスイープ全体で使用されます。
結果
トレーニングの完了後:
各イテレーションで作成されたツリーを表示するには、モデルのトレーニング モジュールを右クリックし、[トレーニング済みモデル] を選択して視覚化します。 [モデルの ハイパーパラメーターの調整] を使用する場合は、モジュールを右クリックし、[トレーニング済みの最適なモデル] を選択 して最適な モデルを視覚化します。
それぞれのツリーをクリックして分割にドリルダウンすると、各ノードのルールが表示されます。
モデルのスナップショットを保存するために、[Trained Model]\(トレーニング済みのモデル\) 出力を右クリックし、[Save Model]\(モデルの保存\) を選択します。 実験を連続で実行しても、保存済みのモデルは更新されません。
このモデルをスコアリングに使用するには、モデルのスコア付けモジュールを実験に追加します。
例
機械学習での意思決定フォレストの使用例については、次のページの サンプル実験をAzure AI Gallery。
ニュースの分類: 多クラス分類子を、2 クラスの意思決定フォレスト アルゴリズムを使用して構築されたモデルと、複数クラスの分類子を比較One-vs-All Multiclass。
予測メンテナンス: 2 クラスの意思決定フォレスト アルゴリズムを使用して、特定の時間枠内に資産が失敗した場合に予測する拡張チュートリアル。
テクニカル ノート
このセクションには、実装に関するその他の詳細、調査、よく寄せられる質問が含まれている。
使用上のヒント
データが限られている場合、またはモデルのトレーニングに費やされた時間を最小限に抑える場合は、次の設定を試してください。
制限付きトレーニング セット
トレーニング セットに限られた数のインスタンスが含まれている場合は次のようにします。
- 多数 (たとえば、20 を超える) のデシジョン ツリーを使用してデシジョン フォレストを作成する。
- バギング オプションを使用して再サンプリングする。
- ノードごとのランダム分割に、(たとえば 1,000 を超える) より大きい数を指定する。
トレーニング時間の制限
トレーニング セットに多数のインスタンスが含まれており、トレーニング時間が制限されている場合は次のようにします。
- より少数 (たとえば、5 ~ 10) のデシジョン ツリーを使用してデシジョン フォレストを作成する。
- レプリケート オプションを使用して再サンプリングする。
- (たとえば 100 未満の) 少数のランダム分割をノードごとに指定する。
実装の詳細
Microsoft Research のこの記事では、意思決定ツリーを使用するアンサンブルメソッドに関する有用な情報を提供します。 切り株からツリーからフォレストへ。
[レプリケート] オプションを使用したトレーニング プロセスの詳細については、「 Decision Forests for Computer Vision および Medical Image Analysis」を参照してください。C、C、 J. Shotton。Springer 2013。
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
再サンプリング方法 | Any | ResamplingMethod | バギング | 再サンプリング方法を選択します |
デシジョン ツリーの数 | >=1 | Integer | 8 | アンサンブル内に作成するデシジョン ツリーの数を指定します |
デシジョン ツリーの最大深度 | >=1 | Integer | 32 | 作成できるデシジョン ツリーの最大深度を指定します |
ノードごとのランダム分割の数 | >=1 | Integer | 128 | ノードごとに生成される分割の数を指定します (最適な分割が選択されます) |
リーフ ノードごとのサンプルの最小数 | >=1 | Integer | 1 | リーフ ノードの生成に必要なトレーニング サンプルの最小数を指定します |
カテゴリ型の特徴の不明な値を許可する | Any | Boolean | True | 既存のカテゴリ型の特徴の不明な値を新しい追加の特徴にマップできるかどうかを示します |
出力
名前 | 型 | 説明 |
---|---|---|
未トレーニング モデル | ILearner インターフェイス | 未トレーニング二項分類モデル |