python - 神经网络回归 - 考虑动态
问题描述
我正在使用 Tensorflow 解决具有已知动态分量的回归问题,也就是说,我们知道时间t的(奇异)标签取决于环境的某些动态状态,但这个特征是未知的。可以理解的是,最初通过简单回归解决问题的尝试失败了,这证实了我们的假设,即我们无法访问的特征存在某种动态影响。
但是,时间t的环境状态应该反映在时间t0-n已知的特征和标签(尤其是它们的相互作用)中的某处,其中n > 0。不幸的是,由于问题的性质,时间 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 层,该层充当历史输入的编码器,然后将其耦合到具有外生变量的另一个输入层。两者都耦合在所谓的解码器——神经网络架构的其余部分。
推荐阅读
- c# - Newtonsoft.Json.JsonReaderException:无法将字符串转换为 DateTime:
- string - 如何将字符串添加到数据框
- javascript - 第 n 个子选择器的意外行为
- python - 是否可以对具有 58 行和(时间序列)和 10467 列的大型 GDP 数据运行向量自回归分析?
- javascript - 如何在 VueJS 中为 formBuilder 嵌入 jQuery
- arm - 新手会引起一些混乱;在 uboot/board 文件夹中,但未指定我的供应商名称 - lichee Pi Zero
- azure - 如何修复“Http11NioProtocol:读取请求时出错,被忽略”
- javascript - 如何从库 react-edittext 中的按钮中删除 `text-decoration: line-through`?
- java - 使用 NAT 向 IP 发送 UDP 数据包
- windows - 即使将防火墙规则定义为允许,Google Windows 实例也未启用 445/139 端口