2 クラス デシジョン フォレスト コンポーネント
この記事では Azure Machine Learning デザイナーのコンポーネントについて説明します。
デシジョン フォレスト アルゴリズムに基づいて機械学習モデルを作成するには、このコンポーネントを使用します。
デシジョン フォレストは、高速な教師ありアンサンブル モデルです。 最大 2 つの結果を伴うターゲットを予測したい場合、このコンポーネントが適しています。
デシジョン フォレストについて
このデシジョン フォレスト アルゴリズムは、分類タスクを対象としたアンサンブル学習手法です。 アンサンブル法は、1 つのモデルを利用するのではなく、複数の関連するモデルを作成し、それらをなんらかの方法で組み合わせた方が、より良い結果と、より一般化したモデルが得られるという一般原則に基づきます。 一般に、アンサンブル モデルは、単一のデシジョン ツリーと比べ、カバレッジと正確性が優れています。
個別のモデルを作成して 1 つのアンサンブルにまとめる方法は多数存在します。 この特定のデシジョン フォレストの実装は、複数のデシジョン ツリーを構築したうえで、最良の出力クラスに投票することで機能します。 投票は、アンサンブル モデルで結果を生成するための方法の 1 つとしてよく知られています。
- 開始点を差別化 (通常はランダム化) しながらデータセット全体を使用して個々の分類ツリーが多数作成されます。 データまたは特徴のうちのランダム化された部分だけが個々のデシジョン ツリーで使用されるという点で、これはランダム フォレスト法とは異なります。
- デシジョン フォレスト ツリー内の各ツリーからは、ラベルの頻度ヒストグラムが正規化されていない状態で出力されます。
- これらのヒストグラムをアグリゲーション プロセスで合計し、結果を正規化することで、各ラベルの "確率" が得られます。
- アンサンブルの最終決定では、予測信頼性の高いツリーに、より大きい重みが与えられます。
一般に、デシジョン ツリーには、分類タスクに関して多くの利点があります。
- 非線形の決定境界を捕捉できる。
- 計算とメモリ使用量の効率的なため、大量のデータをトレーニングして予測できる。
- トレーニング プロセスと分類プロセスに特徴選択が統合されている。
- ツリーは、ノイズの多いデータや多数の特徴に対応できる。
- ノンパラメトリック モデルであるため、さまざまな分布のデータを扱うことができる。
ただし単純なデシジョン ツリーではデータのオーバーフィットが生じることがあり、ツリー アンサンブルに比べ汎化性能が低くなります。
詳細については、「Decision Forests (デシジョン フォレスト)」を参照してください。
構成方法
Azure Machine Learning で 2 クラス デシジョン フォレスト コンポーネントをパイプラインに追加し、そのコンポーネントの [プロパティ] ウィンドウを開きます。
このコンポーネントは、 [Machine Learning]\(機械学習\) にあります。 [初期化] 、 [分類] の順に展開します。
[Resampling method]\(再サンプリング方法\) で、個々のツリーの作成に使用される方法を選択します。 [Bagging]\(バギング\) または [レプリケート] から選択できます。
[Bagging]\(バギング\) : バギングは、"ブートストラップ アグリゲーティング" とも呼ばれます。 この方法では、元のデータセットを置換しながら、元のサイズになるまでランダムにサンプリングすることによって作成された新しいサンプルに基づいて、各ツリーが作成されます。
モデルの出力は "投票" (アグリゲーションの一形態) によって結合されます。 分類デシジョン フォレスト内の各ツリーからは、ラベルの頻度ヒストグラムが正規化されていない状態で出力されます。 アグリゲーションによって、これらのヒストグラムを合計し、正規化することによって各ラベルの確率を得ることができます。 こうして、アンサンブルの最終決定で、予測信頼性の高いツリーに、より大きい重みが与えられます。
詳細については、Wikipedia でブートストラップ アグリゲーティングに関する項目を参照してください。
[レプリケート] : レプリケーションでは、各ツリーがまったく同じ入力データでトレーニングされます。 それぞれのツリー ノードでどの分割述語が使用されるかの決定はランダムなままであり、ツリーは多様になります。
[Create trainer mode]\(トレーナー モードの作成\) オプションを設定して、モデルのトレーニング方法を指定します。
Single Parameter (単一パラメーター) : モデルの構成方法がわかっている場合、特定の値のセットを引数として渡すことができます。
[Parameter Range](パラメーター範囲) 最適なパラメーターがわからない場合は、モデルのハイパーパラメーターの調整コンポーネントを使用することにより、最適なパラメーターを見つけることができます。 ある値の範囲を指定すると、トレーナーが設定の複数の組み合わせに対して反復処理を行い、最適な結果を生み出す値の組み合わせを決定します。
アンサンブルに作成できるデシジョン ツリーの最大数を [Number of decision trees]\(デシジョン ツリーの数\) に入力します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなります。
注意
値を 1 に設定したとします。 ただし、生成できるツリーは 1 つ (最初の一連のパラメーターを備えたツリー) だけであり、それ以上のイテレーションは実行されません。
[Maximum depth of the decision trees]\(デシジョン ツリーの最大深度\) には、デシジョン ツリーの最大深度を制限する数値を入力します。 ツリーの深度を増やすと、精度が向上する可能性があるものの、オーバーフィットが発生しやすくなり、トレーニング時間が長くなるおそれがあります。
[Minimum number of samples per leaf node]\(リーフ ノードごとの最小サンプル数\) には、ツリーの終端ノード (リーフ) を作成するうえで必要な最小ケース数を指定します。
この値を増やすと、新しいルールを作成するためのしきい値が大きくなります。 たとえば、既定値の 1 では、ケースが 1 つであっても新しいルールを作成できます。 この値を 5 に増やした場合、同じ条件を満たすケースがトレーニング データに少なくとも 5 つ含まれている必要があります。
トレーニングまたは検証セットにおける不明な値のグループを作成するには、[Allow unknown values for categorical features]\(カテゴリの特徴に不明な値を許可する\) オプションを選択します。 既知の値に対してはモデルの精度が低くなる可能性がある一方、新しい (不明な) 値に対しては予測精度が向上する可能性があります。
このオプションをオフにした場合、モデルに与えることができる値は、トレーニング データに含まれているものに限定されます。
ラベルが付けられたデータセットを接続し、モデルをトレーニングします。
[Create trainer mode]\(トレーナー モードの作成\) を [Single Parameter]\(単一パラメーター\) に設定した場合は、タグ付けされたデータセットとモデルのトレーニング コンポーネントを接続します。
[Create trainer mode](トレーナー モードの作成) を [Parameter Range](パラメーター範囲) に設定した場合は、[Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) を使用して、タグ付けしたデータセットを接続してモデルをトレーニングします。
Note
パラメーター範囲を [モデルのトレーニング] に渡すと、単一のパラメーター リストの既定値のみが使用されます。
[モデルのハイパーパラメーターの調整] コンポーネントによって、パラメーターごとに設定の範囲が求められているとき、それに単一のパラメーター値セットを渡した場合、それらの値は無視され、学習器の既定値が使用されます。
[Parameter Range]\(パラメーター範囲\) オプションを選択し、任意のパラメーターに単一の値を入力した場合、指定した単一の値はスイープ全体で使用されます。これは、他のパラメーターが値の範囲の中で変化する場合でも同様です。
結果
トレーニングの完了後:
トレーニングされたモデルのスナップショットを保存するには、 [モデルのトレーニング] コンポーネントの右側のパネルにある [出力] タブを選択します。 [データセットの登録] アイコンを選んで、再利用可能なコンポーネントとしてモデルを保存します。
このモデルをスコアリングに使用するには、モデルのスコア付けコンポーネントをパイプラインに追加します。
次の手順
Azure Machine Learning で使用できる一連のコンポーネントを参照してください。