使用时间序列模型进行预测 (GeoAI)

摘要

将使用基于深度学习的时间序列预测模型来预测时空立方体每个位置的值,该模型已使用训练时间序列预测模型工具进行训练。

使用情况

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

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

  • 输入是 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk),可使用训练时间序列预测模型工具进行创建。

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

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

  • 可使用异常值选项参数检测每个位置的时间序列值中具有统计意义的异常值。

    了解有关检测时间序列异常值的详细信息

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

  • 该工具将使用单一的全球预测模型,该模型已根据来自每个位置的时间序列数据进行训练。

  • 输出要素参数值将添加到内容窗格中,并基于保存的最佳模型预测时间步长进行渲染。

  • 该工具会创建地理处理消息和弹出图表,以用于了解和可视化预测结果。 这些消息将包含有关时空立方体结构以及 RMSE 值的汇总统计数据的信息。 可以使用浏览导航工具单击要素以在弹出窗格中显示一个折线图,图中会显示该时空立方体的值以及该位置的拟合值和预测值。

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

参数

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

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

File
模型定义

将用于进行预测的经过训练的深度学习模型文件(.dlpk.emd)。 该模型可以使用训练时间序列预测模型工具进行训练。

File
输出要素

时空立方体中所有位置的输出要素类,其中的预测值将存储为字段。 该图层将显示对最后的时间步长的预测,并包含弹出图表,其中显示了每个位置的时间序列和预测。

Feature Class
预测时间步长数

一个正整数,指定将用于预测分析变量的时间步长数。 默认值为 2。 对于单步预测,该值不能超过输入时空立方体中总时间步数的 50%;对于多步预测,该值不能超过训练时间序列预测模型工具中序列长度参数值的 50%。

Long
匹配解释变量
(可选)

字段名称从预测集到训练集的映射。 如果训练集和预测集的字段名称不同,请使用此参数。 值为预测数据集中与输入时间序列数据中的字段名称相匹配的字段名称。

Value Table
输出立方体
(可选)

输出时空立方体(.nc 文件),其中包含输入时空立方体的值,并追加了预测时间步长。 可视化 3D 时空立方体工具可用于同时查看所有观测值和预测值。

File
异常值选项
(可选)

指定是否将识别具有统计意义的时间序列异常值。

  • 不会识别异常值。 这是默认设置。
  • 识别异常值将使用广义 ESD 测试来识别异常值。
String
置信度级别
(可选)

指定将用于时间序列异常值测试的置信度。

  • 90%测试置信度将为 90%。 这是默认设置。
  • 95%测试置信度将为 95%。
  • 99%测试置信度将为 99%。
String
最大异常值数

每个位置可以声明为异常值的最大时间步数。 默认值对应于输入时空立方体的时间步数的 5%(向下舍入)(将始终使用至少为 1 的值)。 该值不能超过时间步数的 20%。

Long

arcpy.geoai.ForecastUsingTimeSeriesModel(in_cube, in_model_definition, out_features, number_of_timesteps_to_forecast, {match_explanatory_variables}, {out_cube}, {outlier_option}, {level_of_confidence}, maximum_number_of_outliers)
名称说明数据类型
in_cube

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

File
in_model_definition

将用于进行预测的经过训练的深度学习模型文件(.dlpk.emd)。 该模型可以使用训练时间序列预测模型工具进行训练。

File
out_features

时空立方体中所有位置的输出要素类,其中的预测值将存储为字段。 该图层将显示对最后的时间步长的预测,并包含弹出图表,其中显示了每个位置的时间序列和预测。

Feature Class
number_of_timesteps_to_forecast

一个正整数,指定将用于预测分析变量的时间步长数。 默认值为 2。 对于单步预测,该值不能超过输入时空立方体中总时间步数的 50%;对于多步预测,该值不能超过训练时间序列预测模型工具中 sequence_length 参数值的 50%。

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

字段名称从预测集到训练集的映射。 如果训练集和预测集的字段名称不同,请使用此参数。 值为预测数据集中与输入时间序列数据中的字段名称相匹配的字段名称。

Value Table
out_cube
(可选)

输出时空立方体(.nc 文件),其中包含输入时空立方体的值,并追加了预测时间步长。 可视化 3D 时空立方体工具可用于同时查看所有观测值和预测值。

File
outlier_option
(可选)

指定是否将识别具有统计意义的时间序列异常值。

  • NONE不会识别异常值。 这是默认设置。
  • IDENTIFY将使用广义 ESD 测试来识别异常值。
String
level_of_confidence
(可选)

指定将用于时间序列异常值测试的置信度。

  • 90%测试置信度将为 90%。 这是默认设置。
  • 95%测试置信度将为 95%。
  • 99%测试置信度将为 99%。
String
maximum_number_of_outliers

每个位置可以声明为异常值的最大时间步数。 默认值对应于输入时空立方体的时间步数的 5%(向下舍入)(将始终使用至少为 1 的值)。 该值不能超过时间步数的 20%。

Long

代码示例

ForecastUsingTimeSeriesModel 示例(独立脚本)

本示例介绍了如何使用 ForecastUsingTimeSeriesModel 函数。

# Description: Forecast a time series model on space-time cube data with the trained model 
#              obtained by the TrainTimeSeriesForecastingModel function.

# 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.dlpk")
in_cube = os.path.join(datapath, "test_data")
output_features = os.path.join(out_path, "forecasted_feature.gdb", "forecasted")

# Run Forecast Using Time Series Model 
r = arcpy.geoai.ForecastUsingTimeSeriesModel(
    in_cube,
    model_path,
    output_features,
    number_of_timesteps_to_forecast=2,
    match_explanatory_variables=None
)