训练时间序列预测模型 (GeoAI)

摘要

将使用来自时空立方体的时间序列数据来训练基于深度学习的时间序列预测模型。 借助使用时间序列模型进行预测工具,可以使用经过训练的模型来预测时空立方体每个位置的值。

时间序列数据可以遵循各种趋势并具有多个级别的季节性。 基于统计方法的传统时间序列预测模型表现将有所不同,具体取决于数据中的趋势和季节性模式。 如果存在足够多的训练数据,则基于深度学习的模型将具有较高的学习能力,并且可以跨不同类型的时间序列来提供结果。

该工具将使用各种基于深度学习的模型(例如全连接网络 (FCN)、长短期记忆 (LSTM)、InceptionTime、ResNet 和 ResCNN)来训练时间序列预测模型。 这些模型支持多变量时间序列,其中模型将从多个时间因变量中学习以预测未来值。 经过训练的模型将另存为深度学习包文件 (.dlpk),借助使用时间序列模型进行预测工具,可用于预测未来值。

了解有关“时间序列预测模型”工作原理的详细信息

使用情况

  • 您必须在 AllSource 中为 Python 安装适当的深度学习框架。

    了解如何安装 ArcGIS 的深度学习框架

  • 此工具接受通过聚合点创建时空立方体通过已定义位置创建时空立方体以及通过多维栅格图层创建时空立方体子集时空立方体工具创建的 netCDF 数据

  • 时间序列预测工具集中的其他预测工具相比,该工具将使用基于深度学习的时间序列预测模型。 深度学习模型具有很高的学习能力,适用于遵循复杂趋势并且难以使用简单的数学函数进行建模的时间序列。 然而,它们需要更大量的训练数据来学习此类复杂趋势,并使用更多的计算资源进行训练和推断。 建议使用 GPU 来运行此工具。

  • 要使用 GPU 运行此工具,请将处理器类型环境设置为 GPU。 如果您具有多个 GPU,还可以指定 GPU ID 环境。

  • 该工具可用于建模单变量和多变量时间序列。 如果时空立方体还具有其他变量,这些变量与进行预测的变量相关,则可以将其作为解释变量包含在内,以改进预测。

  • 此工具将使用来自每个位置的训练数据来训练单个全局预测模型,而非在时空立方体的每个位置位构建独立预测模型。 借助使用时间序列模型进行预测工具,该全局模型将用于预测每个位置的未来值。

  • 输出要素参数值将添加到基于最终预测时间步进行渲染的内容窗格中。

  • 此工具的用例包括训练模型以根据历史销售数据预测零售产品的需求、训练模型以预测疾病传播,或者根据历史生产和天气数据预测风力发电。

  • 确定针对验证排除的时间步长数是一项重要选择。 排除的时间步长越多,则将用于评估验证 RMSE 的时间步长越少。 如果排除的时间步长过少,则将使用少量数据来评估验证 RMSE,并且可能会产生误导。 请排除尽可能多的时间步长,同时保持足够的时间步长来估计验证 RMSE。 如果时空立方体具有足够的时间步长来支持此操作,请至少保留与预测时间步长相同数量的验证时间步长。

  • 有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题解答

参数

标注说明数据类型
输入时间序列数据

netCDF 立方体包含将用于预测未来时间步长的变量。 此文件必须具有 .nc 文件扩展名,并且必须使用通过聚合点创建时空立方体通过已定义位置创建时空立方体通过多维栅格图层创建时空立方体工具进行创建。

File
输出模型

将存储经训练模型的输出文件夹位置。 将另存为深度学习包文件 (.dlpk) 的训练模型。

Folder
分析变量

数据集中的数值变量,用于预测未来时间步长。

String
序列长度

对模型进行训练时将要使用的先前时间步长数。 如果数据包含季节性(重复周期),请提供对应于一个季节的长度。 该参数值不能大于排除验证时间步长后剩余的输入时间步长总数。

Long
解释训练变量
(可选)

来自将用于训练模型的数据的自变量。 对于任何表示类或类别的变量,请选中分类复选框。

Value Table
最大轮数
(可选)

应用于将训练模型的最大轮数。 默认值为 20。

Long
要排除验证的时间步长数
(可选)

将排除验证的时间步长数。 如果指定值 14,则数据框中的最后 14 行将用作验证数据。 该值不能大于输入时间步长数的 25%。 默认值为 2。

Long
模型类型
(可选)

指定将用于训练模型的模型架构。

  • InceptionTime
  • ResNet
  • ResCNN
  • FCN
  • LSTM

默认模型类型为 InceptionTime

了解有关“时间序列预测模型”工作原理的详细信息

String
批大小
(可选)

一次需要处理的样本数。 默认值为 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 文件扩展名,并且必须使用通过聚合点创建时空立方体通过已定义位置创建时空立方体通过多维栅格图层创建时空立方体工具进行创建。

File
out_model

将存储经训练模型的输出文件夹位置。 将另存为深度学习包文件 (.dlpk) 的训练模型。

Folder
analysis_variable

数据集中的数值变量,用于预测未来时间步长。

String
sequence_length

对模型进行训练时将要使用的先前时间步长数。 如果数据包含季节性(重复周期),请提供对应于一个季节的长度。 该参数值不能大于排除验证时间步长后剩余的输入时间步长总数。

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
(可选)

一次需要处理的样本数。 默认值为 64。

根据计算机的 GPU,可将此数值更改为 8、16、32、64 等。

Long
arguments
[arguments,...]
(可选)

将特定于每个模型使用的其他模型参数。 这些参数可用于调整模型的复杂度和大小。 请参阅时间序列预测模型的工作原理以了解模型架构、受支持的模型参数及其默认值。

Value Table
early_stopping
(可选)

指定当验证损失在连续 5 轮后未改善时,模型训练是否将停止。

  • TRUE当验证损失在连续 5 轮后未改善时,模型训练将停止。 这是默认设置。
  • 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
    )