标注 | 说明 | 数据类型 |
输入时间序列数据 | 包含将用于预测未来时间步长的变量的 netCDF 立方体。 此文件必须具有 .nc 文件扩展名,并且必须使用通过聚合点创建时空立方体、通过已定义要素创建时空立方体或通过多维栅格图层创建时空立方体工具进行创建。 | File |
输出模型 | 将存储经训练模型的输出文件夹位置。 训练模型将保存为深度学习模型文件 (.dlpk)。 | Folder |
分析变量 | 数据集中将被预测到未来时间步长的数值变量。 | String |
序列长度: | 在训练模型时将使用的先前时间步长数。 如果数据包含季节性(重复周期),请提供与一个季节对应的长度。
| Long |
解释训练变量 (可选) | 来自将用于训练模型的数据的独立变量。 对于任何表示类或类别的变量,请选中分类复选框。 | Value Table |
最大新纪元 (可选) | 应用于将训练模型的最大新纪元数。 默认值为 20。 | Long |
为进行验证排除的时间步长数 (可选) | 为进行验证而排除的时间步长数。 例如,如果指定了值 14,则数据框中的最后 14 行将用作验证数据。 默认值为总时间步长数的 10%。 理想情况下,它不应少于输入时空立方体中总时间步长数的 5%。
| Long |
模型类型 (可选) | 指定将用于训练模型的模型架构。
| String |
批量大小 (可选) | 一次需要处理的样本数。 默认值为 64。 根据计算机 GPU,可以将此数值更改为 8、16、32、64 等。 | Long |
模型参数 (可选) | 将用于每个模型的其他特定模型参数。 这些参数可用于调整模型的复杂性和大小。 有关模型架构、支持的模型参数及其默认值,请参阅时间序列预测模型的工作原理。 | Value Table |
当模型不再改进时停止训练 (可选) | 指定当模型验证损失在连续五个新纪元中没有改进时,是否停止训练。
| Boolean |
输出要素类 (可选) | 时空立方体中所有位置的包含了预测值的输出要素类将存储为字段。 要素类将使用在验证数据集上训练的模型进行创建。 输出显示了最后时间步长的预测结果,并包含了在验证集上的时间序列预测的弹出图表。 | Feature Class |
输出立方体 (可选) | 输出时空立方体(.nc 文件),包含输入时空立方体的值,并已替换相应验证时间步长的预测值。 | File |
多步 (可选) | 指定是否使用单步或多步方法来训练多变量时间序列预测模型。
| Boolean |
摘要
使用时空立方体中的时间序列数据训练基于深度学习的时间序列预测模型。 通过使用时间序列模型预测工具,可以使用经过训练的模型预测时空立方体每个位置的值。
时间序列数据可以遵循多种趋势并具有多个季节性等级。 根据数据中季节性的趋势和模式,基于统计方法的传统时间序列预测模型表现有所不同。 基于深度学习的模型具有很强的学习能力,可以在不同类型的时间序列中提供结果,前提是有足够的训练数据。
该工具使用各种基于深度学习的模型(如完全连接网络 (FCN)、长短期记忆 (LSTM)、InceptionTime、ResNet 和 ResCNN)训练时间序列预测模型。 这些模型支持多变量时间序列,模型从多个时间相关变量中学习以预测未来值。 训练得到的模型将保存为深度学习模型文件 (.dlpk) 并可通过使用时间序列模型预测工具来预测未来值。
使用情况
必须为 ArcGIS AllSource 中的 Python 安装适当的深度学习框架。
该工具接受由通过聚合点创建时空立方体、通过已定义位置创建时空立方体、通过多维栅格图层创建时空立方体和子集化时空立方体工具创建的 netCDF 数据。
与时间序列预测工具集中的其他预测工具相比,该工具使用基于深度学习的时间序列预测模型。 深度学习模型具有很强的学习能力,适用于遵循复杂趋势且难以用简单数学函数建模的时间序列。 但是,它们需要更多的训练数据来学习这些复杂趋势,并且在训练和推断过程中需要使用更多的计算资源。 使用 GPU 可以提高工具的性能。
-
要使用 GPU 运行此工具,需将处理器类型环境设置为 GPU。 如果您具有多个 GPU,则改为指定 GPU ID 环境。
该工具可用于建模单变量和多变量时间序列。 如果时空立方体中存在其他与预测变量相关的变量,可以将它们作为解释变量包括在内以改善预测结果。
单变量时间序列预测仅需单步方法进行估计,此方法为默认方法。
多变量时间序列预测可使用两种不同的方法,即单步预测和多步预测。 当选择多个解释训练变量时,多步参数将变为活动状态。
在单步方法中,模型可以在每个时间步长使用用新数据进行更新,使其适合实时应用。 然而,由于模型在每个时间步长都会更新,预测误差会随着时间的推移而累积,导致长期预测不太准确。 当选择多步预测时,该模型会预测当前时间步长之后的多个未来数据点。 例如,如果目标是预测未来的 20 个时间步长,则该模型将一次生成 20 个连续的预测。 通过多步预测,模型可以更有效地捕捉时间序列的长期趋势和模式。 由于模型预测多个时间步长,误差积累的可能性降低,从而可以得到更准确的长期预测。 然而,由于模型一次性预测多个时间步长,它可能无法灵活适应数据的实时变化。 如何在这两种方法之间进行选择,取决于时间序列预测任务的具体要求和特性。
序列长度参数会影响时间序列预测模型的结果,可以定义为使用过去多少个时间步长作为输入来预测下一个时间步长。 如果序列长度为 n,则模型将使用最后 n 个时间步长作为输入来预测下一个时间步长。 参数值不能大于在排除验证时间步长后剩余的输入时间步长总数。
与在时空立方体的每个位置构建独立预测模型不同,该工具训练一个单一的全局预测模型,使用每个位置的训练数据。 在使用使用时间序列模型预测工具预测每个位置的未来值时,将使用此全局模型。
将在内容栏中添加输出要素参数值,并根据最终预测的时间步长进行渲染。
该工具的用例包括基于历史销售数据预测零售产品需求、预测疾病传播,或基于历史生产和天气数据预测风力发电。
确定针对验证排除的时间步长数量非常重要。 排除的时间步长越多,用于估计验证 RMSE 的时间步长就越少。 如果排除的时间步长过少,则将使用少量数据来评估验证 RMSE,并且可能会产生误导。 排除尽可能多的时间步长,同时仍保持足够的时间步长来估计验证模型。 针对验证至少保留与要预测的时间步长数量相同的时间步长(如果时空立方体具有足够的时间步长以允许执行此操作)。
有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题解答。
参数
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 文件扩展名,并且必须使用通过聚合点创建时空立方体、通过已定义要素创建时空立方体或通过多维栅格图层创建时空立方体工具进行创建。 | 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 行将用作验证数据。 默认值为总时间步长数的 10%。 理想情况下,它不应少于输入时空立方体中总时间步长数的 5%。
| Long |
model_type (可选) | 指定将用于训练模型的模型架构。
| String |
batch_size (可选) | 一次需要处理的样本数。 默认值为 64。 根据计算机 GPU,可以将此数值更改为 8、16、32、64 等。 | Long |
arguments [arguments,...] (可选) | 将用于每个模型的其他特定模型参数。 这些参数可用于调整模型的复杂性和大小。 有关模型架构、支持的模型参数及其默认值,请参阅时间序列预测模型的工作原理。 | Value Table |
early_stopping (可选) | 指定当模型验证损失在连续五个新纪元中没有改进时,是否停止训练。
| Boolean |
out_features (可选) | 时空立方体中所有位置的包含了预测值的输出要素类将存储为字段。 要素类将使用在验证数据集上训练的模型进行创建。 输出显示了最后时间步长的预测结果,并包含了在验证集上的时间序列预测的弹出图表。 | Feature Class |
out_cube (可选) | 输出时空立方体(.nc 文件),包含输入时空立方体的值,并已替换相应验证时间步长的预测值。 | File |
multistep (可选) | 指定是否使用单步或多步方法来训练多变量时间序列预测模型。
| Boolean |
代码示例
此示例展示了如何使用 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
)