如何处理面板数据以用于递归神经网络(RNN)

时间:2016-10-12 20:59:32

标签: python recurrent-neural-network panel-data

我一直在对递归神经网络进行一些研究,但我无法理解它们是否以及如何用于分析面板数据(意味着在几个主题的不同时间段捕获的横截面数据 - 例如,参见下面的示例数据。我看到的大多数RNN示例都与文本序列有关,而不是真正的面板数据,所以我不确定它们是否适用于这种类型的数据。

示例数据:

ID    TIME    Y    X1    X2    X3
1     1       5     3     0    10
1     2       5     2     2    6
1     3       6     6     3    11
2     1       2     2     7    2
2     2       3     3     1    19
2     3       3     8     6    1
3     1       7     0     2    0

如果我想在给定协变量X1,X2和X3(以及它们之前时间段的值)的特定时间预测Y,那么这种序列是否可以通过递归神经网络进行评估?如果是这样,你是否有任何资源或想法,如何将这种类型的数据转换为特征向量和匹配可以传递给RNN的标签(我使用的是Python,但我对其他实现开放)。

4 个答案:

答案 0 :(得分:1)

我也在研究这个问题,到目前为止,我只找到了似乎可以解决这个问题的论文。

张量递归神经网络 纵向数据分析 白明远,张伯彦,高俊斌 2017

我希望这对您有帮助

答案 1 :(得分:0)

我发现没有理由能够使用面板数据训练神经网络。神经网络的作用是将一组值映射到具有非线性关系的其他值集。在时间序列中,特定实例的值取决于先前出现的值。示例:您的发音可能会根据您之前发出的字母而有所不同。对于时间序列预测,递归神经网络优于前馈神经网络。我们如何使用常规前馈网络训练时间序列如下图所示。 Image

在RNN中,我们可以在网络的内部状态中创建反馈回路,这就是RNN更好地预测时间序列的原因。 在您的示例数据中要考虑一件事:x1,x2,x3的值是否对y1有影响,反之亦然?如果它没有那么你可以训练你的模型,因为x1,x2,x3,y4是相同类型的数据,即使用相同的网络独立训练它们(需要进行实验)。如果你的目标是预测一个值对另一个有影响的值,即你可以将它们转换为一维数据,其中单个时间范围包含样本类型的所有变体。另一种方法可能是训练四个神经网络,其中前三个使用RNN映射其时间序列,最后一个是前馈网络,其从2个时间序列输出获取2个输入并映射到第3个时间序列输出并对所有可能的组合执行此操作。 (仍然需要进行实验,因为我们可以在没有实验的情况下确定地预测神经网络模型的性能)

阅读建议:了解" Granger因果关系",可能会对您有所帮助。

答案 2 :(得分:0)

请看这个post

它回答了您对神经网络和面板数据的担忧。

答案 3 :(得分:0)

TSAI(基于 fastai)https://timeseriesai.github.io/tsai/data.preparation.html#SlidingWindowPanel 提供可能对您有用的面板数据准备功能。

仅供参考:它有一些很棒的 SOTA 算法用于时间序列分类和回归。