我正在使用Tensorflow解决一个回归问题,其中包含已知的动态成分,也就是说,我们知道在时间t的(单一)标签依赖于环境的某种动态状态,但这个特征是未知的。通过简单的回归尝试解决这个问题,理所当然地失败了,这证实了我们的假设,即存在某种我们无法访问的特征所带来的动态影响。
然而,时间t的环境状态应该在某些地方反映在时间t0-n已知的特征和标签中(特别是它们之间的相互作用),其中n > 0。不幸的是,由于问题的性质,时间t的输出在很大程度上依赖于时间t的输入,其依赖程度与环境的动态状态相当。我担心这使得我想尝试的方法无效——在我看来,时间序列预测会考虑前几个时间步的特征,但不会考虑当前时间步的输入。此外,我知道前几个时间步的标签,但在我想进行预测的时间点却不知道这些标签。
下面是一个表格来说明这个问题:
t | 输入 | 输出 |
---|---|---|
0 | x(t=0) | y(t=0) |
… | … | … |
t0-1 | x(t=t0-1) | y(t=t0-1) |
t0 | x(t=t0) | y(t=t0)=? |
- 如何利用我所掌握的所有信息来预测y(t=t0)的值,使用x(t=t0)(其中x是输入特征的数组)和前几个时间步的特征和标签的定义窗口?
- 是否有解决此类问题的既定方法,无论是使用神经网络还是其他模型?
- 这个问题是否需要结合多种方法,如果是,哪些方法可能适合解决它?
最终模型将被部署,并继续适用于未来的时间窗口。我们知道相关时间窗口的大小大约是过去100个时间步。
回答:
我所描述的问题类型,我后来了解到,与所谓的外生变量有关。在我的情况下,我需要一种称为NNARX的东西,它在核心上类似于ARMAX模型,但作为神经网络,可以考虑非线性因素。
总的想法是引入一个LSTM层,作为历史输入的编码器,然后与另一个包含外生变量的输入层耦合。两者在所谓的解码器——神经网络架构的其余部分——处耦合。