RNN 非常适合捕获序列数据的时间依赖性。但是,当序列元素的时间间隔不相等时会发生什么?
例如,LSTM 单元的第一个输入发生在星期一,然后从星期二到星期四没有数据,最后是星期五、星期六、星期日的每个新输入。一种可能性是在周二到周四提供某种 NULL 向量,但这似乎是一个愚蠢的解决方案,因为 NULL 条目会污染数据,而且会浪费资源。
有任何想法吗?RNN 如何处理这种情况?如果还有 RNN 以外的方法,我也欢迎这些建议。
RNN 非常适合捕获序列数据的时间依赖性。但是,当序列元素的时间间隔不相等时会发生什么?
例如,LSTM 单元的第一个输入发生在星期一,然后从星期二到星期四没有数据,最后是星期五、星期六、星期日的每个新输入。一种可能性是在周二到周四提供某种 NULL 向量,但这似乎是一个愚蠢的解决方案,因为 NULL 条目会污染数据,而且会浪费资源。
有任何想法吗?RNN 如何处理这种情况?如果还有 RNN 以外的方法,我也欢迎这些建议。
我刚刚写了一篇关于该主题的博客文章!
简而言之,我写了处理稀疏/不规则顺序数据问题的不同方法。
以下是尝试方法的简短概述:
Lomb-Scargle Periodogram这
是一种在非等距时间步长序列上计算频谱图的方法。
使用插值网络进行数据建模
您真的不想在时间步之间天真地进行插值,但训练一个网络为您插值可能会有所帮助!
神经常微分方程模型
可以处理连续时间的神经网络自然可以处理不规则的时间序列。
处理缺失值的方法
这仅在您拥有大量数据时才可行
希望这有助于为您指明正确的方向:)
如果您正在输入一些数据向量有时, 直接的解决方案是获取星期几的 one-hot 编码,,然后简单地将和. 如果时间格式比星期几更复杂,那么时间/日期编码方案可能会更复杂。
此外,根据数据的稀疏和不规则程度,NULL 条目应该是一个合理的解决方案。我怀疑 LSTM 的输入门将允许 LSTM 正确读取 NULL 条目的信息,而不会污染您输入的数据(内存/隐藏状态)。
我会尝试将时间间隔明确地合并到模型中。例如,传统的时间序列模型(如自回归 AR(p))可以被认为是连续时间模型的离散化。例如,AR(1) 模型:
你可以类比 RNN 的时间序列模型。例如,在 AR(1) 过程中可以看作是 RNN 中的记忆权重。因此,您可以通过这种方式将观察之间的时间差插入到您的特征中。我必须警告这只是一个想法,我自己还没有尝试过。
我认为这取决于数据。例如,如果您正在处理计数并且您只是在某些日子忘记测量它,那么最好的策略是估算缺失值(例如,通过插值或高斯过程),然后使用 RNN 处理估算的时间序列。通过估算,您将嵌入知识。
如果缺失是有意义的(在某些日子里太热太测量计数),那么最好进行估算,并附加一个指示向量,如果值缺失则为 1,否则为 0。