デシジョン フォレスト回帰

デシジョン フォレスト アルゴリズムを使用して回帰モデルを作成します

Category: モデルの初期化-回帰

注意

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

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

モジュールの概要

この記事では、デシジョン フォレスト回帰 モジュールを Azure Machine Learning Studio (クラシック) で使用して、デシジョンツリーのアンサンブル基づく回帰モデルを作成する方法について説明します。

モデルの構成後、ラベル付けされたデータセットとモデルのトレーニング モジュールを使用してそのモデルをトレーニングする必要があります。 その後、トレーニング済みのモデルは、予測に使用できます。 または、未トレーニングのモデルを クロス検証モデル に渡して、ラベル付きデータセットに対するクロス検証を行うこともできます。

回帰タスクでのデシジョンフォレストのしくみ

デシジョン ツリーは、リーフ ノード (決定) に到達するまでバイナリ ツリーのデータ構造を走査しながら、個々の事例について一連の単純なテストを行うノンパラメトリックなモデルです。

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

  • トレーニング時と予測時における計算とメモリ使用量の両方の点で効率に優れている。

  • 非線形の決定境界を表すことができる。

  • 統合された特徴選択と分類が行われ、ノイズの多い特徴が存在する状況での回復性がある。

この回帰モデルは、複数のデシジョン ツリーの集団から成ります。 回帰デシジョン フォレストに含まれる各ツリーからは、予測としてガウス分布が出力されます。 ツリーの集団に対して集計 (アグリゲーション) を行うことによって、モデルに含まれる全ツリーの分布の組み合わせに最も近いガウス分布を見つけ出します。

このアルゴリズムとその実装の理論上のフレームワークの詳細については、「デシジョンフォレスト: 分類、回帰、密度の推定、吸学習、Semi-Supervised 学習用の統合フレームワーク」を参照してください。

デシジョン フォレスト回帰モデルを構成する方法

  1. デシジョン フォレスト回帰 モジュールを実験に追加します。 モジュールは、Studio (クラシック) の [ Machine Learning]、[ モデルの初期化]、[ 回帰] の下にあります。

  2. モジュールのプロパティを開き、 [Resampling method](再サンプリング方法) で、個々のツリーの作成に使用する方法を選択します。 [Bagging](バギング) または [レプリケート] から選択できます。

    • [Bagging](バギング) : バギングは、"ブートストラップ アグリゲーティング" とも呼ばれます。 回帰デシジョン フォレストに含まれる各ツリーからは、予測の手段としてガウス分布が出力されます。 アグリゲーションとは、個々のツリーから返された全ガウス分布の組み合わせによって得られるガウス分布の融合体のモーメントと最初の 2 つのモーメントが一致するガウス分布を見つけ出すことです。

      詳細については、Wikipedia でブートストラップ アグリゲーティングに関する項目を参照してください。

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

      [レプリケート] オプションを使用したトレーニング プロセスの詳細については、次の書籍を参照してください: 『Decision Forests for Computer Vision and Medical Image Analysis』(Criminisi および J. Shotton 共著、Springer 2013)

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

    • [Single Parameter](単一パラメーター)

      モデルの構成方法がわかっている場合、特定の値のセットを引数として渡すことができます。 これらの値は、実験によって得られるか、またはガイダンスとして得られます。

    • パラメーターの範囲

      最適なパラメーターがわからない場合は、複数の値を指定し、パラメータースイープを使用して最適な構成を見つけることで、最適なパラメーターを見つけることができます。

      チューニングモデル Hyperparameters は、指定した設定の可能なすべての組み合わせを反復処理し、最適な結果を生成する設定の組み合わせを決定します。

  4. 集団として作成するデシジョン ツリーの総数を [Number of decision trees](デシジョン ツリーの数) に指定します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなります。

    ヒント

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

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

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

  7. [Minimum number of samples per leaf node](リーフ ノードごとの最小サンプル数) には、ツリーの終端ノード (リーフ) を作成するうえで必要な最小ケース数を指定します。

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

  8. トレーニングまたは検証セットにおける不明な値のグループを作成するには、[Allow unknown values for categorical features](カテゴリの特徴に不明な値を許可する) オプションを選択します。

    これを選択解除した場合、モデルはトレーニング データに含まれる値のみを受け入れることができます。 前者の場合、既知の値に対するモデルの精度は低下するものの、新しい (不明な) 値に対する予測精度は向上する可能性があります。

  9. ラベルが付けられたデータセットを接続し、2つ以上の結果を含まない1つのラベル列を選択し、[ モデルのトレーニング ] または モデルの [チューニング] ハイパーパラメーターを接続します。

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

    • [ トレーナーモードの作成 ] オプションを [ パラメーター範囲] に設定した場合は、 [モデルのチューニング] ハイパーパラメーターを使用してモデルをトレーニングします。

  10. 実験を実行します。

結果

トレーニングの完了後:

  • それぞれのイテレーションで作成されたツリーを表示するには、トレーニング モジュールの出力を右クリックし、[Visualize](可視化) を選択します。

  • 各ノードのルールを表示するには、各ツリーをクリックして、分割をドリルダウンします。

  • Traind モデルのスナップショットを保存するには、トレーニングモジュールの出力を右クリックし、[トレーニング済みの モデルとして保存] を選択します。 実験を連続実行しても、このモデルのコピーは更新されません。

使用例

回帰モデルの例については、 Cortana Intelligence Galleryの次のサンプル実験を参照してください。

テクニカル ノート

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

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

  • パラメーター値の1つのセットを チューニングモデルのハイパーパラメーター モジュールに渡す場合、各パラメーターに設定の範囲が必要になると、値が無視され、学習器の既定値が使用されます。

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

使用上のヒント

データが制限されている場合や、モデルのトレーニング時間を最小限に抑えたい場合は、次の設定を試してください。

トレーニング セットの制限。 トレーニング セットに限られた数のインスタンスが含まれている場合は次のようにします。

  • 多数 (たとえば、20 を超える) のデシジョン ツリーを使用してデシジョン フォレストを作成します

  • バギング オプションを使用して再サンプリングします

  • ノードごとに多数の (たとえば、1,000 を超える) ランダム分割を指定します

トレーニング時間の制限。 トレーニング セットに多数のインスタンスが含まれており、トレーニング時間が制限されている場合は次のようにします。

  • より少数 (たとえば、5 ~ 10) のデシジョン ツリーを使用してデシジョン フォレストを作成します

  • レプリケート オプションを使用して再サンプリングします

  • (たとえば 100 未満の) 少数のランダム分割をノードごとに指定します

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

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

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス 未トレーニング回帰モデル

関連項目

Regression (回帰)

モジュールの一覧 (アルファベット順)