時系列予測モデルのトレーニング (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 ProPython の適切なディープ ラーニング フレームワーク パッケージをインストールする必要があります。

    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 の連続した予測を一度に生成します。 複数ステップ予測により、モデルは時系列をより大局的に考慮し、長期的な傾向とパターンをより効果的に得ることができます。 モデルは複数の時間ステップ先を予測するので、誤差が蓄積される可能性が低くなり、より正確な長期予測ができます。 ただし、モデルは、複数ステップを一度に予測するので、データのリアルタイムの変化に迅速に適応できない可能性があります。 いずれの予測方法を選択するかは、時系列予測タスクの特定の要件と特性によって異なります。

  • [シーケンス長] パラメーターは、時系列予測モデルの結果に影響し、次の時間ステップ予測の入力として使用する過去の時間ステップの数として定義できます。 シーケンス長が 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

派生した出力

ラベル説明データ タイプ
出力モデル ファイル

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

File

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

派生した出力

名前説明データ タイプ
out_model_file

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

File

コードのサンプル

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
    )

ライセンス情報

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

関連トピック