基于森林的预测 (时空模式挖掘)

描述

使用 Leo Breiman 的随机森林算法的改编版本来预测时空立方体每个位置的未来值。使用时空立方体的每个位置上的时间窗口来对森林回归模型进行训练。

了解有关基于森林的预测工作原理的详细信息

插图

使用森林模型预测人口
预测时空立方体的未来值。

使用方法

  • 此工具接受通过聚合点创建时空立方体通过已定义要素创建时空立方体以及通过多维栅格图层创建时空立方体工具创建的 netCDF 文件

  • 时间序列预测工具集中的其他预测工具相比,此工具最复杂,但对数据的假设最少。对于其复杂的形状和趋势难以使用简单的数学函数进行建模的时间序列,或者在不满足其他方法的假设时,建议使用此方法。

  • 可以使用按位置评估预测工具来比较和合并多个预测的时空立方体。由此即可使用不同的预测工具和参数来创建多个预测立方体,并且该工具将使用“预测均方根误差 (RMSE)”或“验证 RMSE”值来识别每个位置的最佳预测。

  • 对于输入时空立方体中的每个位置,该工具会构建两个用于不同目的的模型。

    • 预测模型 - 通过使用时间序列的值构建森林并使用此森林预测未来时间步长的值,此模型用于预测时空立方体的未来值。预测模型与时空立方体的值的拟合度将通过“预测 RMSE”值进行度量。
    • 验证模型 - 此模型用于验证预测模型并测试其预测未来值的准确性。如果为为进行验证排除的时间步长数参数指定了大于 0 的数字,此模型将使用未排除的时间步长进行构建,并用于预测已排除的时间步长值。这将允许您查看森林可以预测未来值的程度。预测值与排除值的拟合度将通过“验证 RMSE”值进行度量。

    了解有关预测模型、验证模型和 RMSE 统计数据的详细信息

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

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

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

语法

ForestBasedForecast(in_cube, analysis_variable, output_features, {output_cube}, {number_of_time_steps_to_forecast}, {time_window}, {number_for_validation}, {number_of_trees}, {minimum_leaf_size}, {maximum_depth}, {sample_size}, {forecast_approach})
参数说明数据类型
in_cube

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

File
analysis_variable

netCDF 文件中的数值变量,用于预测未来时间步长。

String
output_features

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

Feature Class
output_cube
(可选)

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

File
number_of_time_steps_to_forecast
(可选)

正整数,用于指定预测时间步长数。此值不能大于输入时空立方体中的时间步长数的百分之五十。默认值为一个时间步长。

Long
time_window
(可选)

对森林进行训练时所要使用的先前时间步长数。如果您的数据显示季节性(重复周期),请为此参数提供与一个季节相对应的时间步长数。此值不能大于输入时空立方体中的时间步长数的三分之一。如果留空,则使用光谱密度函数为每个位置估计一个时间窗口。

Long
number_for_validation
(可选)

为进行验证,在每个时间序列末尾排除的时间步长数。默认值为输入时间步长的 10%(向下舍入),且该值不能大于时间步长的 25%。要不排除任何时间步长,请提供值 0。

Long
number_of_trees
(可选)

要在森林模型中创建的树的数量。增大树数通常将产生更加精确的模型预测,但是将增加模型计算的时间。默认树数为 100,并且该值必须至少为 1 并且不大于 1,000。

Long
minimum_leaf_size
(可选)

保留叶子(未进一步进行分割的树上的终端节点)所需的最小观测值数。对于非常大的数据,增大此数值将减少工具的运行时间。

Long
maximum_depth
(可选)

对树进行的最大分割数。如果使用较大的最大深度,则将创建更多分割,这可能会增大过度拟合模型的可能性。如果留空,则该工具将根据由模型创建的树数和时间步长窗口的大小确定一个值。

Long
sample_size
(可选)

将用于拟合预测模型的训练数据的百分比。训练数据由使用时间窗口构建的相关解释变量和因变量组成。其余所有的训练数据将用于优化预测模型的参数。默认值为 100%。

了解有关训练森林预测模型的详细信息

Long
forecast_approach
(可选)

指定在每个位置训练森林模型时将如何表示解释变量和因变量。

要训练将用于预测的森林,必须使用时间窗口创建一系列解释变量和因变量。使用此参数可指定是否会对这些变量进行线性去除趋势,以及因变量将由其原始值还是由线性回归模型的残差表示。该线性回归模型将时间窗口内的所有时间步长用作解释变量,并将以下时间步长用作因变量。通过从因变量的原始值中基于线性回归减去预测值来计算残差。

了解有关预测方法参数的详细信息

  • VALUE 时间窗口内的值不会被去除趋势,并且因变量将由其原始值表示。
  • VALUE_DETREND 时间窗口内的值被线性去除趋势,并且因变量将以其去除趋势的值表示。这是默认设置。
  • RESIDUAL 时间窗口内的值不会被去除趋势,并且将使用时间窗口内的值作为解释变量的线性回归模型的残差来表示因变量。
  • RESIDUAL_DETREND 时间窗口内的值被线性去除趋势,并且使用时间窗口内被去除趋势的值作为解释变量的线性回归模型的残差来表示因变量。
String

代码示例

ForestBasedForecast 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 ForestBasedForecast 工具:

import arcpy
arcpy.env.workspace = "C:/Analysis"
# Forecast four time steps using a random forest with detrending.
arcpy.stpm.ForestBasedForecast("CarTheft.nc","Cars_NONE_ZEROS", 
                               "Analysis.gdb/Forecasts", "outForecastCube.nc"
                               4, 3, 5, 100, "", "", 100, "VALUE_DETREND")
ForestBasedForecast 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 ForestBasedForecast 工具来预测汽车盗窃数量。

# Forecast car thefts using a random forest.
# Import system modules.
import arcpy
# Set property to overwrite existing output, by default.
arcpy.env.overwriteOutput = True
# Set workspace.
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace
# Forecast three time steps using a random forest based on change.
arcpy.stpm.ForestBasedForecast("CarTheft.nc","Cars_NONE_ZEROS", 
                               "Analysis.gdb/Forecasts", "outForecastCube.nc"
                               4, 3, 5, 100, "", "", 100, "CHANGE")
# Create a feature class visualizing the forecasts.
arcpy.stpm.VisualizeSpaceTimeCube3D("outForecastCube.nc", "Cars_NONE_ZEROS", 
                                    "VALUE", "Analysis.gdb/ForecastsFC")

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题