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

概要

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

使用法

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

  • このツールは、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 ツールをご参照ください。

構文

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
(オプション)
  • CATEGORICAL[variable_predict] がカテゴリ変数になり、このツールで分類が実行されます。
  • NUMERIC[variable_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"
# 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: はい

関連トピック