多クラス デシジョン フォレスト

デシジョン フォレスト アルゴリズムを使用して多クラス分類モデルを作成します

カテゴリ: Machine Learning/初期化モデル/分類

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の 多クラス Decision forest モジュールを使用して、 デシジョンフォレスト アルゴリズムに基づく機械学習モデルを作成する方法について説明します。 デシジョンフォレストは、タグが付けられたデータから学習すると同時に、一連のデシジョンツリーを非常に短時間で作成するモデルです。

デシジョン フォレストの詳細

デシジョン フォレスト アルゴリズムは、分類のためのアンサンブル学習手法です。 このアルゴリズムは、複数のデシジョン ツリーを構築したうえで、最良の出力クラスに 投票 することで機能します。 投票は集計の一種であり、分類デシジョン フォレスト内の各ツリーからは、ラベルの頻度ヒストグラムが正規化されていない状態で出力されます。 これらのヒストグラムをアグリゲーション プロセスで合計し、結果を正規化することで、各ラベルの "確率" が得られます。 アンサンブルの最終決定では、予測信頼性の高いツリーに、より大きい重みが与えられます。

デシジョン ツリーは、一般的にノンパラメトリック モデルであるため、さまざまな分布のデータをサポートします。 各ツリーで、各クラスに対して一連の単純なテストが実行され、リーフ ノード (デシジョン) に達するまで、ツリー構造のレベルが増加します。

デシジョン ツリーには、次のような多くの利点があります。

  • 非線形の決定境界を表すことができる。
  • トレーニング時と予測時における計算とメモリ使用量の点で効率に優れている。
  • 統合された特徴選択と分類が行われる。
  • ノイズの多い特徴が存在する状況での回復性がある。

Azure Machine Learning Studio (クラシック) のデシジョンフォレスト分類器は、デシジョンツリーの数で構成されます。 一般に、アンサンブル モデルは、単一のデシジョン ツリーと比べ、カバレッジと正確性が優れています。 詳細については、デシジョン ツリーに関するページを参照してください。

多クラス デシジョン フォレストの構成方法

ヒント

最適なパラメーターがわからない場合は、 モデルハイパーパラメーターの調整 モジュールを使用して、複数のモデルのトレーニングとテストを行い、最適なパラメーターを見つけることをお勧めします。

  1. 多クラスデシジョンフォレスト モジュールを、Studio (クラシック) の実験に追加します。 このモジュールは、 [Machine Learning](機械学習)[Initialize](初期化)[分類] にあります。

  2. モジュールをダブルクリックして [Properties](プロパティ) ウィンドウを開きます。

  3. [Resampling method](再サンプリング方法) で、個々のツリーの作成に使用される方法を選択します。 バギングまたはレプリケーションから選択できます。

    • [Bagging](バギング) : バギングは、"ブートストラップ アグリゲーティング" とも呼ばれます。 この方法では、元のデータセットを置換しながら、元のサイズになるまでランダムにサンプリングすることによって作成された新しいサンプルに基づいて、各ツリーが作成されます。 モデルの出力は "投票" (アグリゲーションの一形態) によって結合されます。 詳細については、Wikipedia でブートストラップ アグリゲーティングに関する項目を参照してください。

    • [レプリケート] : レプリケーションでは、各ツリーがまったく同じ入力データでトレーニングされます。 それぞれのツリー ノードで使用される分割述語の決定はランダムなままであるため、ツリーは多様になります。

    ガイダンスについては、「 How To Configure a 多クラスデシジョン Forest Model 」セクションを参照してください。

  4. [Create trainer mode](トレーナー モードの作成) オプションを設定して、モデルのトレーニング方法を指定します。

    • Single Parameter (単一パラメーター) : モデルの構成方法を決めている場合はこのオプションを選択し、特定の値のセットを引数として渡します。

    • パラメーター範囲: 最適なパラメーターがわからず、パラメータースイープを使用する場合は、このオプションを使用します。

  5. [Number of decision trees](デシジョン ツリーの数) :アンサンブルに作成できるデシジョン ツリーの最大数を入力します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなるおそれがあります。

    トレーニング済みのモデルを可視化したときに、結果に表示されるツリーの数もこの値によって制御されます。 単一のツリーを表示または出力する場合は値を 1 に設定できます。ただしその場合、ツリーは 1 つだけ生成され (初期パラメーター セットを持つツリー)、それ以上のイテレーションは実行されません。

  6. [Maximum depth of the decision trees](デシジョン ツリーの最大深度) :デシジョン ツリーの最大深度を制限する数値を入力します。 ツリーの深度を増やすと、精度が向上する可能性があるものの、オーバーフィットが発生しやすくなり、トレーニング時間が長くなるおそれがあります。

  7. [Number of random splits per node](ノードごとのランダム分割数) :ツリーの各ノードを構築するときに使用する分割数を入力します。 "分割" とは、ツリー (ノード) の各レベルの特徴がランダムに分割されることを意味します。

  8. [Minimum number of samples per leaf node](リーフ ノードごとの最小サンプル数) :ツリーの終端ノード (リーフ) を作成するうえで必要なケース数を指定します。 この値を増やすと、新しいルールを作成するためのしきい値が大きくなります。

    たとえば、既定値の 1 では、ケースが 1 つであっても新しいルールを作成できます。 この値を 5 に増やした場合、同じ条件を満たすケースがトレーニング データに少なくとも 5 つ含まれている必要があります。

  9. [カテゴリの機能に不明な値を許可 する]: トレーニングセットまたは検証セットで不明な値のグループを作成するには、このオプションを選択します。 既知の値に対してはモデルの精度が低くなる可能性がある一方、新しい (不明な) 値に対しては予測精度が向上する可能性があります。

    このオプションの選択を解除すると、モデルはトレーニングデータに存在する値のみを受け入れることができます。

  10. ラベル付けされた datset とトレーニングモジュールのいずれかを接続します。

    • [Create trainer mode](トレーナー モードの作成)[Single Parameter](単一パラメーター) に設定した場合は、モデルのトレーニング モジュールを使用します。

    • [ トレーナーモードの作成 ] オプションを [ パラメーター範囲] に設定した場合は、[ モデルハイパーパラメーターの調整 ] モジュールを使用します。 このオプションを使用すると、トレーナーは設定の複数の組み合わせを反復処理し、最適なモデルを生成するパラメーター値を決定できます。

    注意

    パラメーター範囲を [モデルのトレーニング] に渡すと、パラメーター範囲リストの 1 番目の値のみが使用されます。

    [Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) モジュールによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。

    [Parameter Range](パラメーター範囲) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。

  11. 実験を実行します。

結果

トレーニングの完了後:

  • 各反復処理で作成されたツリーを表示するには、[モデルモジュールの トレーニング ] を右クリックし、[トレーニング済みの モデル ] を選択して視覚化します。 チューニングモデルのハイパーパラメーターを使用する場合は、モジュールを右クリックし、[トレーニング済みの 最適なモデル] を選択して最適なモデルを視覚化します。 各ノードのルールを表示するには、各ツリーをクリックして、分割をドリルダウンします。

Machine learning でのデシジョンフォレストの使用方法の例については、 Azure AI Galleryを参照してください。

  • 多クラス分類器の比較のサンプル: いくつかのアルゴリズムを使用し、その長所と短所について説明します。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

実装の詳細

分類の決定フォレスト内の各ツリーは、ラベルの非正規化頻度のヒストグラムを出力します。 アグリゲーションによって、これらのヒストグラムを合計し、正規化することによって各ラベルの "確率" を得ることができます。 このようにして、信頼性の高い信頼性を持つツリーでは、最終的な決定の重みが高くなります。

[ レプリケート ] オプションを使用したトレーニングプロセスの詳細については、次を参照してください。

多クラスデシジョンフォレストモデルを構成する方法

データが少なすぎる、またはトレーニングに時間が限られるようなシナリオに対応するようにモジュールを構成する方法を変更できます。

トレーニング時間の制限

トレーニング セットには多数のインスタンスが含まれているが、モデルのトレーニングに使用できる時間が限定されている場合、次のオプションを試してください。

  • デシジョン ツリーの数を (たとえば、5 ~ 10 に) 減らしてデシジョン フォレストを作成する。
  • レプリケート オプションを使用して再サンプリングする。
  • (たとえば 100 未満の) 少数のランダム分割をノードごとに指定する。

トレーニングセットの制限

トレーニング セットに含まれるインスタンスの数が限定されている場合、これらのオプションを試してください。

  • 多数の (たとえば、20 を超える) デシジョン ツリーを使用するデシジョン フォレストを作成する。
  • バギング オプションを使用して再サンプリングする。
  • ノードごとのランダム分割に、(たとえば 1,000 を超える) より大きい数を指定する。

モジュールのパラメーター

名前 Range Type Default 説明
再サンプリング方法 Any ResamplingMethod バギング 再サンプリング方法を選択する: バギング または Replicate
デシジョン ツリーの数 >=1 Integer 8 アンサンブル内に作成するデシジョン ツリーの数を指定します
デシジョン ツリーの最大深度 >=1 Integer 32 作成できるデシジョン ツリーの最大深度を指定します
ノードごとのランダム分割の数 >=1 Integer 128 ノードごとに生成される分割の数を指定します (最適な分割が選択されます)
リーフ ノードごとのサンプルの最小数 >=1 Integer 1 リーフ ノードの生成に必要なトレーニング サンプルの最小数を指定します
カテゴリ型の特徴の不明な値を許可する Any Boolean True 既存のカテゴリ型の特徴の不明な値を新しい追加の特徴にマップできるかどうかを示します

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス 未トレーニング多クラス分類モデル

関連項目

分類
2クラスデシジョンフォレスト
デシジョンフォレスト回帰
モジュールの一覧 (アルファベット順)