问题描述
在用LSTM预测时间序列时,比如输入是X,预测输出是y:
-
若X中包含了之前时刻的y值,则最终预测输出y_hat与y之间容易出现滞后现象,即y_hat的值好像是前一时刻的y值。这时预测误差整体上看上去很小,预测效果看似很好,但是y_hat看上去好像就是y平移一个单位得到的。例如:
-
若将之前时刻的y值从输入X中移除,则预测误差将很大,预测效果看上去不好,这时由于预测误差很大也很难观察y_hat与y之间的滞后。例如:
其他人的描述
这种现象在很多问题上都有人发现,例如:
可能的解释
Github上有人给出的一种解释是:这是由于序列存在自相关性:
做过时间序列的朋友可能常常会有这样的感受,用了某种算法做出来的测试集的平均绝对误差率或者r2系数都很好,但是把测试集的真实值及预测值画出来对比一下,就会发现t时刻的预测值往往是t-1时刻的真实值,也就是模型倾向于把上一时刻的真实值作为下一时刻的预测值,导致两条曲线存在滞后性,也就是真实值曲线滞后于预测值曲线,就像下图右边所显示的那样。之所以会这样,是因为序列存在自相关性,如一阶自相关指的是当前时刻的值与其自身前一时刻值之间的相关性。因此,如果一个序列存在一阶自相关,模型学到的就是一阶相关性。而消除自相关性的办法就是进行差分运算,也就是我们可以将当前时刻与前一时刻的差值作为我们的回归目标