増幅デシジョン ツリーの回帰

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

Category: Machine Learning/初期化モデル/回帰

注意

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

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

モジュールの概要

この記事では Azure Machine Learning Studio (クラシック) で ブーストデシジョンツリー回帰 モジュールを使用して、ブーストを使用して回帰ツリーのアンサンブル作成する方法について説明します。 ブースティング は、各ツリーが前のツリーに依存していることを意味します。 このアルゴリズムは、それに先行するツリーの残差をフィッティングにより学習します。 したがって、デシジョン ツリー アンサンブルのブースティングは、適用範囲が狭いという小さなリスクがありますが、精度を上げる傾向があります。

この回帰メソッドは教師あり学習メソッドであり、そのため、ラベル付きのデータセット を必要とします。 ラベル列には数値を含める必要があります。

注意

このモジュールは、数値変数を使用するデータセット以外では使用しません。

モデルを定義したら、モデルの トレーニング または チューニングのハイパーパラメーター モジュールを使用してトレーニングします。

ヒント

作成されたツリーについてもっと知りたいですか? モデルのトレーニングが完了したら、[ モデルのトレーニング ] モジュール (または [ モデルハイパーパラメーターのチューニング ] モジュール) の出力を右クリックし、[ 視覚化 ] を選択して、各イテレーションで作成されたツリーを表示します。 それぞれのツリーの分割にドリルダウンすると、各ノードのルールが表示されます。

ブースト回帰ツリーの詳細

ブースティングは、バギングやランダム フォレストなどと共に、アンサンブル モデルを作成するための基本的手法の 1 つです。 Azure Machine Learning Studio (クラシック) では、ブーストデシジョンツリーは、マートの勾配ブーストアルゴリズムの効率的な実装を使用します。 勾配ブースティングは、回帰問題のための機械学習手法です。 事前定義された損失関数を使用して各段階のエラーを計測し、次の段階でそれを修正するという方法で各回帰ツリーを段階的に構築します。 したがって、予測モデルは実際、弱い予測モデルのアンサンブルになります。

回帰の問題では、ブースティングによって一連のツリーが段階的に構築され、任意の微分可能な損失関数を使用して最適なツリーが選択されます。

詳細については、以下の記事を参照してください。

勾配ブースティング手法は、適切な損失関数で減らして回帰にすることで分類の問題にも使用できます。 分類タスクにブースト ツリーを実施する方法については、「Two-Class Boosted Decision Tree」(2 クラス ブースト デシジョン ツリー) を参照してください。

ブースト デシジョン ツリー回帰の構成方法

  1. ブースト デシジョン ツリー モジュールを実験に追加します。 このモジュールは、 [Machine Learning](機械学習)[Initialize](初期化) の順に進み [Regression](回帰) カテゴリにあります。

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

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

    • [Parameter Range](パラメーター範囲) : 最適なパラメーターがわからず、パラメーター スイープを実行する場合は、このオプションを選択します。 反復する値の範囲を選択します。モデルのハイパーパラメーターの調整では、指定した設定の可能なすべての組み合わせに対して反復処理を行い、最適な結果を生成するハイパーパラメーターを決定します。

  3. [Maximum number of leaves per tree](ツリーあたりの最大リーフ数) :ツリーに作成できる終端ノード (リーフ) の最大数を指定します。

    この値を増やすと、ツリーのサイズが大きくなって精度が上がる反面、オーバーフィットが発生したり、トレーニング時間が長くなったりするおそれがあります。

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

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

  5. [Learning rate](学習率) :学習時のステップ サイズを定義する 0 から 1 までの数値を入力します。 学習器がどの程度の速さ (遅さ) で最適解に収束するかは、学習率によって決まります。 ステップ サイズが大きすぎると、最適解から離れていってしまう可能性があります。 ステップ サイズが小さすぎると、トレーニングが最適解に収束するまでの時間が長くなります。

  6. [Number of trees constructed](構築するツリーの数) :アンサンブルに作成するデシジョン ツリーの総数を指定します。 作成するデシジョン ツリーを増やすと、カバレッジが向上する可能性はありますが、トレーニング時間が長くなります。

    トレーニング済みのモデルを可視化したときに表示されるツリーの数も、この値によって制御されます。 シングルツリーを表示または印刷するには、値を1に設定します。ただし、これは、1つだけのツリー (最初のパラメーターのセットを持つツリー) が生成され、それ以上イテレーションは実行されないことを意味します。

  7. Random number seed (乱数シード) : 乱数シード値として使用する負以外の任意の整数を入力します。 シードを指定することによって、同じデータとパラメーターで繰り返し実行したときの再現性が確保されます。

    ランダム シードは、既定では 0 に設定されます。これは、初期シード値がシステム クロックから取得されることを意味します。

  8. 不明なカテゴリレベルを許可 する: トレーニングセットと検証セットに不明な値のグループを作成するには、このオプションを選択します。 このオプションをオフにした場合、モデルに与えることができる値は、トレーニング データに含まれているものに限定されます。 既知の値に対してはモデルの精度が低くなる可能性がある一方、新しい (不明な) 値に対しては予測精度が向上する可能性があります。

  9. トレーニング データセットと次のいずれかのトレーニング モジュールを追加します。

    注意

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

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

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

  10. 実験を実行します。

結果

トレーニングの完了後:

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

    それぞれのツリーをクリックして分割にドリルダウンすると、各ノードのルールが表示されます。

  • スコアリングにモデルを使用するには、それをモデルのスコア付けに接続し、新しい入力例の値を予測します。

  • トレーニング済みのモデルのスナップショットを保存するために、トレーニング モジュールの [Trained model](トレーニング済みのモデル) 出力を右クリックし、[Save As](名前を付けて保存) を選択します。 保存したトレーニング済みモデルのコピーは実験を連続して実行したとき、更新されません。

機械学習でブーストツリーを使用する方法の例については、 Azure AI Galleryを参照してください。

テクニカル ノート

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

ヒント

一般に、デシジョン ツリーは、特徴にある程度の関連性があるときにより良い結果をもたらします。 特徴のエントロピーが大きい (関連付けられていない) 場合、それらはほとんど相互に情報を共有していません。また、ツリー内での特徴の順序は、予測の重要性にそれほど関係しません。

実装の詳細

ツリーのアンサンブルは、損失関数の勾配に近似する回帰ツリーを各ステップで計算し、それを新しいツリーの損失を最小限に抑える係数を付けて前のツリーに追加することで生成されます。 特定のインスタンスでマートによって生成されるアンサンブル出力は、ツリー出力の合計です。

  • 二項分類問題では、出力は何らかの調整形式を使用して確率に変換されます。

  • 回帰問題では、出力は関数の予測された値です。

  • ランク付けの問題については、インスタンスは ensemble 出力値によって並べ替えられます。

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

名前 Range Type Default 説明
ツリーあたりの最大リーフ数 >=1 Integer 20 ツリーごとのリーフの最大数を指定します
リーフ ノードごとのサンプルの最小数 >=1 Integer 10 リーフ ノードの形成に必要なケースの最小数を指定します
Learning rate (学習率) [double.Epsilon;1.0] Float 0.2 初期の学習率を指定します
構築されたツリーの合計数 >=1 Integer 100 トレーニング中に作成できる最大ツリー数を指定します
乱数シード any Integer モデルで使用される乱数ジェネレーターのシードを指定します。 既定の場合は空白のままにします。
不明なカテゴリ レベルの許可 any Boolean true True の場合、各カテゴリ列に対して追加レベルが作成されます。 トレーニング データセットでは使用できないテスト データセットのレベルは、この追加のレベルにマップされます。

出力

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

関連項目

A-z モジュールリスト
Regression (回帰)