フォレストベース予測 (Forest-based Forecast) (時空間パターン マイニング)

サマリー

Leo Breiman のランダム フォレスト アルゴリズムを転用して、時空間キューブの各ロケーションの値を予測します。 フォレスト回帰モデルは、時空間キューブの各ロケーションでタイム ウィンドウを使用してトレーニングされます。

フォレストベース予測ツールの詳細

フォレストベース予測ツールの図
フォレストベース予測ツールを使用して時系列を予測します。

使用法

  • このツールでは、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、[定義済みのフィーチャから時空間キューブを作成 (Create Space Time Cube From Defined Features)] ツール、および [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールによって作成された netCDF ファイルを使用できます。

  • 時系列予測ツールセットの他の予測ツールと比較すると、このツールは最も複雑ですが、データに関する前提が最も少なくて済みます。 単純な数学関数でモデル化することが難しい複雑な形状やトレンドを持つ時系列や、他の方法の前提を満たさない場合にお勧めします。 また、時空間キューブに予測対象変数に関連する他の変数がある場合にもお勧めします。 これらの変数を説明変数として含めることで、予測を改善できます。

  • [位置による予測評価 (Evaluate Forecasts By Location)] ツールを使用して、予測される複数の時空間キューブを比較およびマージできます。これによって、別々の予測ツールやパラメーターを使用して複数の予測キューブを作成し、予測 RMSE (二乗平均平方根誤差) または検証 RMSE を使用して場所ごとに最適な予測をツールで判定できます。

  • [入力時空間キューブ] パラメーター値の各ロケーションについて、ツールは異なる目的に対応するよう 2 つのモデルを構築します。

    • 予測モデル - このモデルは、時空間キューブの値の予測に使用されます。時系列の値を使用してフォレストを構築し、このフォレストを使用して未来の時間ステップの値を予測します。 予測モデルが時空間キューブの値にどの程度適合しているかは、予測 RMSE 値により測定されます。
    • 検証モデル - このモデルは、予測モデルを検証し、値の精度をテストするために使用されます。 [検証で除外する時間ステップの数] パラメーターに 0 を上回る数字が指定された場合、このモデルは包含されている時間ステップを使用して構築され、除外された時間ステップの値の予測に使用されます。 これにより、選択したモデルが値をどれだけ的確に予測できるかを確認できます。 予測される値が除外された値とどの程度適合しているかは、検証 RMSE 値により測定されます。

    予測モデル、検証モデル、RMSE 統計の詳細

  • [出力フィーチャ] パラメーター値は [コンテンツ] ウィンドウに追加され、最終的に予測された時間ステップに基づいてレンダリングされます。

  • このツールは、予測結果の理解と視覚化に役立つよう、ジオプロセシング メッセージとポップアップ チャートを作成します。 メッセージには、時空間キューブの構造と、RMSE 値および季節の長さの統計サマリーに関する情報が含まれます。 [マップ操作] ナビゲーション ツールを使用してフィーチャをクリックすると、そのロケーションの時空間キューブ、適合フォレスト値、予測値、信頼区間などの値を表示した [ポップアップ] ウィンドウに、ライン チャートが表示されます。

  • [その他の変数] パラメーターを使用し、説明変数を含めることで予測を改善できます。 その他の変数を指定した場合、予測モデルは多変量フォレストベース予測になります。 各説明変数は、フォレスト モデルのトレーニングに使用される各タイム ウィンドウ内のタイム ラグ係数に変換されます。 これにより、説明変数と分析変数の間のラグ (遅延) 効果を推定することができます。 たとえば、パンデミック下の入院者数の増加により、14 日後の死亡者数を予測することができるものの、入院者数で直近 3 日間の死亡者数を精度高く予測することはできません。 タイム ラグの数は、[時間ステップ ウィンドウ] パラメーターの値に等しいため、把握したいラグ効果よりもタイム ウィンドウを長くする必要があります。

    [出力重要度テーブル] パラメーターは、各ロケーションで最も重要な係数を表示するテーブルを作成し、タイム ウィンドウ内のタイム ラグ別にすべてのロケーションで最も重要な係数のカウントを表示する [タイム ラグ重要度] バー チャートを含んでいます。 これにより、分析変数の値を予測するうえで重要だった変数を確認し、その係数が最も重要だった場合に関連付けられたラグを視覚化することができます。 たとえば、入院者数が 14 日後の死亡者数に関連付けられている場合、時間ステップ ウィンドウは少なくとも 14 日が含まれている必要があり、タイム ウィンドウが終了する約 14 日前に発生した多数の入院者数が重要であることを観察する必要があります。

    各ロケーションで重要と見なされる係数の数は、[重要度の閾値] パラメーターによって異なります。 たとえば、15 を指定すると、各ロケーションの係数の上位 15% がテーブルとチャートに含まれるようになります。

  • [外れ値オプション] パラメーターを使用して、各場所における時系列値の統計的に有意な外れ値を検出できます。

    時系列外れ値の検出の詳細

  • [外れ値オプション] パラメーターの [外れ値の特定] オプションを選択した場合は、[時間ステップ ウィンドウ] パラメーターを空のままにして各ロケーションで異なる時間ステップ ウィンドウを評価するのではなく、値を指定することをお勧めします。 フォレスト モデルは各ロケーションで予測モデルをトレーニングするために最初の時間ステップ ウィンドウの時間ステップを使用し、外れ値は残りの時間ステップでのみ検出されます。 トレーニングの際に各ロケーションで異なる数の時間ステップが除外されている場合、時間ステップ単位またはロケーション単位で外れ値の平均、最小、最大などの統計サマリーを出力することは誤解を招く恐れがあります。

  • [その他の変数] パラメーターに説明変数が含まれている場合、[予測方法] パラメーターでは [値によってモデルを構築] オプションのみを使用できます。 また、説明変数が追加されるたびに処理時間は増加します。

  • 検証のとき、どの程度の時間ステップを除外するかは重要な選択です。除外する時間ステップを増やすと、検証モデルを推定する時間ステップが少なくなってしまいます。ただし、除外する時間ステップが少なすぎると、検証 RMSE は少量のデータを使用して推定されることになり、誤解を招きやすくなります。検証モデルの評価に十分な時間ステップを維持しながら、できる限り多くの時間ステップを除外することをお勧めします。また、時空間キューブに十分な時間ステップが存在するなら、最低でも予測に使用する時間ステップと同じ数の時間ステップを検証用に保持することをお勧めします。

パラメーター

ラベル説明データ タイプ
入力時空間キューブ

将来の時間ステップについて予測する変数を含む netCDF キューブ。このファイルは、*.nc ファイル拡張子が付加され、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、[定義済みの場所から時空間キューブを作成 (Create Space Time Cube From Defined Locations)] ツール、または [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールで作成されている必要があります。

File
分析変数

将来の時間ステップについて予測される、netCDF ファイル内の数値変数。

String
出力フィーチャ

時空間キューブ内のすべてのロケーションの出力フィーチャクラスで、予測される値がフィールドとして格納されます。 レイヤーには最終時間ステップの予測と、各ロケーションの時系列、予測、および 90% の信頼区間を示すポップアップ チャートが表示されます。

Feature Class
出力時空間キューブ
(オプション)

入力時空間キューブの値を含み、予測された時間ステップが追加された、新しい時空間キューブ (*.nc ファイル)。[時空間キューブを 3D で視覚化 (Visualize Space Time Cube in 3D)] ツールを使用して、観測および予測されたすべての値を同時に参照できます。

File
予測する時間ステップ数
(オプション)

予測する時間ステップ数を指定する正の整数。この値は、入力時空間キューブの合計時間ステップ数の 50% より大きくできません。デフォルト値は 1 時間ステップです。

Long
時間ステップ ウィンドウ
(オプション)

モデルをトレーニングする際に使用する、以前の時間ステップの数。 データに季節性 (繰り返しサイクル) がある場合は、1 サイクルに対応する時間ステップの数を入力します。 この値は、入力された時空間キューブの時間ステップ数の 1/3 を上回ることはできません。 値を指定しない場合、スペクトル密度関数を使用して、各ロケーションについてタイム ウィンドウが見積もられます。

季節性とタイム ウィンドウの選択の詳細

Long
検証から除外する時間ステップ数
(オプション)

各時系列の最後で、検証のため除外する時間ステップ数。デフォルト値は入力時間ステップ数の 10% (端数切り捨て) で、この値は時間ステップ数の 25% より大きくできません。値 0 を指定すると、時間ステップは一切除外されません。

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

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

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

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

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

ツリーの下に作成される分割の最大数。 最大ツリー階層の値を大きくすると、さらに多くの分割が作成されるため、モデルの過剰適合の可能性が高くなります。 値を指定しない場合、モデルが作成したツリーの数と時間ステップ ウィンドウのサイズに基づき、ツールが値を特定します。

Long
ツリーあたりの利用可能なトレーニングの割合 (%)
(オプション)

予測モデルの適合に使用するトレーニング データの割合。 トレーニング データは、タイム ウィンドウを使用して構築された、関連する説明変数と従属変数から成ります。 残りのトレーニング データはすべて、予測モデルのパラメーターの最適化に使用されます。 デフォルトは 100 パーセントです。

Long
予測方法
(オプション)

各ロケーションのフォレスト モデルのトレーニングの際に説明変数と従属変数を表示する方法を指定します。

予測に使用するフォレスト モデルをトレーニングするには、タイム ウィンドウを使用して説明変数と独立変数のセットを作成する必要があります。 このパラメーターを使用して、これらの変数が線形にトレンド除去されるかどうか、従属変数が未加工の値によって表されるか線形回帰モデルの残差によって表されるか、などを指定します。 この線形回帰モデルは、説明変数としてタイム ウィンドウのすべての時間ステップを使用し、従属変数として後続の時間ステップを使用します。 残差は、線形回帰に基づいて予測された値を、従属変数の未加工の値から減算することによって計算されます。

  • 値によってモデルを構築タイム ウィンドウ内の値はトレンド除去されず、独立変数は未加工の値によって表されます。 [その他の変数] パラメーターに説明変数が指定されている場合、この予測方法のみを利用でき、これがデフォルトです。
  • トレンド除去後の値によるモデルの構築タイム ウィンドウ内の値は線形にトレンド除去され、独立変数はトレンド除去された値によって表されます。 これがデフォルトです。
  • 残差によるモデルの構築タイム ウィンドウ内の値はトレンド除去されず、独立変数は、タイム ウィンドウ内の値を説明変数として使用した線形回帰モデルの残差によって表されます。
  • トレンド除去後の残差によるモデルの構築タイム ウィンドウ内の値は線形にトレンド除去され、独立変数は、タイム ウィンドウ内のトレンド除去された値を説明変数として使用した線形回帰モデルの残差によって表されます。
String
外れ値オプション
(オプション)

統計的に有意な時系列外れ値が特定されるかどうかを指定します。

  • なし外れ値は特定されません。これがデフォルトです。
  • 外れ値の特定一般化 ESD 検定を使用して、外れ値が特定されます。
String
信頼度
(オプション)

時系列外れ値のテストの信頼度を指定します。

  • 90%テストの信頼度は 90 パーセントです。これがデフォルトです。
  • 95%テストの信頼度は 95 パーセントです。
  • 99%テストの信頼度は 99 パーセントです。
String
外れ値の最大数

各場所で外れ値を宣言できる時間ステップの最大数。デフォルト値は、入力時空間キューブの時間ステップ数の 5 パーセント (端数切り捨て) に相当します (1 以上の値が必ず使用されます)。この値は、時間ステップ数の 20 パーセントを超えることはできません。

Long
その他の変数
(オプション)

予測を改善するための説明変数として使用される、入力時空間キューブのその他の変数。

String
重要度の閾値 (%)
(オプション)

分析変数の予測に最も重要と見なされる係数の割合。 たとえば、値が 20 の場合、各ロケーションの係数の上位 20% が重要度テーブルに含まれるようになります。 各変数 (分析変数と各説明変数) は、時間ステップ ウィンドウ内の時間ステップごとに 1 回ずつ係数として表されるため、各ロケーションでの係数の数は、タイム ウィンドウの長さに変数の数を掛けたものになります。 係数の数に重要度の閾値を掛けて、各ロケーションでの重要な係数の数を決定します。 デフォルト値は 10 で、値は 1 ~ 100 の整数でなければなりません。

Long
出力重要度テーブル
(オプション)

各ロケーションで最も重要な係数が含まれる出力テーブル。 時空間キューブの各ロケーションは、そのロケーションで重要な各係数の変数名と関連付けられたタイム ラグを含むフィールドが設定されたテーブル内の行として表されます。 テーブルには、すべてのロケーションで最も重要な係数のカウントをタイム ラグ別に表示するチャートが含まれます。 チャートでは、説明変数と予測対象変数の間のラグ効果を推定および視覚化することができます。

Table

arcpy.stpm.ForestBasedForecast(in_cube, analysis_variable, output_features, {output_cube}, {number_of_time_steps_to_forecast}, {time_window}, {number_for_validation}, {number_of_trees}, {minimum_leaf_size}, {maximum_depth}, {sample_size}, {forecast_approach}, {outlier_option}, {level_of_confidence}, maximum_number_of_outliers, {other_variables}, {importance_threshold}, {output_importance_table})
名前説明データ タイプ
in_cube

将来の時間ステップについて予測する変数を含む netCDF キューブ。このファイルは、*.nc ファイル拡張子が付加され、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、[定義済みの場所から時空間キューブを作成 (Create Space Time Cube From Defined Locations)] ツール、または [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールで作成されている必要があります。

File
analysis_variable

将来の時間ステップについて予測される、netCDF ファイル内の数値変数。

String
output_features

時空間キューブ内のすべてのロケーションの出力フィーチャクラスで、予測される値がフィールドとして格納されます。 レイヤーには最終時間ステップの予測と、各ロケーションの時系列、予測、および 90% の信頼区間を示すポップアップ チャートが表示されます。

Feature Class
output_cube
(オプション)

入力時空間キューブの値を含み、予測された時間ステップが追加された、新しい時空間キューブ (*.nc ファイル)。[時空間キューブを 3D で視覚化 (Visualize Space Time Cube in 3D)] ツールを使用して、観測および予測されたすべての値を同時に参照できます。

File
number_of_time_steps_to_forecast
(オプション)

予測する時間ステップ数を指定する正の整数。この値は、入力時空間キューブの合計時間ステップ数の 50% より大きくできません。デフォルト値は 1 時間ステップです。

Long
time_window
(オプション)

モデルをトレーニングする際に使用する、以前の時間ステップの数。 データに季節性 (繰り返しサイクル) がある場合は、1 サイクルに対応する時間ステップの数を入力します。 この値は、入力された時空間キューブの時間ステップ数の 1/3 を上回ることはできません。 値を指定しない場合、スペクトル密度関数を使用して、各ロケーションについてタイム ウィンドウが見積もられます。

Long
number_for_validation
(オプション)

各時系列の最後で、検証のため除外する時間ステップ数。デフォルト値は入力時間ステップ数の 10% (端数切り捨て) で、この値は時間ステップ数の 25% より大きくできません。値 0 を指定すると、時間ステップは一切除外されません。

Long
number_of_trees
(オプション)

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

Long
minimum_leaf_size
(オプション)

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

Long
maximum_depth
(オプション)

ツリーの下に作成される分割の最大数。 最大ツリー階層の値を大きくすると、さらに多くの分割が作成されるため、モデルの過剰適合の可能性が高くなります。 値を指定しない場合、モデルが作成したツリーの数と時間ステップ ウィンドウのサイズに基づき、ツールが値を特定します。

Long
sample_size
(オプション)

予測モデルの適合に使用するトレーニング データの割合。 トレーニング データは、タイム ウィンドウを使用して構築された、関連する説明変数と従属変数から成ります。 残りのトレーニング データはすべて、予測モデルのパラメーターの最適化に使用されます。 デフォルトは 100 パーセントです。

フォレスト予測モデルのトレーニングの詳細

Long
forecast_approach
(オプション)

各ロケーションのフォレスト モデルのトレーニングの際に説明変数と従属変数を表示する方法を指定します。

予測に使用するフォレスト モデルをトレーニングするには、タイム ウィンドウを使用して説明変数と独立変数のセットを作成する必要があります。 このパラメーターを使用して、これらの変数が線形にトレンド除去されるかどうか、従属変数が未加工の値によって表されるか線形回帰モデルの残差によって表されるか、などを指定します。 この線形回帰モデルは、説明変数としてタイム ウィンドウのすべての時間ステップを使用し、従属変数として後続の時間ステップを使用します。 残差は、線形回帰に基づいて予測された値を、従属変数の未加工の値から減算することによって計算されます。

予測方法パラメーターの詳細

  • VALUEタイム ウィンドウ内の値はトレンド除去されず、独立変数は未加工の値によって表されます。 [その他の変数] パラメーターに説明変数が指定されている場合、この予測方法のみを利用でき、これがデフォルトです。
  • VALUE_DETRENDタイム ウィンドウ内の値は線形にトレンド除去され、独立変数はトレンド除去された値によって表されます。 これがデフォルトです。
  • RESIDUALタイム ウィンドウ内の値はトレンド除去されず、独立変数は、タイム ウィンドウ内の値を説明変数として使用した線形回帰モデルの残差によって表されます。
  • RESIDUAL_DETRENDタイム ウィンドウ内の値は線形にトレンド除去され、独立変数は、タイム ウィンドウ内のトレンド除去された値を説明変数として使用した線形回帰モデルの残差によって表されます。
String
outlier_option
(オプション)

統計的に有意な時系列外れ値が特定されるかどうかを指定します。

  • NONE外れ値は特定されません。これがデフォルトです。
  • IDENTIFY一般化 ESD 検定を使用して、外れ値が特定されます。
String
level_of_confidence
(オプション)

時系列外れ値のテストの信頼度を指定します。

  • 90%テストの信頼度は 90 パーセントです。これがデフォルトです。
  • 95%テストの信頼度は 95 パーセントです。
  • 99%テストの信頼度は 99 パーセントです。
String
maximum_number_of_outliers

各場所で外れ値を宣言できる時間ステップの最大数。デフォルト値は、入力時空間キューブの時間ステップ数の 5 パーセント (端数切り捨て) に相当します (1 以上の値が必ず使用されます)。この値は、時間ステップ数の 20 パーセントを超えることはできません。

Long
other_variables
[other_variables,...]
(オプション)

予測を改善するための説明変数として使用される、入力時空間キューブのその他の変数。

String
importance_threshold
(オプション)

分析変数の予測に最も重要と見なされる係数の割合。 たとえば、値が 20 の場合、各ロケーションの係数の上位 20% が重要度テーブルに含まれるようになります。 各変数 (分析変数と各説明変数) は、時間ステップ ウィンドウ内の時間ステップごとに 1 回ずつ係数として表されるため、各ロケーションでの係数の数は、タイム ウィンドウの長さに変数の数を掛けたものになります。 係数の数に重要度の閾値を掛けて、各ロケーションでの重要な係数の数を決定します。 デフォルト値は 10 で、値は 1 ~ 100 の整数でなければなりません。

Long
output_importance_table
(オプション)

各ロケーションで最も重要な係数が含まれる出力テーブル。 時空間キューブの各ロケーションは、そのロケーションで重要な各係数の変数名と関連付けられたタイム ラグを含むフィールドが設定されたテーブル内の行として表されます。 テーブルには、すべてのロケーションで最も重要な係数のカウントをタイム ラグ別に表示するチャートが含まれます。 チャートでは、説明変数と予測対象変数の間のラグ効果を推定および視覚化することができます。

Table

コードのサンプル

ForestBasedForecast の例 1 (Python ウィンドウ)

次の Python スクリプトは、ForestBasedForecast 関数の使用方法を示しています。

import arcpy
arcpy.env.workspace = "C:/Analysis"

# Forecast four time steps using a random forest with detrending.
arcpy.stpm.ForestBasedForecast("CarTheft.nc","Cars_NONE_ZEROS", 
                               "Analysis.gdb/Forecasts", "outForecastCube.nc"
                               4, 3, 5, 100, "", "", 100, "VALUE_DETREND")
ForestBasedForecast の例 2 (スタンドアロン スクリプト)

次の Python スクリプトで、ForestBasedForecast 機能を使用して自動車窃盗件数を予測する方法を示します。

# Forecast change in car thefts using a random forest.

# Import system modules.
import arcpy

# Set property to overwrite existing output, by default.
arcpy.env.overwriteOutput = True

# Set workspace.
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace

# Forecast three time steps using a random forest based on change.
arcpy.stpm.ForestBasedForecast("CarTheft.nc","Cars_NONE_ZEROS", 
                               "Analysis.gdb/Forecasts", "outForecastCube.nc"
                               4, 3, 5, 100, "", "", 100, "CHANGE",
                               "IDENTIFY", "90%", 4)

# Create a feature class visualizing the forecasts.
arcpy.stpm.VisualizeSpaceTimeCube3D("outForecastCube.nc", "Cars_NONE_ZEROS", 
                                    "VALUE", "Analysis.gdb/ForecastsFC")

ライセンス情報

  • Basic: Yes
  • Standard: Yes
  • Advanced: Yes

関連トピック