概要
教師付きコンピューター ラーニング手法である Leo Breiman のランダム フォレスト アルゴリズムを転用してモデルを作成し、予測を生成します。予測は、カテゴリ変数 (分類) と連続変数 (回帰) の両方に対して実行できます。説明変数は、トレーニング フィーチャの属性テーブル内のフィールドの形態をとることができます。トレーニング データに基づいてモデルのパフォーマンスを検証するだけでなく、フィーチャ対して予測を行うこともできます。
使用法
このツールでは、予測に使用できるモデルを作成するために、何百にも上るツリー (決定木のアンサンブルと呼ばれる) が作成されます。それぞれの決定木の作成には、元の (トレーニング) データのランダムに生成された部分が使用されます。ツリーごとに独自の予測が生成され、結果が決定されます。フォレスト モデルでは、不明なサンプルの結果を予測または分類するために、すべての決定木から得た決定を考慮します。個々のツリーにはモデルの過剰適合の問題があることが考えられるため、この処理は非常に重要です。予測用にフォレスト内の複数のツリーを組み合わせると、単一のツリーに関連する過剰適合の問題に対処できます。
このツールは、2 つの操作モードで使用できます。[トレーニング] モードを使用すると、さまざまな説明変数およびツール設定を調査しながら、それぞれのモデルのパフォーマンスを評価できます。適切なモデルが見つかったら、[トレーニングおよび予測] モードを使用できます。
このツールはデータドリブンであり、大規模なデータセットで最適に動作します。最適な結果を得るためには、少なくとも数百のフィーチャに対してこのツールをトレーニングする必要があります。このツールは、小規模なデータセットには適していません。
[入力トレーニング フィーチャ] として、テーブル、ポイント、ライン、またはポリゴン フィーチャを指定できます。このツールをマルチパート データに使用することはできません。
予測または説明フィールドに 1 つ以上の NULL 値または空の文字列値を持つフィーチャは、出力から除外されます。必要に応じて、[フィールド演算 (Calculate Field)] ツールを使用して、値を変更します。
ツールは、次のような操作モードに応じて、さまざまな出力を作成します。
- [トレーニング] は、次の 2 つの出力を作成します。
- 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
- ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。
- [トレーニングおよび予測] は、次の 3 つの出力を作成します。
- 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
- 出力予測フィーチャ - 予測結果のレイヤーです。予測は、トレーニング レイヤーから生成されたモデルを使用して、予測するレイヤーに適用されます ([入力推定フィーチャ] オプションを使用)。
- ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。
- [トレーニング] は、次の 2 つの出力を作成します。
[変数重要度テーブルの作成] パラメーターを使用すると、変数重要度を評価するためのチャートの表示に使用するテーブルを作成できます。上位 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 にデータを移動できないこともあります。エラーの閾値はネットワークの速度や、データのサイズや複雑さに左右されます。したがって、データを必ず共有するか、ビッグ データ ファイル共有を作成することをお勧めします。
構文
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 | このツールの操作モードを指定します。このツールでは、パフォーマンスの評価、フィーチャの予測、または予測サーフェスの作成の目的にのみモデルのトレーニングを実行できます。
| String |
in_features | [variable_predict] パラメーターと説明トレーニング変数フィールドを含むフィーチャクラス。 | Record Set |
output_trained_name (オプション) | 出力フィーチャ レイヤー名。 | String |
variable_predict (オプション) | モデルのトレーニングに使用される値を含む [in_features] パラメーターから生成された変数。このフィールドには、不明な位置での予測に使用される変数の既知 (トレーニング) の値が含まれます。 | Field |
treat_variable_as_categorical (オプション) |
| Boolean |
explanatory_variables [[Variable, Categorical],...] (オプション) | [variable_predict] の値またはカテゴリの予測に役立つ説明変数を表すフィールドのリスト。クラスまたはカテゴリを表す変数 (土地被覆や有無など) の場合に [treat_variable_as_categorical] パラメーターを使用します。クラスまたはカテゴリを表す変数 (土地被覆や有無など) の場合は true に設定し、連続変数の場合は false に設定します。 | Value Table |
create_variable_importance_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 で保存されます。リレーショナル データ ストアに格納された結果は、それらの座標系を維持します。
| String |
派生した出力
名前 | 説明 | データ タイプ |
output_trained | トレーニング使用される入力変数、パラメーターを予測するための観測値、モデルのパフォーマンスを詳細に評価する際に使用できる予測を含む出力です。 | レコード セット |
variable_of_importance | 作成されたモデルで使用されている説明変数ごとの重要度を示す情報を含むテーブル。 | レコード セット |
output_predicted | モデルの予測を受け取るレイヤーです。 | レコード セット |
コードのサンプル
次の 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