2 クラス ブースト デシジョン ツリー

ブースト デシジョン ツリー アルゴリズムを使用して二項分類器を作成します

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

注意

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

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

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の 2 クラスブーストデシジョンツリー モジュールを使用して、ブーストデシジョンツリーアルゴリズムに基づく機械学習モデルを作成する方法について説明します。

ブースト デシジョン ツリーは、第 2 のツリーで第 1 のツリーの誤差を補正し、第 3 のツリーで第 1 および第 2 のツリーの誤差を補正するといったアンサンブル学習手法です。 予測は、それぞれが予測を行うツリーの集団全体に基づいて行われます。 技術的な詳細については、この記事の「 Research 」セクションを参照してください。

一般に、ブースト デシジョン ツリーは、適切に構成されていれば、多様な機械学習タスクで最良のパフォーマンスが一番簡単に得られる手法です。 ただしメモリの使用量が最も多い学習器の 1 つでもあり、現在の実装では、すべてのデータがメモリに保持されます。 そのため、ブーストデシジョンツリーモデルは、線形学習器が処理できる非常に大規模なデータセットを処理できない可能性があります。

アルゴリズムを選択する方法の詳細については、次のリソースを参照してください。

Two-Class ブーストデシジョンツリーを構成する方法

このモジュールでは、トレーニングされていない分類モデルが作成されます。 分類は教師あり学習手法であるため、モデルをトレーニングするためには、ラベル列のすべての行に値を含んだ "タグ付けされたデータセット" が必要です。

この種類のモデルをトレーニングするには、 モデルのトレーニング または チューニングのハイパーパラメーター モジュールを使用します。

  1. Azure Machine Learning Studio (クラシック) で、 ブーストデシジョンツリー モジュールを実験に追加します。

  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. 学習時のステップ サイズを定義する 0 から 1 までの数値を [Learning rate](学習率) に入力します。

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

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

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

  7. [Random number seed](乱数シード) に、ランダム シード値として使用する値 (負でない整数) を必要に応じて入力します。 シードを指定することによって、同じデータとパラメーターで繰り返し実行したときの再現性が確保されます。

    ランダム シードは、既定では 0 に設定されます。これは、初期シード値がシステム クロックから取得されることを意味します。 ランダム シードを使用して連続実行すると、都度異なる結果を得ることができます。

  8. トレーニングセットと検証セットで不明な値のグループを作成するには、[ 不明なカテゴリレベルを許可 する] オプションを選択します。

    このオプションをオフにした場合、モデルに与えることができる値は、トレーニング データに含まれているものに限定されます。

    不明な値を許可すると、既知の値に対してモデルの精度が低下する可能性がありますが、新しい (不明な) 値に対する予測が向上する可能性があります。

  9. モデルをトレーニングする。

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

    • [Create trainer mode](トレーナー モードの作成)[Parameter Range](パラメーター範囲) に設定した場合は、[Tune Model Hyperparameters](モデルのハイパーパラメーターの調整) を使用して、タグ付けしたデータセットを接続してモデルをトレーニングします。

    注意

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

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

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

結果

トレーニングの完了後:

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

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

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

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

  • ダイレクトマーケティング: 2 クラスブーストデシジョンツリー アルゴリズムを使用して、顧客の欲求を予測します。

  • フライト遅延予測: このサンプルでは、 2 クラスブーストデシジョンツリー アルゴリズムを使用して、フライトが遅れている可能性があるかどうかを判断します。

  • クレジットカードのリスク: このサンプルでは、 2 クラスブーストデシジョンツリー アルゴリズムを使用してリスクを予測します。

テクニカル ノート

ここでは、実装の詳細とよく寄せられる質問について説明します。

使用上のヒント

  • ブーストデシジョンツリーモデルをトレーニングするには、複数のデータインスタンスを提供する必要があります。 データセットに含まれる行が少なすぎる場合、トレーニング処理中にエラーが生成されます。

  • データに欠損値が含まれている場合は、機能のインジケーターを追加する必要があります。

  • 一般に、ブースト デシジョン ツリーは、特徴にある程度の関連性があるときにより良い結果をもたらします。 特徴に大きなエントロピがある (つまり、関連性がない) 場合、両者は相互情報をほとんどまたはまったく共有していないので、ツリー内での順序付けによって予測的な意味が多くなることはありません。 そうでない場合は、ランダムフォレストモデルを試すことができます。

    また、ブーストは、モデルがオーバーフィットになる傾向があるため、特徴よりも多くの例がある場合にも適しています。

  • データセットを正規化しないでください。 特徴の処理は、単純な非パラメーター型、より小さいか、またはそれ以上の比較であるため、正規化または任意の形式の非単調変換関数が影響を及ぼすことはほとんどありません。

  • 特徴はトレーニングの前に離散化およびビン分割されるため、連続する特徴に対しても比較的小さなしきい値候補のセットのみが考慮されます。

実装の詳細

ブーストデシジョンツリーアルゴリズムの詳細については、「 最長一致関数近似: グラデーションブーストマシン」を参照してください。

Azure Machine Learning のブーストデシジョンツリーアルゴリズムでは、次のブーストメソッドが使用されます。

  1. 弱学習器の空のアンサンブルで開始します。

  2. それぞれのトレーニング例について、アンサンブルの現在の出力を取得します これは、ensemble すべての弱い学習器の出力の合計です。

  3. 各例の損失関数のグラデーションを計算します。

    これは、タスクが二項分類の問題であるか、回帰の問題であるかによって異なります。

    • 二項分類モデルでは、ロジスティック回帰と同様に、ログ損失が使用されます。

    • 回帰モデルでは、二乗損失が使用され、勾配は現在の出力からターゲットを引いたものになります。

  4. ターゲット関数として定義されているだけのグラデーションを使用して、 弱い 学習器に適合するように例を使用します。

  5. 学習率で示される強度を持つアンサンブルにこの弱学習器を追加します。必要に応じて、手順 2. に進みます。

    この実装では、弱い学習器は、手順3で計算されたグラデーションに基づく最小二乗回帰ツリーです。 このツリーには、次の制限が適用されます。

    • リーフの最大数までトレーニングされます。

    • オーバーフィットを回避するために、それぞれのリーフには最小数の例があります。

    • それぞれのデシジョン ノードは、何かのしきい値と比較される単一の特徴です。 特徴がしきい値以下の場合は、一方の下位パスに進みます。特徴がしきい値を超える場合は、もう一方の下位パスに移動します。

    • それぞれのリーフ ノードは定数値です。

  6. ツリー構築アルゴリズム最長一致は、手順 3. で計算されたグラデーションに関して、分割によって四角形の損失を最小限に抑える特徴としきい値を選択します。 分割の選択には、リーフごとのトレーニング例の最小数が適用されます。

    アルゴリズムは、リーフの最大数に達するか、有効な分割が使用できなくなるまで繰り返し分割されます。

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

名前 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 インターフェイス 未トレーニング二項分類モデル

関連項目

分類
ブーストデシジョンツリー回帰
モジュールの一覧 (アルファベット順)