基于森林的预测工具将使用基于森林的回归来预测时空立方体的未来时间片。主要输出是最终预测时间步长的地图以及信息性消息和弹出图表。您还可以创建一个新的时空立方体,其中包含来自原始立方体的数据以及追加的预测值。
当用于回归时,此工具将使用与基于森林的分类与回归工具相同的基础算法。系统将使用时空立方体每个位置上的时间窗来构造用于构建森林回归模型的训练数据。
潜在的应用
森林回归模型很少对数据作出假设,因此在许多情况下都可以使用这种模型。当数据具有复杂的趋势或季节时,或数据以不同于常见数学函数(例如多项式、指数曲线或正弦波)的方式变化时,相比其他预测方法,该模型更为有效。
例如,您可以在以下应用程序中使用此工具:
- 学区可以使用此工具来预测该学区中每所学校在接下来的一周中每天缺席的学生人数。
- 公共设施管理者可以使用此工具来预测其行政区域内的社区下个月的供电和供水需求。
- 零售店可以使用此工具来预测单个产品的售罄时间,以便更好地管理库存。
预测和验证
该工具在预测每个时间序列时均会构建两个模型。第一个是预测模型,用于预测未来时间步长的值。第二个是验证模型,用于验证预测值。
预测模型
预测模型将通过构建具有时空立方体每个位置的时间序列值的森林来进行构造。随后即可将该森林用于预测下一个时间片。系统会将新时间步长的预测值包括在森林模型中,然后预测下一个时间步长。此递归过程将针对所有未来时间步长继续进行。森林对每个时间序列的拟合度均会通过预测均方根误差 (RMSE) 进行测量,该均方根误差等于森林模型与时间序列值之间的均方差的平方根。
,其中 T 为时间步长数,ct 为森林模型的值,而 rt 为时间 t 处时间序列的原始值。
下图显示了时间序列的原始值和拟合至该时间序列的森林模型,以及对两个未来时间步长的预测。预测 RMSE 将测量森林中的拟合值与原始时间序列值之间的差异程度。
预测 RMSE 仅会测量森林模型对原始时间序列值的拟合程度。它无法测量预测模型对未来值的实际预测程度。常见的情况是,森林模型会紧密拟合时间序列,但在外推时无法提供准确的预测。验证模型可解决此问题。
验证模型
验证模型用于确定预测模型对每个时间序列的未来值的预测程度。该模型需通过排除每个时间序列的部分最终时间步长并将森林模型拟合到未排除的数据来进行构造。随后即可将该森林模型用于预测所保留数据的值,并将预测值与隐藏的原始值进行比较。默认情况下,系统将保留 10% 的时间步长用于验证,但是可以使用为进行验证排除的时间步长数参数来更改此数字。所排除的时间步长数不能超过时间步长数的 25%,且如果将其指定为 0,则系统将不执行任何验证。预测的精度需通过计算验证 RMSE 统计数据来进行测量,该统计数据等于所排除时间步长的预测值与原始值之间的均方差的平方根。
,其中 T 为时间步长数,m 是为验证保留的时间步长数,ct 为根据前 T-m 个时间步长预测的值,而 rt 是为在时间 t 处验证保留的时间序列的原始值。
下图显示了拟合至时间序列前半部分,然后用于预测时间序列后半部分的森林模型。验证 RMSE 将测量所保留时间步长处的预测值与原始值之间的差异程度。
验证模型十分重要,因为它可以直接将预测值与原始值进行比较,以衡量森林的预测能力。尽管它实际上并不用于预测,但可将其用于证明预测模型的合理性。
注:
时间序列预测中的验证与名为交叉验证的常用技术相似但不相同。两者的不同之处在于,预测验证始终排除用于验证的最终时间步长,而交叉验证要么排除数据的随机子集,要么按顺序排除每个值。
解释
在解释“预测 RMSE”和“验证 RMSE”值时,需要牢记一些注意事项。
- RMSE 值之间无法直接进行比较,因为它们测量的是不同的事物。预测 RMSE 测量的是森林模型对原始时间序列值的拟合度,而验证 RMSE 测量的是森林模型对未来值的预测能力。因为“预测 RMSE”使用的数据更多且不进行外推,所以它通常比“验证 RMSE”要小。
- 两种 RMSE 值均采用数据的单位。例如,如果您的数据是以摄氏度为单位的温度测量值,则验证 RMSE 50 将是非常高的值,因为这意味着预测值与真值平均相差大约 50 度。但是,如果您的数据是一家大型零售商店的日收入(以美元为单位),则相同的验证 RMSE 50 将会是很小的值,因为这意味着所预测日收入平均每天与真值的差仅为 50 美元。
构建和训练森林模型
要预测未来值,必须通过将解释变量与每个位置的因变量相关联来训练森林模型。森林模型需要重复的训练数据,但针对每个位置只有一个时间序列。要在单个时间序列中创建多组解释变量和因变量,系统需要构造时间窗,其中每个时间窗内的时间步长均用作解释变量,且时间窗之后的下一个时间步长将为因变量。例如,如果某个位置处有 20 个时间步长,而时间窗为 5 个时间步长,则系统会使用 15 组解释变量和因变量在该位置训练森林。第一组会将时间步长 1、2、3、4 和 5 作为解释变量,并将时间步长 6 作为因变量。第二组会将时间步长 2、3、4、5 和 6 作为解释变量,并将时间步长 7 作为因变量。最后一组会将时间步长 15、16、17、18 和 19 作为解释变量,并将时间步长 20 作为因变量。可以使用时间步长窗口参数来指定每个时间窗内的时间步长数。时间窗可以小到 1(从而使每个时间窗内只有一个时间步长),且不能超过该位置时间步长数的三分之一。
使用训练森林模型时,该位置的最终时间步长将用作解释变量,以预测第一个未来时间步长。随后,系统将使用时间窗中先前的时间步长来预测第二个未来时间步长,这些先前时间步长中有一个将是第一个预测值。第三个预测时间步长同样使用窗口中先前的时间步长,其中有两个时间步长是先前的预测时间步长。此过程将针对所有未来时间步长继续进行。
下图显示了用于训练森林模型和预测前七个未来时间步长的解释变量和因变量集:
季节性和选择时间窗
对森林模型而言,每个时间步长窗口内的时间步长数都是一个重要的选择。其中一个主要的考虑因素就是时间序列是否能够显示季节性(自然周期性模式针对一定数量的时间步长重复)。例如,温度将根据一年中的季节显示每年的季节周期。因为时间窗用于构建相关的解释变量和因变量,所以当这些解释变量全部来自同一季节周期时,最有效的做法是尽可能地缩小解释变量之间的季节相关性。建议您将自然季节中的时间步长数用于时间步长窗口的长度。如果您的数据可显示多个季节,建议您使用最长季节的长度。
如果您知道数据中与一个季节相对应的时间步长数,则可以在时间步长窗口参数中将其指定,随后该值将会被时空立方体中的每个位置使用。如果您不知道季节的长度,或如果不同位置的季节长度不同,则可以将该参数值留空,并使用频谱密度函数为每个位置估计最佳季节长度。有关此函数的详细信息,请参阅其他资源部分。
对于单个位置,如果通过频谱分析确定的最佳季节长度大于一且不大于该位置处时间步长数的三分之一,则时间步长窗口将被设置为该最佳值。否则,该位置将为时间步长窗口使用该位置处时间步长数的 25%(向下舍入)。这将确保窗口中至少有一个时间步长,且至少使用三个完整季节周期作为解释变量。该位置处使用的时间步长值将保存在输出要素的 Time Window 字段中。如果使用频谱分析确定了时间步长窗口,则输出要素的 Is Seasonal 字段将包含值 1,否则将包含 0。下图是对此工作流的汇总:
预测方法
您可使用四种方法来表示将用于训练森林的解释变量和因变量的值。这些选项将使用预测方法参数进行指定。
第一个选项是按值构建模型。此选项会将时空立方图格中的原始值用于解释变量和因变量。选择此选项后,预测值将包含在因变量的范围内,因此如果您预计数据中存在预测未来时该值将继续增加或减少的趋势,则不应使用此选项。下图显示了用于针对单个位置训练模型的变量集,其中的每一行都将显示解释变量集和相关的因变量。T 为时空立方体中的时间步长数,W 为每个时间步长窗口中的时间步长数,而 Xt 为时间 t 处时间序列的原始值。
第二个选项是去除趋势后按值构建模型。此为工具的默认选项。此选项将针对每个位置处的整个时间序列执行一阶(线性)趋势移除,并将这些去趋势值用作解释变量和因变量。使用此选项可以使预测按照该趋势估计未来情况,从而可以在因变量范围之外估计预测值。下图显示了用于针对单个位置训练模型的变量集,其中的每一行都将显示解释变量集和相关的因变量。T 为时空立方体中的时间步长数,W 为每个时间步长窗口中的时间步长数,而 Dt 为时间 t 处时间序列的去趋势值。
第三个选项是按残差构建模型。此选项将创建普通最小二乘法 (OLS) 回归模型,以基于每个时间窗内的解释变量来预测因变量。该回归模型的残差(OLS 预测与因变量原始值之间的差)用于表示训练森林时的因变量。下图显示了用于针对单个位置训练模型的变量集,其中的每一行都将显示解释变量集和相关的因变量。T 为时空立方体中的时间步长数,W 为每个时间步长窗口中的时间步长数,Xt 为时间 t 处的时间序列值,而 X^t (Xt-hat) 是在时间 t 处根据 OLS 估算出的值。
最后一个选项是去除趋势后按残差构建模型。此选项首先会针对某个位置处的整个时间序列执行一阶(线性)趋势移除。然后,该选项将构建 OLS 回归模型,以便根据每个时间窗内的去趋势解释变量来预测去趋势因变量。该回归模型的残差(OLS 预测与因变量去趋势值之间的差)用于表示训练森林时的因变量。下图显示了用于针对单个位置训练模型的变量集,其中的每一行都将显示解释变量集和相关的因变量。T 为时空立方体中的时间步长数,W 为每个时间步长窗口中的时间步长数,Dt 为时间 t 处的时间序列去趋势值,而 D^t (Dt-hat) 是在时间 t 处根据 OLS 估算出的值。
构造置信区间
该工具将为每个预测时间步长计算 90% 的置信区间,这些置信区间将作为字段显示在输出要素中,并显示在下一部分中将要讨论的弹出图表中。第一个预测时间步长的置信区间的上限和下限将使用分位数随机森林回归进行计算。为了预测未来时间值,需要对一棵树的每个叶片中的观测值进行平均。但是,分位数回归中将使用每个叶片中的每个观测值,从而生成第一个时间步长的预测值分布。90% 的置信区间将使用此分布的第 5 个和第 95 个分位数进行构造。
计算第二个预测置信区间的方式与此十分相似,但要在考虑到第一个预测置信区间的前提下对其进行调整。再次使用分位数回归为第二个预测时间步长创建分布,同时将第一个预测时间步长视为奇异值,并计算该分布的第 5 个和第 95 个分位数。通过将两个预测的置信界限的长度相加,可以计算出第二个预测的实际置信度。第二个预测的上限等于第一个预测的上限长度加上第二个预测的置信度上限长度(计算是在假设第一个预测为单个值而非分布的情况下进行的)。计算下限的方法与此十分相似,方法是将置信度下限的长度相加。通过再次执行分位数回归并为全部三个预测添加误差范围的长度,可以计算出第三个预测时间步长的置信区间。该过程将继续进行,直到预测出所有时间步长为止。以这种方式添加上述误差范围可确保误差通过投影向前传播,并确保置信带的长度会随着时间的推移而增加。
注:
通过添加先前预测的误差,可以保守地计算出第二个及以后的时间步长的置信界限。这些置信区间的实际置信度至少为 90%,但实际上它们的置信度可能更高。
工具输出
此工具的主要输出为 2D 要素类,其中显示了使用存储为字段的所有其他时间步长的预测,按最终预测时间步长符号化的输入时空立方体中的每个位置。虽然会独立预测每个位置,并且未考虑空间关系,但是对于具有类似时间序列的区域,地图可能会显示空间模式。
弹出图表
使用浏览导航工具单击地图上的任何要素将在弹出窗口窗格中显示一个图表,其中显示了时空立方体的值、拟合的森林模型和预测值以及每个预测的 90% 置信区间。时空立方体的值将显示为蓝色,并通过蓝线进行连接。拟合的值将显示为橙色,并通过橙色虚线进行连接。预测的值将显示为橙色,并通过表示森林模型预测的橙色实线进行连接。每个预测值周围都将绘制出浅红色的置信界限。可以将鼠标悬停在图表中的任何点上,以查看该点的日期和值。
注:
将输出要素另存为 shapefile (.shp) 时,将不会创建弹出图表。此外,如果置信区间超出了图表范围,则图表上方将显示显示完整数据范围按钮,您可以通过该按钮来扩展图表范围以显示整个置信区间。
地理处理消息
此工具将提供许多消息,其中包含有关工具执行的信息。消息具有三个主要部分。
输入时空立方体详细信息部分将显示输入时空立方体的属性以及有关时间步长数、位置数和时空立方图格数的信息。在第一部分中显示的属性取决于最初创建立方体的方式,因此该信息因立方体的不同而有所不同。
分析详细信息部分将显示预测结果的属性,其中包括预测的时间步长数、针对验证排除的时间步长数、通过频谱分析检测到季节性的位置的百分比以及有关预测的时间步长的信息。如果没有为时间步长窗口参数提供值,则系统将显示所估计时间步长窗口的汇总统计数据,其中包括最小值、最大值、平均值、中值和标准差。
各位置的精度汇总部分将显示所有位置之间的“预测 RMSE”和“验证 RMSE”的汇总统计数据。对于每个值,将显示最小值、最大值、平均值、中值和标准差。
输出要素的字段
除了对象 ID、几何字段以及包含弹出图表的字段之外,输出要素将具有以下字段:
- 位置 ID (LOCATION) - 时空立方体相应位置的位置 ID。
- (时间步长)中(分析变量)的预测(FCAST_1、FCAST_2,依此类推)- 每个未来时间步长的预测值。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- (时间步长)中(分析变量)的高区间(HIGH_1、HIGH_2,依此类推)- 每个未来时间步长预测值的 90% 置信区间上限。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- (时间步长)中(分析变量)的低区间(LOW_1、LOW_2,依此类推)- 每个未来时间步长预测值的 90% 置信区间下限。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- 预测均方根误差 (F_RMSE) - 预测 RMSE。
- 验证均方根误差 (V_RMSE) - 验证 RMSE。如果未针对验证排除任何时间步长,则不会创建此字段。
- 时间窗 (TIMEWINDOW) - 在该位置使用的时间步长窗口。
- 为季节性 (IS_SEASON) - 布尔变量,用于指示该位置处的时间步长窗口是否由频谱密度确定。值 1 表示已通过频谱密度检测到季节性,值 0 则表示未检测到季节性。如果在时间窗参数中指定了一个值,则所有位置在此字段中的值均为 0。
- 预测方法 (METHOD) - 一个用于显示森林模型参数的文本字段,这些参数包括随机种子、树数量、采样大小、预测方法以及时间步长窗口是由用户指定还是通过工具确定。此字段可用于重新生成结果,从而使您可以确定按位置评估预测工具中使用了哪些模型。
输出时空立方体
如果指定输出时空立方体,则输出立方体将包含输入时空立方体中的所有原始值以及附加的预测值。可以使用在 2D 模式下显示时空立方体或在 3D 模式下显示时空立方体工具显示此新的时空立方体,并且可以将其用作时空模式挖掘工具箱中相应工具(例如新兴热点分析和时间序列聚类)的输入。
可以使用按位置评估预测工具来比较和合并多个预测的时空立方体。由此即可使用不同的预测工具和参数来创建多个预测立方体,并且该工具可以使用“预测 RMSE”或“验证 RMSE”为每个位置标识最佳预测。
最佳做法和限制
在确定此工具是否适合您的数据以及应该选择的参数时,应考虑以下几点:
- 与时间序列预测工具集中的其他预测工具相比,此工具更为复杂,但对数据作出的假设最少。对于形状和趋势复杂且难以用简单或平滑数学函数进行建模的时间序列,建议使用此工具。当不满足其他方法的假设条件时,也建议使用此工具。
- 确定针对验证排除的时间步长数量非常重要。排除的时间步长越多,则用于评估验证模型的时间步长越少。但是,如果排除的时间步长过少,则将使用少量数据来评估“验证 RMSE”,并且可能会产生误导。建议您排除尽可能多的时间步长,同时仍保持足够的时间步长来估计验证模型。此外,建议您针对验证至少保留与要预测的时间步长数量相同的时间步长(如果时空立方体具有足够的时间步长以允许执行此操作)。
- 当时间序列中多次重复相同值时,此工具可能会生成不稳定和不可靠的预测。重复相同值的常见来源为零膨胀,其中数据表示计数,且许多时间步长值均为 0。
其他资源
有关森林模型的详细信息,请参阅以下参考:
- Breiman, Leo. (2001). "Random Forests." Machine Learning 45 (1): 5-32. https://doi.org/10.1023/A:1010933404324.
- Breiman, L., J.H. Friedman, R.A. Olshen, and C.J. Stone. (2017). Classification and regression trees. New York: Routledge. Chapter 4.
有关森林模型的其他资源和参考资料,请参阅基于森林分类和回归工作原理。
有关用于估计时间窗长度的频谱密度函数的详细信息,请参阅以下参考资料中的 findfrequency 函数:
- Hyndman R, Athanasopoulos G, Bergmeir C, Caceres G, Chhay L, O'Hara-Wild M, Petropoulos F, Razbash S, Wang E, and Yasmeen F (2019). "Forecasting functions for time series and linear models." R package version 8.7, https://pkg.robjhyndman.com/forecast.
- Hyndman RJ and Khandakar Y (2008). "Automatic time series forecasting: the forecast package for R." Journal of Statistical Software, 26(3), pp. 1-22. https://www.jstatsoft.org/article/view/v027i03.
有关根据森林回归模型构造置信区间的详细信息,请参阅以下参考资料:
- Meinshausen, Nicolai. "Quantile regression forests." Journal of Machine Learning Research 7. Jun (2006): 983-999.