概要
教師付きコンピューター ラーニング手法である Leo Breiman のランダム フォレスト アルゴリズムを転用してモデルを作成し、予測を生成します。予測は、カテゴリ変数 (分類) と連続変数 (回帰) の両方に対して実行できます。説明変数は、トレーニング フィーチャの属性テーブル内のフィールドの形態をとることができます。トレーニング データに基づいてモデルのパフォーマンスを検証するだけでなく、フィーチャ対して予測を行うこともできます。
使用法
このツールでは、予測に使用できるモデルを作成するために、何百にも上るツリー (決定木のアンサンブルと呼ばれる) が作成されます。それぞれの決定木の作成には、元の (トレーニング) データのランダムに生成された部分が使用されます。ツリーごとに独自の予測が生成され、結果が決定されます。フォレスト モデルでは、不明なサンプルの結果を予測または分類するために、すべての決定木から得た決定を考慮します。個々のツリーにはモデルの過剰適合の問題があることが考えられるため、この処理は非常に重要です。予測用にフォレスト内の複数のツリーを組み合わせると、単一のツリーに関連する過剰適合の問題に対処できます。
このツールは、2 つの操作モードで使用できます。[トレーニング] モードを使用すると、さまざまな説明変数およびツール設定を調査しながら、それぞれのモデルのパフォーマンスを評価できます。適切なモデルが見つかったら、[トレーニングおよび予測] モードを使用できます。
[入力トレーニング フィーチャ] として、テーブル、ポイント、ライン、またはポリゴン フィーチャを指定できます。このツールをマルチパート データに使用することはできません。
予測または説明フィールドに 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.gapro.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"
# 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, None, None, 120, None, 10)
環境
ライセンス情報
- Basic: いいえ
- Standard: いいえ
- Advanced: はい