高速フォレスト分位点回帰

分位点回帰モデルを作成します

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

注意

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

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

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の Fast Forest 分位点回帰 モジュールを使用して、指定された数の分位点の値を予測できる回帰モデルを作成する方法について説明します。

分位点回帰は、1 つの平均予測値を取得するのではなく、予測された値の分布をより詳細に把握する場合に便利です。 この手法には、次のような多くの用途があります。

  • 価格の予測

  • 学生の成績の予測または子供の発達を評価するための成長グラフの適用

  • 変数間に弱い関係だけが存在する場合の予測的関係の発見

この回帰アルゴリズムは、教師あり 学習手法であるため、ラベル列を含むタグ付けされたデータセットが必要となります。 回帰アルゴリズムであるため、ラベル列には数値のみを含める必要があります。

分位点回帰の詳細

回帰にはさまざまな種類があります。 回帰は、最も基本的な意味として、数値ベクトルで表された対象にモデルを合わせることを指します。 しかし、より高度な回帰の手法の開発が統計学者によって進められています。

分位点 の最も簡単な定義は、一連のデータを同じサイズのグループに分割する値であるため、分位点値はグループ間の境界をマークします。 統計的に述べると、分位点は、ランダム変数の累積分布関数 (CDF) の逆数から一定の間隔で取得した値です。

線形回帰モデルでは、1 つの推量を使用して数値変数の値 (平均) を予測しようとしますが、ターゲット変数の範囲分布または全体分布を予測することが必要になる場合があります。 そのために、ベイズ回帰や分位点回帰などの手法が開発されました。

分位点回帰は、予測値の分布を理解するのに役立ちます。 このモジュールで使用されているものを含め、ツリー ベースの分位点回帰モデルは、ノンパラメトリック分布を予測するために使用できるという追加の利点もあります。

その他の実装の詳細とリソースについては、「テクニカル ノート」セクションを参照してください。

Fast_Forest 分位点回帰の構成方法

このモジュールを使用して回帰モデルのプロパティを構成し、 トレーニングモジュールのいずれかを使用してトレーニングします。

構成手順は、固定されたパラメーターセットを提供するか、パラメータースイープを設定するかにおいて、大幅に異なります。

固定パラメーターを使用して分位点回帰モデルを作成する

モデルを構成する方法がわかっている場合は、特定の値のセットを引数として指定できます。 モデルをトレーニングする場合は、トレーニング モデルを使用します。

  1. Studio (クラシック) で、 Fast Forest 分位点回帰 モジュールを実験に追加します。

  2. [ トレーナーモードの作成 ] オプションを [ 単一パラメーター] に設定します。

  3. [ Number Of tree] \ (ツリー数 ) には、作成可能なツリーの最大数を入力します。 より多くのツリーを作成すると、一般的に精度は向上しますが、トレーニング時間が長くなります。

  4. [ リーフの数] には、任意のツリーに作成できるリーフの最大数 (ターミナルノード) を入力します。

  5. リーフを形成するために必要なトレーニングインスタンスの最小数 については、ツリー内の任意のターミナルノード (リーフ) を作成するために必要な最小の例を指定します。

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

  6. バギングの分数 には、分位点の各グループを構築するときに使用するサンプルの割合を表す 0 ~ 1 の数値を指定します。 サンプルは、復元ありでランダムに選択されます。

  7. [ 機能の分数] には、特定のツリーを構築するときに使用する合計機能の割合を示す 0 ~ 1 の範囲の数値を入力します。 特徴は、常に、ランダムに選択されます。

  8. [ 分割分数] には、ツリーの各分割で使用する特徴の割合を表す 0 ~ 1 の範囲の数値を入力します。 使用される特徴は、常にランダムに選択されます。

  9. 分位点のサンプル数 については、分位点を推定するときに評価するケースの数を入力します。

  10. 分位点を推定 するには、モデルでトレーニングを行い、予測を作成する分位点のコンマ区切りリストを入力します。

    たとえば、分位点を推定するモデルを構築する場合は、「0.25, 0.5, 0.75」と入力します。

  11. 必要に応じて、 [乱数シード] には、モデルによって使用される乱数ジェネレーターにシードを設定する値を入力できます。 既定値は 0、つまりランダム シードが選択されます。

    同じデータで連続して実行された結果を再現する必要がある場合に、値を指定する必要があります。

  12. [ 不明なカテゴリレベルを許可 する] オプションを選択して、不明な値のグループを作成します。

    これを選択解除した場合、モデルはトレーニング データに含まれる値のみを受け入れることができます。

    このオプションを選択した場合、既知の値に対してモデルの精度が低下する可能性がありますが、新しい (不明な) 値に対する予測が向上します。

  13. トレーニングデータセットを接続し、1つのラベル列を選択して、 モデルのトレーニングを行います。

  14. 実験を実行します。

パラメータースイープを使用して分位点回帰モデルを作成する

モデルに最適なパラメーターがわからない場合は、パラメータースイープを構成し、値の範囲を引数として指定できます。 モデルをトレーニングするときは、 モデルハイパーパラメーターの調整 モジュールを使用します。

  1. Studio (クラシック) で、 Fast Forest 分位点回帰 モジュールを実験に追加します。

  2. [Create trainer mode](トレーナー モードの作成) オプションを [Parameter Range](パラメーター範囲) に設定します。

    最適なパラメーターがわからない場合は、パラメータースイープを使用することをお勧めします。 複数の値を指定し、 チューニングモデルハイパーパラメーター モジュールを使用してモデルをトレーニングすることにより、データに最適なパラメーターセットを見つけることができます。

    パラメータースイープを選択した後、チューニング可能な各プロパティに対して、単一の値または複数の値を設定できます。 たとえば、ツリーの数を修正することもできますが、各ツリーの構築方法を制御する他の値はランダムに変更されます。

    • 1つの値を入力した場合、その値は、他の値が変更された場合でも、スイープのすべての反復処理で使用されます。

    • 使用する不連続値のコンマ区切りリストを入力します。 これらの値は、他のプロパティと組み合わせて使用されます。

    • 範囲ビルダー を使用して連続値の範囲を定義します。

    トレーニングプロセス中、 チューニングモデルのハイパーパラメーター モジュールは、値のさまざまな組み合わせに対して反復処理を行い、最適なモデルを構築します。

  3. [ ツリーごとのリーフの最大数] には、各ツリーで許可するリーフまたはターミナルノードの合計数を入力します。

  4. 構築された ツリーの数 については、ensemble 構築するときに実行するイテレーションの数を入力します。 より多くのツリーを作成することにより、トレーニング時間の増加により、カバレッジが向上する可能性があります。

  5. リーフノードごとのサンプルの最小数 については、リーフノードの作成に必要なケースの数を示します。

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

  6. [ バギングの範囲] で、分位点の各グループを作成するときに使用するサンプルの割合を入力します。 サンプルは、復元ありでランダムに選択されます。

    各分数は、0から1までの数値にする必要があります。 複数の分数を区切るには、コンマを使用します。

  7. [ 機能の割合の範囲] で、分位点の各グループを構築するときに使用する総機能の割合を入力します。 機能はランダムに選択されます。

    各分数には0から1までの数値を指定する必要があります。複数の分数はコンマで区切ります。

  8. [ 分割の範囲] で、分位点の各グループで使用するいくつかの特徴を指定します。 実際に使用される機能はランダムに選択されます。

    各分数には0から1までの数値を指定する必要があります。複数の分数はコンマで区切ります。

  9. 分位点の推定に使用されるサンプル数 で、分位点を推定するときに評価されるサンプルの数を示します。 使用可能なサンプル数より大きい数値を入力すると、すべてのサンプルが使用されます。

  10. [ 必須の分位点値] に、モデルをトレーニングする分位点のコンマ区切りの一覧を入力します。 たとえば、quartiles を推定するモデルを構築する場合は、「0.25, 0.5, 0.75」と入力します。

  11. [ 乱数シード] に、モデルで使用される乱数ジェネレーターをシード処理する値を入力します。 シードの使用は、重複の実行を再現するのに便利です。

    既定値は 0、つまりランダム シードが選択されます。

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

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

    このオプションを選択した場合、既知の値に対してモデルの精度が低下する可能性がありますが、新しい (不明な) 値に対する予測が向上します。

  13. トレーニングデータセットに接続し、[ラベル] 列を選択して、" モデルのチューニング" ハイパーパラメーター モジュールを接続します。

    注意

    トレーニングモデルは使用しないでください。 パラメーター範囲を構成し、 トレーニングモデルを使用してトレーニングする場合、パラメーター範囲リストの最初の値のみが使用されます。

  14. 実験を実行します。

結果

トレーニングの完了後:

このモジュールの使用方法の例については、 Azure AI Galleryを参照してください。

  • 分位点回帰: 自動価格データセットを使用して、分位点回帰モデルを構築し、解釈する方法を示します。

テクニカルノート

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

実装の詳細

Azure Machine Learning の 高速フォレスト分位点回帰 モジュールは、デシジョン ツリーを使用した、ランダム フォレストの分位点回帰の実装です。 ランダム フォレストは、デシジョン ツリーで発生する可能性のある過剰適合を回避するのに便利です。 デシジョン ツリーはバイナリ ツリーのようなフロー チャートです。すべて内部のノードで、入力されたいずれかの特徴の値に基づいて、2 つの子ノードのうちでいずれを継続するかを決定します。

各リーフ ノードでは、値が返されます。 内部ノードでは、テスト ' ' x ≤ v ' に基づいて決定されます。ここで、x は入力サンプルの機能の値で、v はこの機能の有効な値の1つです。 回帰ツリーによって生成することができる関数はすべて区分的定数関数です。

ランダムフォレストでは、バギングを使用して、トレーニングデータのランダムなサンプルと特徴のサブセットを選択し、データの各サブセットに対してデシジョンツリーを適合させることによって、ツリーのアンサンブル作成されます。 すべてのツリーの出力を平均するランダム フォレスト アルゴリズムとは異なり、高速フォレスト分位点回帰 は、分位点のサンプル数 パラメーターで指定されたツリー内の予測されたすべてのラベルを格納し、分布を出力するため、ユーザーは特定のインスタンスの分位点値を表示できます。

分位点回帰の詳細については、次の書籍と記事を参照してください。

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

名前 Type Range 省略可能 説明 Default
トレーナー モードの作成 CreateLearnerMode List: 1 つのパラメーター|パラメーター範囲 必須 単一パラメーター 高度な学習器オプションの作成
ツリー数 Integer mode:Single Parameter 100 構築するツリーの数を指定します
リーフ数 Integer mode:Single Parameter 20 ツリーあたりの最大リーフ数を指定します。 既定値は 20 です
リーフを形成するために必要なトレーニング インスタンスの最小数 Integer mode:Single Parameter 10 リーフの形成に必要なトレーニング インスタンスの最小数を示します
バギングの割合 Float mode:Single Parameter 0.7 ツリーごとに使用するトレーニング データの割合を指定します
特徴の割合 Float mode:Single Parameter 0.7 ツリーごとに使用する機能 (ランダムに選択) の割合を指定します
分割の割合 Float mode:Single Parameter 0.7 分割ごとに使用する機能 (ランダムに選択) の割合を指定します
分位点サンプル数 Integer 最大: 2147483647 mode:Single Parameter 100 各ノードで使用されるインスタンスの数を指定して、分位点を推定します
推定される分位点 String mode:Single Parameter "0.25; 0.5; 0.75" 推定する分位点を指定します
乱数シード Integer オプション モデルで使用される乱数ジェネレーターのシードを指定します。 既定の場合は空白のままにします。
不明なカテゴリ レベルの許可 Boolean 必須 true True の場合、各カテゴリ列に対して追加レベルが作成されます。 トレーニング データセットでは使用できないテスト データセットのレベルは、この追加のレベルにマップされます。
ツリーあたりの最大リーフ数 ParameterRangeSettings [16; 128] mode:Parameter Range まで32;64 ツリーごとに許可される最大リーフ数の範囲を指定します
構築されたツリー数 ParameterRangeSettings [1; 256] mode:Parameter Range まで32;64 トレーニング中に作成できる最大ツリー数の範囲を指定します
リーフ ノードごとのサンプルの最小数 ParameterRangeSettings [1;10] mode:Parameter Range 15/5種類 リーフの形成に必要な最小ケース数の範囲を指定します
バギングの割合の範囲 ParameterRangeSettings [0.25; 1.0] mode:Parameter Range 0.25;0.5;0.75 ツリーごとに使用するトレーニング データの割合の範囲を指定します
機能の割合の範囲 ParameterRangeSettings [0.25; 1.0] mode:Parameter Range 0.25;0.5;0.75 ツリーごとに使用する機能 (ランダムに選択) の割合の範囲を指定します
分割の割合の範囲 ParameterRangeSettings [0.25; 1.0] mode:Parameter Range 0.25;0.5;0.75 分割ごとに使用する機能 (ランダムに選択) の割合の範囲を指定します
分位点の推定に使用されるサンプル数 Integer mode:Parameter Range 100 分位点の推定に使用されるサンプル数
必要な分位点値 String mode:Parameter Range "0.25; 0.5; 0.75" パラメーター スイープ中に使用される必須分位点値

出力

名前 Type 説明
未トレーニング モデル ILearner インターフェイス 汎用モデルのトレーニング、またはクロス検証モデル モジュールに接続できる未トレーニング分位点回帰モデル。

関連項目

Regression (回帰)