ラベル | 説明 | データ タイプ |
予測タイプ | このツールの操作モードを指定します。 このツールでは、パフォーマンスの評価、フィーチャの予測、または予測サーフェスの作成の目的にのみモデルのトレーニングを実行できます。
| 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 |
サマリー
Leo Breiman と Adele Cutler により開発された教師付き機械学習方法であるランダム フォレスト アルゴリズムを転用してモデルを作成し、予測を生成します。 予測は、カテゴリ変数 (分類) と連続変数 (回帰) の両方に対して実行できます。 説明変数は、トレーニング フィーチャの属性テーブル内のフィールドの形態をとることができます。 トレーニング データに基づいてモデルのパフォーマンスを検証するだけでなく、フィーチャ対して予測を行うこともできます。
使用法
このツールでは、予測に使用できるモデルを作成するために、何百にも上るツリー (決定木のアンサンブルと呼ばれる) が作成されます。 それぞれの決定木の作成には、元の (トレーニング) データのランダムに生成された部分が使用されます。 ツリーごとに独自の予測が生成され、結果が決定されます。 フォレスト モデルでは、不明なサンプルの結果を予測または分類するために、すべての決定木から得た決定を考慮します。 個々のツリーにはモデルの過剰適合の問題があることが考えられるため、この処理は非常に重要です。予測用にフォレスト内の複数のツリーを組み合わせると、単一のツリーに関連する過剰適合の問題に対処できます。
このツールは、2 つの操作モードで使用できます。 [トレーニング] モードを使用すると、さまざまな説明変数およびツール設定を調査しながら、それぞれのモデルのパフォーマンスを評価できます。 適切なモデルが見つかったら、[トレーニングおよび予測] モードを使用できます。
[入力トレーニング フィーチャ] として、テーブル、ポイント、ライン、またはポリゴン フィーチャを指定できます。 このツールをマルチパート データに使用することはできません。
このツールでは、date only フィールドまたは time only フィールドを含む入力はサポートされていません。 解析を実行する前に、date only フィールドと time only フィールドを削除してください。
予測または説明フィールドに 1 つ以上の NULL 値または空の文字列値を持つフィーチャは、出力から除外されます。 必要に応じて [フィールドの演算 (Calculate Field)] ツールを使用して値を変更できます。
ツールは、次のような操作モードに応じて、さまざまな出力を作成します。
- [トレーニング] は、次の 2 つの出力を作成します。
- 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。 また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
- ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。 このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。
- [トレーニングおよび予測] は、次の 3 つの出力を作成します。
- 出力トレーニング フィーチャ - 作成されたモデルで使用されるすべての [入力トレーニング フィーチャ]、およびモデルで使用されるすべての説明変数を含みます。 また、モデルのトレーニングに使用されているすべてのフィーチャに関する予測も含まれます。この予測は、作成されたモデルのパフォーマンスを評価するのに役立ちます。
- 出力予測フィーチャ - 予測結果のレイヤーです。 予測は、トレーニング レイヤーから生成されたモデルを使用して、予測するレイヤーに適用されます ([入力推定フィーチャ] オプションを使用)。
- ツールのサマリー メッセージ - 作成されたモデルのパフォーマンスを理解するのに役立つメッセージです。 このメッセージには、モデル特性、変数重要度、検証診断に関する情報が記載されています。
- [トレーニング] は、次の 2 つの出力を作成します。
[変数重要度テーブルの作成] パラメーターを使用すると、変数重要度を評価するためのチャートの表示に使用するテーブルを作成できます。 上位 20 の変数重要度の値もメッセージ ウィンドウで通知されます。
説明変数は、フィールドから取得することができ、さまざまな値を含んでいる必要があります。 説明変数がカテゴリの場合は、[カテゴリ] チェックボックスをオンにします (文字列タイプの変数が自動的にオンになります)。 カテゴリ説明変数は 60 の個別値に制限されていますが、カテゴリの数を少なくすると、モデルのパフォーマンスが上がります。 データのサイズによっては、変数に含まれているカテゴリの数が多いと、モデルに大きく影響し、これによって予測結果が意味を持たなくなる可能性が高くなります。
説明変数を照合する場合、[トレーニング フィールド] と [予測フィールド] 同じタイプである必要があります (たとえば、[トレーニング フィールド] の double フィールドは [予測フィールド] の double フィールドに一致する必要があります)。
フォレストベースのモデルは外挿されないため、モデルのトレーニングが実行された値にしか分類も予測もできません。 ターゲットのフィーチャおよび変数の範囲内のトレーニング フィーチャおよび説明変数を使用して、モデルをトレーニングします。 トレーニング フィーチャに含まれていない予測説明変数にカテゴリが存在する場合は、このツールの実行に失敗します。
[ツリーの数] パラメーターのデフォルト値は 100 です。 フォレスト モデル内のツリーの数を増やすと、モデル予測の精度は上がりますが、そのモデルでの計算時間が長くなります。
トレーニング用の単一のレイヤーおよび予測用の単一のレイヤーがサポートされています。 複数のデータセットを 1 つに結合するには、[多変数グリッドの構築] ツールおよび [多変数グリッドから情報付加] ツールを使用して入力データを生成します。
ジオプロセシング ツールは、Spark を活用しています。 解析は、複数のコアを並列に使用して、デスクトップ コンピューター上で実行されます。 解析の実行方法の詳細については、「GeoAnalytics Desktop ツールに関する考慮事項」をご参照ください。
GeoAnalytics Desktop ツールを実行する場合、解析はデスクトップ コンピューター上で実行されます。 最適なパフォーマンスを実現するには、データがデスクトップ上で使用可能である必要があります。 ホスト フィーチャ レイヤーを使用している場合は、ArcGIS GeoAnalytics Server を使用することをお勧めします。 データがローカルに存在していない場合、ツールの実行時間が長くなります。 ArcGIS GeoAnalytics Server を使用して解析を実行する方法については、GeoAnalytics Tools をご参照ください。
パラメーター
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 | このツールの操作モードを指定します。 このツールでは、パフォーマンスの評価、フィーチャの予測、または予測サーフェスの作成の目的にのみモデルのトレーニングを実行できます。
| String |
in_features | variable_predict パラメーターと説明トレーニング変数フィールドを含むフィーチャクラス。 | Table View |
output_trained_features (オプション) | 出力フィーチャ レイヤー名 | Table;Feature Class |
variable_predict (オプション) | モデルのトレーニングに使用される値を含む in_features パラメーターから生成された変数。 このフィールドには、不明なロケーションでの予測に使用される変数の既知 (トレーニング) の値が含まれます。 | Field |
treat_variable_as_categorical (オプション) |
| 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 |
コードのサンプル
次の 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)