時系列予測モデルのトレーニング (Train Time Series Forecasting Model) (GeoAI)

サマリー

時空間キューブの時系列データを使用して、ディープ ラーニング ベースの時系列予測モデルをトレーニングします。 トレーニング済みモデルは、[時系列モデルを使用した予測 (Forecast Using Time Series Model)] ツールを使用した時空間キューブの各場所における値の予測に使用できます。

時系列データはさまざまなトレンドに従うことができ、複数レベルの季節性があります。 統計的アプローチに基づく従来の時系列予測モデルは、データのトレンドと季節性パターンに応じて異なる方法で実行されます。 ディープ ラーニング ベースのモデルは学習する能力が高く、トレーニング データの量が十分にあれば、さまざまな種類の時系列で結果を提供できます。

このツールは、Fully Connected Network (FCN)、Long Short-Term Memory (LSTM)、InceptionTime、ResNet、ResCNN などのさまざまなディープ ラーニング ベースのモデルを使用して時系列予測モデルをトレーニングします。 これらのモデルでは、複数回の従属変数からモデルが学習して将来の値を予測する多変量時系列がサポートされています。 トレーニング済みモデルはディープ ラーニング パッケージ ファイル (.dlpk) として保存され、[時系列モデルを使用した予測 (Forecast Using Time Series Model)] ツールによる将来の値の予測に使用できます。

時系列予測モデルの仕組みの詳細

使用法

  • ArcGIS AllSourcePython 用の適切なディープ ラーニング フレームワークをインストールする必要があります。

    ArcGIS のディープ ラーニング フレームワークのインストール方法の詳細

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

  • 時系列予測ツールセットの他の予測ツールとは異なり、このツールはディープ ラーニング ベースの時系列予測モデルを使用します。 ディープ ラーニング ベースのモデルは学習する能力が高く、複雑なトレンドに従う時系列に最適であり、シンプルな数学関数ではモデル化が困難です。 ただし、そのような複雑なトレンドの学習には大量のトレーニング データを必要とし、トレーニングと推測により多くの計算リソースを使用します。 このツールの使用には、GPU をお勧めします。

  • GPU を使用してこのツールを実行するには、プロセッサ タイプ環境を GPU に設定します。 複数の GPU が存在する場合は、代わりに GPU ID 環境を指定します。

  • このツールを使用して、一変量時系列と多変量時系列の両方をモデル化できます。 予測対象変数に関連する他の変数が時空間キューブにある場合、これらの変数を説明変数として含めることで予測を改善できます。

  • 一変量時系列予測はワンステップ手法のみを使用して予測されます。これは、デフォルトの手法でもあります。

  • 多変量時系列予測は、2 つの異なるアプローチ (ワンステップ予測と複数ステップ予測) で使用できます。 複数の説明トレーニング変数を選択すると、[複数ステップ] パラメーターがアクティブになります。

  • ワンステップ手法の実行中に、モデルは各時間ステップで新しいデータにより更新されるため、リアルタイム アプリケーションに最適です。 ただし、モデルは各時間ステップで更新されるため、予測内のエラーが時間経過とともに累積し、長期予測の精度が低くなる可能性があります。 複数ステップ予測を使用すると、モデルは現在の時間ステップを超える将来のデータ ポイントを複数予測します。 たとえば、次の 20 個の時間ステップを予測することを目標としている場合、モデルは連続する 20 個の予測を一度に生成します。 複数ステップ予測では、モデルはより大局的な時系列を考慮するため、長期的なトレンドとパターンをより効果的に取得できます。 モデルは将来の時間ステップを複数予測するため、エラーが累積する可能性が減り、長期予測の精度が高くなります。 ただし、モデルは複数のステップを一度に予測するため、データ内のリアルタイムの変化に対応する軽快さが失われる可能性があります。 この 2 つのアプローチのどちらを選択するかは、時系列予測タスクの特定の要件と特性によって決まります。

  • [シーケンス長] パラメーターは時系列予測モデルの結果に影響し、次回の時間ステップを予測する入力として使用する過去の時間ステップの数として定義できます。 シーケンス長が n の場合、モデルは次回の時間ステップを予測する入力として最後の n 個の時間ステップを使用します。 このパラメーター値は、検証時間ステップ数を除外した後に残った入力時間ステップの合計数よりも大きくすることはできません。

  • 時空間キューブの各ロケーションで独立した予測モデルを構築するのではなく、このツールは各ロケーションのトレーニング データを使用して単一のグローバル予測モデルをトレーニングします。 このグローバル モデルを使用して、[時系列モデルを使用した予測 (Forecast Using Time Series Model)] ツールによって各ロケーションの将来の値を予測します。

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

  • このツールの使用例には、過去の売上データに基づいて小売商品の需要を予測するためのモデルのトレーニング、病気のまん延を予測するためのモデルのトレーニング、過去の発電データと気象データに基づく風力発電量の予測などが挙げられます。

  • 検証で除外する時間ステップの数を決定することは重要なポイントです。 除外する時間ステップを増やすと、検証 RMSE を推定する時間ステップが少なくなってしまいます。 除外した時間ステップが少なすぎる場合、検証 RMSE は少ないデータ量を使用して推定を行うため、間違いやすくなります。 検証 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
出力モデル

トレーニング済みのモデルを保存する出力フォルダーの場所。 トレーニング済みモデルはディープ ラーニング パッケージ ファイル (.dlpk) として保存されます。

Folder
分析変数

将来の時間ステップについて予測される、データセット内の数値変数。

String
シーケンス長

モデルをトレーニングする際に使用する、以前の時間ステップの数。 データに季節性 (繰り返しサイクル) がある場合は、1 つの季節に対応する長さを入力します。

  • [複数ステップ] パラメーターがオフの場合、このパラメーターの値は、[検証で除外する時間ステップ数] パラメーター値を除外した後に残る入力時間ステップの合計数以下である必要があります。
  • [複数ステップ] パラメーターがオフの場合、[シーケンス長] の 1.5 倍の値は、[検証で除外する時間ステップ数] パラメーター値を除外した後の時間ステップの合計数以下である必要があります。

Long
説明トレーニング変数
(オプション)

モデルのトレーニングに使用される、データからの独立変数。 クラスまたはカテゴリを表す変数の場合に [カテゴリ] チェックボックスをオンにします。

Value Table
最大エポック
(オプション)

モデルをトレーニングする場合の対象となるエポックの最大数。 デフォルトは 20 です。

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

検証から除外される時間ステップ数。 値として 14 を指定すると、データ フレームの最後の 14 行が検証データとして使用されます。 デフォルトは合計時間ステップ数の 10 パーセントです。 理想的には、入力時空間キューブの合計時間ステップ数の 5 パーセント以上にします。

  • [複数ステップ] パラメーターがオフの場合、このパラメーター値は、入力時空間キューブにあるレコードの合計数の 25 パーセントより小さくする必要があります。
  • [複数ステップ] パラメーターがオンの場合、このパラメーター値は、[シーケンス長] パラメーター値の半分以下にする必要があります。

Long
モデル タイプ
(オプション)

モデルのトレーニングに使用されるモデル アーキテクチャを指定します。

  • InceptionTimeモデルのトレーニングに使用される InceptionTime アーキテクチャ。 これがデフォルトです。
  • ResNetモデルのトレーニングに使用される ResNet アーキテクチャ。
  • ResCNNモデルのトレーニングに使用される ResCNN アーキテクチャ。
  • FCNモデルのトレーニングに使用される FCN アーキテクチャ。
  • LSTMモデルのトレーニングに使用される LSTM アーキテクチャ。
  • TimeSeriesTransformerモデルのトレーニングに使用される TimeSeriesTransformer アーキテクチャ。
String
バッチ サイズ
(オプション)

1 回に処理されるサンプルの数。 デフォルトは 64 です。

コンピューターの GPU に応じて、この数字を 8、16、32、64 などに変更できます。

Long
モデル引数
(オプション)

各モデルに使用される追加のモデル引数。 これらの引数を使用して、モデルの複雑さとサイズを調整できます。 モデル アーキテクチャ、サポートされるモデル引数、それらのデフォルト値については、「時系列予測モデルの仕組み」をご参照ください。

Value Table
モデルの改善がなくなった時点でトレーニングを停止
(オプション)

5 回の連続エポックの後に検証ロスで改善が登録されない場合にモデルのトレーニングを停止するかどうかを指定します。

  • オン - 5 回の連続エポックの後に検証ロスで改善が登録されない場合にモデルのトレーニングを停止します。 これがデフォルトです。
  • オフ - 最大エポック数に到達するまでモデルのトレーニングを続行します。

Boolean
出力フィーチャクラス
(オプション)

時空間キューブ内のすべてのロケーションの出力フィーチャクラスで、予測される値がフィールドとして格納されます。 検証データセットのトレーニング済みモデルの予測を使用してフィーチャクラスが作成されます。 出力には最終的な時間ステップの予測が表示され、検証セットの時系列予測を示すポップアップ チャートが含まれます。

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

入力時空間キューブの値を含み、対応する検証時間ステップの予測値を置き換える出力時空間キューブ (.nc ファイル)。

File
複数ステップ
(オプション)

ワンステップまたは複数ステップのアプローチを多変量時系列予測モデルのトレーニングに使用するかどうかを指定します。

  • オン - モデルのトレーニングは、複数ステップのアプローチを使用します。
  • オフ - モデルのトレーニングは、従来のワンステップのアプローチを使用します。 これがデフォルトです。

Boolean

arcpy.geoai.TrainTimeSeriesForecastingModel(in_cube, out_model, analysis_variable, sequence_length, {explanatory_variables}, {max_epochs}, {validation_timesteps}, {model_type}, {batch_size}, {arguments}, {early_stopping}, {out_features}, {out_cube}, {multistep})
名前説明データ タイプ
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
out_model

トレーニング済みのモデルを保存する出力フォルダーの場所。 トレーニング済みモデルはディープ ラーニング パッケージ ファイル (.dlpk) として保存されます。

Folder
analysis_variable

将来の時間ステップについて予測される、データセット内の数値変数。

String
sequence_length

モデルをトレーニングする際に使用する、以前の時間ステップの数。 データに季節性 (繰り返しサイクル) がある場合は、1 つの季節に対応する長さを入力します。

  • multistep パラメーター値が False の場合、このパラメーターの値は、validation_timesteps パラメーター値を除外した後に残る入力時間ステップの合計数以下である必要があります。
  • multistep パラメーター値が True の場合、sequence_length の 1.5 倍の値は、validation_timesteps パラメーター値を除外した後の時間ステップの合計数以下である必要があります。

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

モデルのトレーニングに使用される、データからの独立変数。 クラスまたはカテゴリを表す変数の後に True 値を使用します。

Value Table
max_epochs
(オプション)

モデルをトレーニングする場合の対象となるエポックの最大数。 デフォルトは 20 です。

Long
validation_timesteps
(オプション)

検証から除外される時間ステップ数。 値として 14 を指定すると、データ フレームの最後の 14 行が検証データとして使用されます。 デフォルトは合計時間ステップ数の 10 パーセントです。 理想的には、入力時空間キューブの合計時間ステップ数の 5 パーセント以上にします。

  • multistep パラメーター値が False の場合、このパラメーター値は、入力時空間キューブにあるレコードの合計数の 25 パーセントより小さくする必要があります。
  • multistep パラメーターが True の場合、このパラメーター値は、sequence_length パラメーター値の半分以下にする必要があります。

Long
model_type
(オプション)

モデルのトレーニングに使用されるモデル アーキテクチャを指定します。

  • InceptionTimeモデルのトレーニングに使用される InceptionTime アーキテクチャ。 これがデフォルトです。
  • ResNetモデルのトレーニングに使用される ResNet アーキテクチャ。
  • ResCNNモデルのトレーニングに使用される ResCNN アーキテクチャ。
  • FCNモデルのトレーニングに使用される FCN アーキテクチャ。
  • LSTMモデルのトレーニングに使用される LSTM アーキテクチャ。
  • TimeSeriesTransformerモデルのトレーニングに使用される TimeSeriesTransformer アーキテクチャ。
String
batch_size
(オプション)

1 回に処理されるサンプルの数。 デフォルトは 64 です。

コンピューターの GPU に応じて、この数字を 8、16、32、64 などに変更できます。

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

各モデルに使用される追加のモデル引数。 これらの引数を使用して、モデルの複雑さとサイズを調整できます。 モデル アーキテクチャ、サポートされるモデル引数、それらのデフォルト値については、「時系列予測モデルの仕組み」をご参照ください。

Value Table
early_stopping
(オプション)

5 回の連続エポックの後に検証ロスで改善が登録されない場合にモデルのトレーニングを停止するかどうかを指定します。

  • TRUE5 回の連続エポックの後に検証ロスで改善が登録されない場合にモデルのトレーニングを停止します。 これがデフォルトです。
  • FALSE最大エポック数に到達するまでモデルのトレーニングを続行します。
Boolean
out_features
(オプション)

時空間キューブ内のすべてのロケーションの出力フィーチャクラスで、予測される値がフィールドとして格納されます。 検証データセットのトレーニング済みモデルの予測を使用してフィーチャクラスが作成されます。 出力には最終的な時間ステップの予測が表示され、検証セットの時系列予測を示すポップアップ チャートが含まれます。

Feature Class
out_cube
(オプション)

入力時空間キューブの値を含み、対応する検証時間ステップの予測値を置き換える出力時空間キューブ (.nc ファイル)。

File
multistep
(オプション)

ワンステップまたは複数ステップのアプローチを多変量時系列予測モデルのトレーニングに使用するかどうかを指定します。

  • TRUEモデルのトレーニングは、複数ステップのアプローチを使用します。
  • FALSEモデルのトレーニングは、従来のワンステップのアプローチを使用します。 これがデフォルトです。
Boolean

コードのサンプル

TrainTimeSeriesForecastingModel の例 (スタンドアロン スクリプト)

この例では、TrainTimeSeriesForecastingModel スクリプトを使用する方法を示します。

# Name: TrainTimeSeriesForecastingModel.py
# Description: Train a time series model on space-time cube data with
# different AI models.
  
# Import system modules                                                                                                                                                                                                                                                                                                                    
import arcpy
import os

# Set local variables
datapath  = "path_to_data_for_forecasting" 
out_path = "path_to_gdb_for_forecasting"

model_path = os.path.join(out_path, "model")
in_cube = os.path.join(datapath, "test_data")
out_features = os.path.join(out_path, "forecasted_feature.gdb", "forecasted")

# Run TrainTimeSeriesForecastingModel
arcpy.geoai.TrainTimeSeriesForecastingModel(
        in_cube,
        model_path,
        "CONSUMPTION",
        12,
        None,
        20,
        2,
        "InceptionTime",
        64,
        None,
        True,
        out_features
    )