フォレストベースの分類と回帰 (Forest-based Classification and Regression) (GeoAnalytics Desktop)

サマリー

Leo Breiman と Adele Cutler により開発された教師付き機械学習方法であるランダム フォレスト アルゴリズムを転用してモデルを作成し、予測を生成します。 予測は、カテゴリ変数 (分類) と連続変数 (回帰) の両方に対して実行できます。 説明変数は、トレーニング フィーチャの属性テーブル内のフィールドの形態をとることができます。 トレーニング データに基づいてモデルのパフォーマンスを検証するだけでなく、フィーチャ対して予測を行うこともできます。

使用法

  • このツールでは、予測に使用できるモデルを作成するために、何百にも上るツリー (決定木のアンサンブルと呼ばれる) が作成されます。 それぞれの決定木の作成には、元の (トレーニング) データのランダムに生成された部分が使用されます。 ツリーごとに独自の予測が生成され、結果が決定されます。 フォレスト モデルでは、不明なサンプルの結果を予測または分類するために、すべての決定木から得た決定を考慮します。 個々のツリーにはモデルの過剰適合の問題があることが考えられるため、この処理は非常に重要です。予測用にフォレスト内の複数のツリーを組み合わせると、単一のツリーに関連する過剰適合の問題に対処できます。

  • このツールは、2 つの操作モードで使用できます。 [トレーニング] モードを使用すると、さまざまな説明変数およびツール設定を調査しながら、それぞれのモデルのパフォーマンスを評価できます。 適切なモデルが見つかったら、[トレーニングおよび予測] モードを使用できます。

  • [入力トレーニング フィーチャ] として、テーブル、ポイント、ライン、またはポリゴン フィーチャを指定できます。 このツールをマルチパート データに使用することはできません。

  • 予測または説明フィールドに 1 つ以上の NULL 値または空の文字列値を持つフィーチャは、出力から除外されます。 必要に応じて [フィールドの演算 (Calculate Field)] ツールを使用して値を変更できます。

  • ツールは、次のような操作モードに応じて、さまざまな出力を作成します。

    • [トレーニング] は、次の 2 つの出力を作成します。
      • 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。 また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
      • ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。 このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。
    • [トレーニングおよび予測] は、次の 3 つの出力を作成します。
      • 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。 また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
      • 出力予測フィーチャ - 予測結果のレイヤーです。 予測は、トレーニング レイヤーから生成されたモデルを使用して、予測するレイヤーに適用されます ([入力推定フィーチャ] オプションを使用)。
      • ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。 このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。

  • [変数重要度テーブルの作成] パラメーターを使用すると、変数重要度を評価するためのチャートの表示に使用するテーブルを作成できます。 上位 20 の変数重要度の値もメッセージ ウィンドウで通知されます。

  • 説明変数は、フィールドから取得することができ、さまざまな値を含んでいる必要があります。 説明変数がカテゴリの場合は、[カテゴリ] チェックボックスをオンにします (文字列タイプの変数が自動的にオンになります)。 カテゴリ説明変数は 60 の個別値に制限されていますが、カテゴリの数を少なくすると、モデルのパフォーマンスが上がります。 データのサイズによっては、変数に含まれているカテゴリの数が多いと、モデルに大きく影響し、これによって予測結果が意味を持たなくなる可能性が高くなります。

  • 説明変数を照合する場合、[トレーニング フィールド][予測フィールド] 同じタイプである必要があります (たとえば、[トレーニング フィールド] の double フィールドは [予測フィールド] の double フィールドに一致する必要があります)。

  • フォレストベースのモデルは外挿されないため、モデルのトレーニングが実行された値にしか分類も予測もできません。 ターゲットのフィーチャおよび変数の範囲内のトレーニング フィーチャおよび説明変数を使用して、モデルをトレーニングします。 トレーニング フィーチャに含まれていない予測説明変数にカテゴリが存在する場合は、このツールの実行に失敗します。

  • [ツリーの数] パラメーターのデフォルト値は 100 です。 フォレスト モデル内のツリーの数を増やすと、モデル予測の精度は上がりますが、そのモデルでの計算時間が長くなります。

  • トレーニング用の単一のレイヤーおよび予測用の単一のレイヤーがサポートされています。 複数のデータセットを 1 つに結合するには、[多変数グリッドの構築] ツールおよび [多変数グリッドから情報付加] ツールを使用して入力データを生成します。

  • ジオプロセシング ツールは、Spark を活用しています。 解析は、デスクトップ コンピューターで複数のコアを並列に使用して行われます。 解析の実行の詳細については、「GeoAnalytics Desktop ツールの考慮事項」をご参照ください。

  • GeoAnalytics Desktop ツールを実行する際、解析はデスクトップ コンピューターで行われます。 最適なパフォーマンスを得るために、データがデスクトップで利用できる必要があります。 ホスト フィーチャ レイヤーを使用している場合は、ArcGIS GeoAnalytics Server を使用することをお勧めします。 データがローカルではない場合は、ツールの実行時間は長くなります。 ArcGIS GeoAnalytics Server を使用して解析を実行する方法については、GeoAnalytics Tools をご参照ください。

パラメーター

ラベル説明データ タイプ
予測タイプ

このツールの操作モードを指定します。 このツールでは、パフォーマンスの評価、フィーチャの予測、または予測サーフェスの作成の目的にのみモデルのトレーニングを実行できます。

  • トレーニングのみモデルのトレーニングは行われますが、予測は生成されません。 このオプションを使用すると、予測を生成する前に、モデルの精度を評価できます。 このオプションを使用すると、モデル診断がメッセージ ウィンドウに出力され、変数重要度のチャートが表示されます。 これがデフォルトです。
  • トレーニングおよび予測フィーチャに関する予測または分類が生成されます。 トレーニング フィーチャと予測対象フィーチャの両方に説明変数を指定する必要があります。 このオプションの出力内容は、フィーチャクラス、メッセージ ウィンドウでのモデル診断、変数重要度の任意のテーブルです。
String
入力トレーニング フィーチャ

[予測対象変数] パラメーターと説明トレーニング変数フィールドを含むレイヤー。

Table View
出力トレーニング済みフィーチャ
(オプション)

出力フィーチャ レイヤー名

Table;Feature Class
予測対象変数
(オプション)

モデルのトレーニングに使用される値を含む [入力トレーニング フィーチャ] パラメーターから生成された変数。 このフィールドには、不明なロケーションでの予測に使用される変数の既知 (トレーニング) の値が含まれます。

Field
変数をカテゴリとして処理
(オプション)

[予測対象変数] をカテゴリ変数にするかどうかを指定します。

  • オン - [予測対象変数] がカテゴリ変数になり、このツールで分類が実行されます。
  • オフ - [予測対象変数] が連続変数になり、このツールで回帰が実行されます。 これがデフォルトです。
Boolean
説明変数
(オプション)

[予測対象変数] の値またはカテゴリの予測に役立つ説明変数を表すフィールドのリスト。 クラスまたはカテゴリを表す変数 (土地被覆や有無など) の場合に [カテゴリ] チェックボックスをオンにします。

Value Table
入力予測フィーチャ
(オプション)

予測が行われる位置を表すフィーチャ レイヤー。 このフィーチャ レイヤーには、トレーニング データから使用されるフィールドに対応するフィールドとして指定された説明変数も含める必要があります。

Table View
重要度テーブルの変数
(オプション)

作成されたモデルで使用されている説明変数ごとの重要度を示す情報を含むテーブル。

Table
出力予測済みフィーチャ
(オプション)

予測の結果を取得する出力フィーチャクラス。

Table;Feature Class
説明変数の照合
(オプション)

右側の [入力トレーニング フィーチャ] に対して指定された [説明変数] と左側の [入力予測フィーチャ] の対応するフィールドのリスト。

Value Table
ツリーの数
(オプション)

フォレスト モデル内で作成するツリーの数。 通常、ツリーの数を多くすると、モデル予測の精度は上がりますが、そのモデルでの計算時間が長くなります。 デフォルトのツリー数は 100 です。

Long
最小リーフ サイズ
(オプション)

リーフを維持するために最低限必要な観測数 (つまり、これ以上分割できないツリー上のターミナル ノード)。 デフォルト最小値は、回帰の場合の 5、分類の場合は 1 です。 大規模なデータの場合は、これらの数を増やすと、このツールの実行時間が短くなります。

Long
最大ツリー階層
(オプション)

ツリーの下に作成される分割の最大数。 最大ツリー階層の値を大きくすると、さらに多くの分割が作成されるため、モデルの過剰適合の可能性が高くなります。 デフォルト設定はデータ ドリブンであり、作成されたツリーの数とそれに含まれている変数の数によって異なります。

Long
ツリーあたりの利用可能なデータ (%)
(オプション)

決定木ごとに使用される [入力トレーニング フィーチャ] の割合。 デフォルトはデータの 100% です。 各ツリーのサンプルは、指定されたデータの 3 分の 2 の中からランダムに取得されます。

集合内の各決定木の作成には、ランダムなサンプルが使用されるか、利用可能なトレーニング データのサブセット (約 3 分の 2) が使用されます。 各決定木の入力データの割合を低くすると、大規模なデータセットの場合のこのツールの実行速度が上がります。

Long
ランダムにサンプリングされる変数の数
(オプション)

各決定木の作成に使用される説明変数の数。

フォレストの各決定木は、指定された説明変数のランダムなサブセットを使用して作成されます。 各決定木で使用される変数を増やすと、特に 1 つ以上の変数が優位な場合、モデルの過剰適合の可能性が高くなります。 一般的な方法として、[予測対象変数] が数値の場合は、説明変数の総数の平方根を使用し、[予測対象変数] がカテゴリの場合は、説明変数の総数を 3 で除算します。

Long
検証のために除外するトレーニング データ (%)
(オプション)

検証のためにテスト データセットとして確保する [入力トレーニング フィーチャ] の割合 (10 ~ 50 パーセント)。 ここで指定したデータのランダムなサブセットなしでモデルのトレーニングが行われ、これらのフィーチャの観測値が予測値と比較されます。 デフォルトは 10 パーセントです。

Long

arcpy.geoanalytics.Forest(prediction_type, in_features, {output_trained_features}, {variable_predict}, {treat_variable_as_categorical}, {explanatory_variables}, {features_to_predict}, {variable_of_importance}, {output_predicted}, {explanatory_variable_matching}, {number_of_trees}, {minimum_leaf_size}, {maximum_tree_depth}, {sample_size}, {random_variables}, {percentage_for_validation})
名前説明データ タイプ
prediction_type

このツールの操作モードを指定します。 このツールでは、パフォーマンスの評価、フィーチャの予測、または予測サーフェスの作成の目的にのみモデルのトレーニングを実行できます。

  • TRAINモデルのトレーニングは行われますが、予測は生成されません。 このオプションを使用すると、予測を生成する前に、モデルの精度を評価できます。 このオプションを使用すると、モデル診断がメッセージ ウィンドウに出力され、変数重要度のチャートが表示されます。 これがデフォルトです。
  • TRAIN_AND_PREDICTフィーチャに関する予測または分類が生成されます。 トレーニング フィーチャと予測対象フィーチャの両方に説明変数を指定する必要があります。 このオプションの出力内容は、フィーチャクラス、メッセージ ウィンドウでのモデル診断、変数重要度の任意のテーブルです。
String
in_features

variable_predict パラメーターと説明トレーニング変数フィールドを含むフィーチャクラス。

Table View
output_trained_features
(オプション)

出力フィーチャ レイヤー名

Table;Feature Class
variable_predict
(オプション)

モデルのトレーニングに使用される値を含む in_features パラメーターから生成された変数。 このフィールドには、不明なロケーションでの予測に使用される変数の既知 (トレーニング) の値が含まれます。

Field
treat_variable_as_categorical
(オプション)
  • CATEGORICALvariable_predict がカテゴリ変数になり、このツールで分類が実行されます。
  • NUMERICvariable_predict が連続変数になり、このツールで分類が実行されます。 これがデフォルトです。
Boolean
explanatory_variables
[[Variable, Categorical],...]
(オプション)

variable_predict の値またはカテゴリの予測に役立つ説明変数を表すフィールドのリスト。 クラスまたはカテゴリを表す変数 (土地被覆や有無など) の場合に treat_variable_as_categorical パラメーターを使用します。 クラスまたはカテゴリを表す変数 (土地被覆や有無など) の場合は true に設定し、連続変数の場合は false に設定します。

Value Table
features_to_predict
(オプション)

予測が行われる位置を表すフィーチャ レイヤー。 このフィーチャ レイヤーには、トレーニング データから使用されるフィールドに対応するフィールドとして指定された説明変数も含める必要があります。

Table View
variable_of_importance
(オプション)

作成されたモデルで使用されている説明変数ごとの重要度を示す情報を含むテーブル。

Table
output_predicted
(オプション)

予測の結果を取得する出力フィーチャクラス。

Table;Feature Class
explanatory_variable_matching
[[Prediction, Training],...]
(オプション)

右側の in_features に対して指定された explanatory_variables と左側の features_to_predict の対応するフィールド ([["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]] など) のリスト。

Value Table
number_of_trees
(オプション)

フォレスト モデル内で作成するツリーの数。 通常、ツリーの数を多くすると、モデル予測の精度は上がりますが、そのモデルでの計算時間が長くなります。 デフォルトのツリー数は 100 です。

Long
minimum_leaf_size
(オプション)

リーフを維持するために最低限必要な観測数 (つまり、これ以上分割できないツリー上のターミナル ノード)。 デフォルト最小値は、回帰の場合の 5、分類の場合は 1 です。 大規模なデータの場合は、これらの数を増やすと、このツールの実行時間が短くなります。

Long
maximum_tree_depth
(オプション)

ツリーの下に作成される分割の最大数。 最大ツリー階層の値を大きくすると、さらに多くの分割が作成されるため、モデルの過剰適合の可能性が高くなります。 デフォルト設定はデータ ドリブンであり、作成されたツリーの数とそれに含まれている変数の数によって異なります。

Long
sample_size
(オプション)

決定木ごとに使用される in_features の割合。 デフォルトはデータの 100% です。 各ツリーのサンプルは、指定されたデータの 3 分の 2 の中からランダムに取得されます。

集合内の各決定木の作成には、ランダムなサンプルが使用されるか、利用可能なトレーニング データのサブセット (約 3 分の 2) が使用されます。 各決定木の入力データの割合を低くすると、大規模なデータセットの場合のこのツールの実行速度が上がります。

Long
random_variables
(オプション)

各決定木の作成に使用される説明変数の数。

フォレストの各決定木は、指定された説明変数のランダムなサブセットを使用して作成されます。 各決定木で使用される変数を増やすと、特に 1 つ以上の変数が優位な場合、モデルの過剰適合の可能性が高くなります。 一般的な方法として、variable_predict が数値の場合は、説明変数の総数の平方根を使用し、variable_predict がカテゴリの場合は、説明変数の総数を 3 で除算します。

Long
percentage_for_validation
(オプション)

検証のためにテスト データセットとして確保する in_features の割合 (10 ~ 50 パーセント)。 ここで指定したデータのランダムなサブセットなしでモデルのトレーニングが行われ、これらのフィーチャの観測値が予測値と比較されます。 デフォルトは 10 パーセントです。

Long

コードのサンプル

Forest の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、Forest 関数の使用方法を示しています。

このスクリプトでは、1980 年からの売上データに対して Forest を実行し、1981 年の売上を予測します。

#-------------------------------------------------------------------------------
# Name: Forest.py
# Description: Run Forest on sales data from 1980 and predict for sales in 1981
#
# Requirements: Advanced License

# Import system modules
import arcpy
arcpy.env.workspace = "c:/data/commercial.gdb"   

# Set local variables
trainingDataset = "sales"
predictionDataset = "next_year"
outputName = "training"
outputPredictedName = "predicted"

# Run Forest
arcpy.geoanalytics.Forest(
    "TRAIN_AND_PREDICT", inputDataset, outputName, "PERIMETER", None, 
    "STORE_CATEGORY true;AVG_INCOME false;POPULATION false", None, 
    predictionDataset, 
    "STORE_CATEGORY STORE_CATEGORY;AVG_INCOME MEAN_INCOME;POPULATION POPULATION", 
    100, None, None, 120, None, 10)