在训练 RNN 时,时间步长是否必须具有相同的时间距离?

数据挖掘 机器学习 时间序列 lstm rnn
2021-10-13 16:25:13

我有一个带有 LSTM 单元的循环神经网络,我想用 6 个时间步长进行训练。每个时间步长都是数据集的记录,表示每 10 秒采集的 5 分钟数据的时间聚合。不幸的是,数据集有时间中断,因此有时数据集中的两个连续记录可以在时间上相隔 10 分钟到几周。我想知道我在每批中给网络的时间步长是否都必须由相同的时间距离分开,也就是说,在我的情况下,它们必须都在 5 分钟内,或者它们是后续的就足够了,因此我例如,还可以给网络一个批次,其中有 4 条记录,彼此相距 5 分钟,然后在两天后取 2 条记录。

更新:数据来自电子系统,因此时间中断是由于设备关闭所致。很少它只关闭几分钟,而大部分时间它会保持关闭更长的时间,比如几个小时或有时几天。除其他元素外,该设备包括电池,因此数据集记录中存在的许多特征是温度、电流和电压读数,这些读数在时间中断期间会改变值(关闭几分钟时很少,关闭数小时或关闭时显着天)。该网络的目标是提前两步预测某些特征的值。

1个回答

与 ML 建模问题一样:它取决于.

这里的关键因素是您根据序列的属性进行预测。该序列不需要以固定的时间步长进行采样,甚至根本不需要基于时间。例如,在自然语言处理中,字母或单词的序列仅与口语或阅读时相同项目的时间非常松散相关。序列确实需要从一个自洽的源中提取,其中从序列中的一个项目移动到下一个项目对于您要预测的内容具有相同的含义。

如果您看到的中断会导致输入向量 X 或输出 Y 的预期分布有很大差异,那么您可能无法按原样使用它们。您仍然可以将它们作为 RNN 的输入数据进行拯救,并根据它们进行预测,如果您添加是否存在中断 - 以及它是否可能与您的目的相关,持续多长时间 - 作为附加X中输入项的特征。

另一种选择是严格遵循时间序列,但为“未知”添加 X 的占位符值(设置不同的标志),可能还会对缺失的特征进行一些粗略的猜测(甚至是来自不同模型的 ML 预测),这如果在缺少记录的情况下聚合的数量仍然有效且重要,但您用作输入的聚合服务失败,您可能会这样做。

根据您有多少可用数据,以及您是否需要在聚合服务失败时进行预测,您可以做任何事情,从丢弃不完整的数据到忽略时间差异,再到插入丢失的记录。

您需要回答的第一个问题是“缺少序列项意味着什么”:

  • 如果提供聚合数据的整个系统都关闭了,并且没有待处理的项目会在打开时进入系统的概念,那么您可能可以放心地忽略丢失的记录并忽略精确的时间。

  • 如果您的预测目标对经过的时间很敏感,并且即使聚合系统中断,您也不需要进行预测,那么您将希望以某种方式增加序列数据以解决丢失的记录,并以此进行训练/预测添加了特征工程。

  • 如果仅关闭聚合(或有可能失败导致记录中的空白),并且当它不可用时您不需要运行任何预测,那么您可以制定预测系统的规则仅当有 6 个最近的连续记录可用时才起作用,并丢弃引起您担心的数据。如果中断很少或预测模型不重要,这是有道理的。

如果您不确定要执行哪些操作,那么下一个方法是执行所有看似直观正确的操作,分别调整每个模型,然后查看每种不同方法在您的测试集上的执行情况。