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

サマリー

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

使用法

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

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

  • このツールはデータドリブンであり、大規模なデータセットで最適に動作します。 最適な結果を得るためには、少なくとも数百のフィーチャに対してこのツールをトレーニングする必要があります。 このツールは、小規模なデータセットには適していません。

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

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

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

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

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

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

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

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

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

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

  • このジオプロセシング ツールは、ArcGIS GeoAnalytics Server を活用しています。 解析は GeoAnalytics Server で実行され、結果が ArcGIS Enterprise のコンテンツに保存されます。

  • GeoAnalytics Server ツールを実行する場合、解析は GeoAnalytics Server で実行されます。 最適なパフォーマンスを得るためには、ArcGIS Enterprise ポータルでホストされているフィーチャ レイヤーかビッグ データ ファイル共有を通じて、GeoAnalytics Server にデータを提供する必要があります。 GeoAnalytics Server のローカルにないデータは、解析が開始する前に GeoAnalytics Server に移動されます。 つまり、ツールを実行する時間が長くなり、場合によっては ArcGIS Pro から GeoAnalytics Server にデータを移動できないこともあります。 エラーの閾値はネットワークの速度や、データのサイズや複雑さに左右されます。 データを必ず共有するか、ビッグ データ ファイル共有を作成することをお勧めします。

    データをポータルで共有する方法の詳細

    ArcGIS Server Manager を使用してビッグ データ ファイル共有を作成する方法の詳細

パラメーター

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

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

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

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

Record Set
出力フィーチャ名
(オプション)

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

String
予測対象変数
(オプション)

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

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

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

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

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

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

モデルで使用されている説明変数ごとの重要度を示す情報が出力テーブルに含まれるかどうかを指定します。

  • オン - 出力テーブルに各説明変数の情報が含まれます。
  • オフ - 出力テーブルに各説明変数の情報が含まれません。 これがデフォルトです。
Boolean
入力予測フィーチャ
(オプション)

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

Record Set
説明変数の照合
(オプション)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Long
データ ストア
(オプション)

出力の保存先の ArcGIS Data Store を指定します。 デフォルトは、[ビッグ データ ストア] です。 ビッグ データ ストアに格納されたすべての結果は、WGS84 で保存されます。 リレーショナル データ ストアに格納された結果は、それらの座標系を維持します。

  • ビッグ データ ストア出力がビッグ データ ストアに格納されます。 これがデフォルトです。
  • リレーショナル データ ストア出力がリレーショナル データ ストアに格納されます。
String

派生した出力

ラベル説明データ タイプ
出力トレーニング済みフィーチャ

トレーニング使用される入力変数、パラメーターを予測するための観測値、モデルのパフォーマンスを詳細に評価する際に使用できる予測を含む出力です。

Record Set
重要度テーブルの変数

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

Record Set
出力予測済みフィーチャ

モデルの予測を受け取るレイヤーです。

Record Set

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

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

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

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

Record Set
output_trained_name
(オプション)

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

String
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
create_variable_importance_table
(オプション)

モデルで使用されている説明変数ごとの重要度を示す情報が出力テーブルに含まれるかどうかを指定します。

  • CREATE_TABLE出力テーブルに各説明変数の情報が含まれます。
  • NO_TABLE出力テーブルに各説明変数の情報が含まれません。 これがデフォルトです。
Boolean
features_to_predict
(オプション)

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

Record Set
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
data_store
(オプション)

出力の保存先の ArcGIS Data Store を指定します。 デフォルトは、SPATIOTEMPORAL_DATA_STORE です。 ビッグ データ ストアに格納されたすべての結果は、WGS84 で保存されます。 リレーショナル データ ストアに格納された結果は、それらの座標系を維持します。

  • SPATIOTEMPORAL_DATA_STORE出力がビッグ データ ストアに格納されます。 これがデフォルトです。
  • RELATIONAL_DATA_STORE出力がリレーショナル データ ストアに格納されます。
String

派生した出力

名前説明データ タイプ
output_trained

トレーニング使用される入力変数、パラメーターを予測するための観測値、モデルのパフォーマンスを詳細に評価する際に使用できる予測を含む出力です。

Record Set
variable_of_importance

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

Record Set
output_predicted

モデルの予測を受け取るレイヤーです。

Record Set

コードのサンプル

Forest の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、ForestBasedClassificationAndRegression ツールの使用方法を示しています。

このスクリプトでは、ネットワーク フィーチャが記述され、2500 フィーチャのサンプル レイヤーが作成されます。

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

# Import system modules
import arcpy
arcpy.env.workspace = "c:/data/commercial.gdb"
# Set local variables
trainingDataset = "https://analysis.org.com/server/rest/services/Hosted/sales/FeatureServer/0"
predictionDataset = "https://analysis.org.com/server/rest/services/Hosted/next_year/FeatureServer/0"
outputName = "training"
outputPredictedName = "predicted"

# Execute 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, , , 120, , 10, "SPATIOTEMPORAL_DATA_STORE")

環境

特殊なケース

出力座標系

解析で使用される座標系。 このパラメーターで指定されない限り、入力の座標系で解析が行われます。 GeoAnalytics Tools の場合、最終結果は WGS84 のビッグ データ ストアに保存されます。

ライセンス情報

  • Basic: 次のものが必要 ArcGIS GeoAnalytics Server
  • Standard: 次のものが必要 ArcGIS GeoAnalytics Server
  • Advanced: 次のものが必要 ArcGIS GeoAnalytics Server

関連トピック