与 ML 建模问题一样:它取决于.
这里的关键因素是您根据序列的属性进行预测。该序列不需要以固定的时间步长进行采样,甚至根本不需要基于时间。例如,在自然语言处理中,字母或单词的序列仅与口语或阅读时相同项目的时间非常松散相关。序列确实需要从一个自洽的源中提取,其中从序列中的一个项目移动到下一个项目对于您要预测的内容具有相同的含义。
如果您看到的中断会导致输入向量 X 或输出 Y 的预期分布有很大差异,那么您可能无法按原样使用它们。您仍然可以将它们作为 RNN 的输入数据进行拯救,并根据它们进行预测,如果您添加是否存在中断 - 以及它是否可能与您的目的相关,持续多长时间 - 作为附加X中输入项的特征。
另一种选择是严格遵循时间序列,但为“未知”添加 X 的占位符值(设置不同的标志),可能还会对缺失的特征进行一些粗略的猜测(甚至是来自不同模型的 ML 预测),这如果在缺少记录的情况下聚合的数量仍然有效且重要,但您用作输入的聚合服务失败,您可能会这样做。
根据您有多少可用数据,以及您是否需要在聚合服务失败时进行预测,您可以做任何事情,从丢弃不完整的数据到忽略时间差异,再到插入丢失的记录。
您需要回答的第一个问题是“缺少序列项意味着什么”:
如果提供聚合数据的整个系统都关闭了,并且没有待处理的项目会在打开时进入系统的概念,那么您可能可以放心地忽略丢失的记录并忽略精确的时间。
如果您的预测目标对经过的时间很敏感,并且即使聚合系统中断,您也不需要进行预测,那么您将希望以某种方式增加序列数据以解决丢失的记录,并以此进行训练/预测添加了特征工程。
如果仅关闭聚合(或有可能失败导致记录中的空白),并且当它不可用时您不需要运行任何预测,那么您可以制定预测系统的规则仅当有 6 个最近的连续记录可用时才起作用,并丢弃引起您担心的数据。如果中断很少或预测模型不重要,这是有道理的。
如果您不确定要执行哪些操作,那么下一个方法是执行所有看似直观正确的操作,分别调整每个模型,然后查看每种不同方法在您的测试集上的执行情况。