不规则时间间隔的RNN?

机器算法验证 机器学习 神经网络 lstm 循环神经网络 不均匀间隔时间序列
2022-02-04 00:06:37

RNN 非常适合捕获序列数据的时间依赖性。但是,当序列元素的时间间隔不相等时会发生什么?

例如,LSTM 单元的第一个输入发生在星期一,然后从星期二到星期四没有数据,最后是星期五、星期六、星期日的每个新输入。一种可能性是在周二到周四提供某种 NULL 向量,但这似乎是一个愚蠢的解决方案,因为 NULL 条目会污染数据,而且会浪费资源。

有任何想法吗?RNN 如何处理这种情况?如果还有 RNN 以外的方法,我也欢迎这些建议。

4个回答

我刚刚写了一篇关于该主题的博客文章

简而言之,我写了处理稀疏/不规则顺序数据问题的不同方法。

以下是尝试方法的简短概述:

  • Lomb-Scargle Periodogram
    是一种在非等距时间步长序列上计算频谱图的方法。

  • 使用插值网络进行数据建模
    您真的不想在时间步之间天真地进行插值,但训练一个网络为您插值可能会有所帮助!

  • 神经常微分方程模型
    可以处理连续时间的神经网络自然可以处理不规则的时间序列。

  • 将时间dt作为附加功能(或 Tensorflow 中的位置编码)添加到输入

  • 处理缺失值的方法
    这仅在您拥有大量数据时才可行

希望这有助于为您指明正确的方向:)

如果您正在输入一些数据向量vt有时t, 直接的解决方案是获取星期几的 one-hot 编码,dt,然后简单地将vtdt. 如果时间格式比星期几更复杂,那么时间/日期编码方案可能会更复杂。

此外,根据数据的稀疏和不规则程度,NULL 条目应该是一个合理的解决方案。我怀疑 LSTM 的输入门将允许 LSTM 正确读取 NULL 条目的信息,而不会污染您输入的数据(内存/隐藏状态)。

我会尝试将时间间隔明确地合并到模型中。例如,传统的时间序列模型(如自回归 AR(p))可以被认为是连续时间模型的离散化。例如,AR(1) 模型:

yt=c+ϕyt1+εt
可以被认为是一个版本:
yt=cΔt+eγΔtytΔt+ξtσΔt

你可以类比 RNN 的时间序列模型。例如,ϕ在 AR(1) 过程中可以看作是 RNN 中的记忆权重。因此,您可以通过这种方式将观察之间的时间差插入到您的特征中。我必须警告这只是一个想法,我自己还没有尝试过。

我认为这取决于数据。例如,如果您正在处理计数并且您只是在某些日子忘记测量它,那么最好的策略是估算缺失值(例如,通过插值或高斯过程),然后使用 RNN 处理估算的时间序列。通过估算,您将嵌入知识。

如果缺失是有意义的(在某些日子里太热太测量计数),那么最好进行估算,并附加一个指示向量,如果值缺失则为 1,否则为 0。