随机森林回归和趋势时间序列

机器算法验证 时间序列 随机森林 趋势
2022-03-18 15:19:24

我正在使用具有确定性线性趋势的单变量时间序列将随机森林模型与 GLS 模型进行比较。我将在 GLS 模型中添加一个线性时间趋势协变量(以及其他预测变量)来解释变化的趋势。为了在我的比较中保持一致,我也希望将此预测器添加到随机森林回归模型中。我一直在寻找有关此主题的文献,但找不到太多。

有谁知道出于任何原因在随机森林回归中添加这种类型的预测器是否不合适?随机森林回归已经包含了时间滞后变量来解释自相关。

2个回答

当然,RF 可以识别和建模数据中的长期趋势。但是,当您尝试预测从未见过的值时,问题会变得更加复杂,因为您经常尝试使用时间序列数据。例如,如果看到活动在 1915 年至 2015 年期间呈线性增长,您会预计它在未来会继续这样做。然而,RF 不会做出这样的预测。它将预测所有未来变量的活动与 2015 年相同。

from sklearn import ensemble
import numpy as np
years = np.arange(1916, 2016)
#the final year in the training data set is 2015
years = [[x] for x in years]
print 'Final year is %s ' %years[-1][0]
#say your ts goes up by 1 each year - a perfect linear trend
ts = np.arange(1,101)
est = ensemble.RandomForestClassifier().fit(years,ts)
print est.predict([[2013], [2014], [2015], [2016] , [2017], [2018]])

上面的脚本将打印 2013、2014、2015、2015、2015、2015。在 RF 中添加滞后变量在这方面没有帮助。这么小心。我不确定将趋势数据添加到您的 RF 是否会达到您的预期。

只需将您尝试预测的变量更改为因变量的差异即可。

正如其他帖子所指出的,随机森林不知道如何处理训练集之后出现的时间变量。假设您的训练集包含从第 1 分钟到第 60 分钟的数据。随机森林可能会制定一个规则,即 40 分钟后因变量为 100。即使有趋势,如果您在测试数据中达到第 10000 分钟,将应用相同的规则。但是,如果您预测差异,这可能具有包含趋势的相同效果。

至于 RF 是否是体面的预测者,我对 RF 的运气比 VAR、VECM 等其他计量经济模型要好得多,尤其是对于短期预测。然而,其他一些模型似乎在大多数数据上效果更好,例如调整良好的 GBM 模型。