時系列予測モデルのトレーニング (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)] ツールによる将来の値の予測に使用できます。

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

使用法

  • 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 環境を指定します。

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

  • 時空間キューブの各ロケーションで独立した予測モデルを構築するのではなく、このツールでは各ロケーションのトレーニング データを使用して単一のグローバル予測モデルがトレーニングされます。 このグローバル モデルを使用して、[時系列モデルを使用した予測 (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 シーズンに対応する長さを入力します。 パラメーター値は、検証時間ステップ数を除外した後に残った合計入力時間ステップ数よりも大きくすることはできません。

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

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

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

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

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

検証から除外される時間ステップ数。 値として 14 を指定すると、データ フレームの最後の 14 行が検証データとして使用されます。 この値は、入力ステップ数の 25% より大きくできません。 デフォルトは 2 です。

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

モデルのトレーニングに使用されるモデル構造を指定します。

  • InceptionTime
  • ResNet
  • ResCNN
  • FCN
  • LSTM

デフォルト モデル タイプは InceptionTime です。

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

String
バッチ サイズ
(オプション)

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

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

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

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

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

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

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

  • オフ - 最大エポック数に到達するまでモデルのトレーニングを続行します。

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

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

Feature Class

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})
名前説明データ タイプ
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 シーズンに対応する長さを入力します。 パラメーター値は、検証時間ステップ数を除外した後に残った合計入力時間ステップ数よりも大きくすることはできません。

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

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

Value Table
max_epochs
(オプション)

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

Long
validation_timesteps
(オプション)

検証から除外される時間ステップ数。 値として 14 を指定すると、データ フレームの最後の 14 行が検証データとして使用されます。 この値は、入力ステップ数の 25% より大きくできません。 デフォルトは 2 です。

Long
model_type
(オプション)

モデルのトレーニングに使用されるモデル構造を指定します。

  • InceptionTime
  • ResNet
  • ResCNN
  • FCN
  • LSTM

デフォルト モデル タイプは InceptionTime です。

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

コードのサンプル

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
    )