时间序列逻辑回归

机器算法验证 时间序列 物流 二进制数据
2022-04-03 03:40:26

我正在尝试使用如下所示的数据训练模型:

二进制时间序列数据

有理论上的理由相信可以使用 X 行预测 Y 行,窗口约为 2 秒。请注意,此图只是一个示例。我的数据集中大约有 100 个时间序列用于训练/验证。

我对 ML 有基本的了解,但之前从未对时间序列做过任何事情,所以我正在寻找一些建议。我知道我可以重新排列数据,使每个样本都是一个包含window_size * features值的长向量,并通过逻辑回归传递它,但我不确定这是不是最好的方法,原因如下:

  • 大的特征向量(比如说~200 个值)可能会导致过度拟合,不是吗?
  • 我看到了使用 LSTM 和 CRF 进行时间序列预测的示例。因此,可能有理由为这些任务使用专门的算法,但我并不完全了解它们以完全理解它们。你会建议我在这些方面投入时间,还是继续使用更简单的逻辑回归模型来处理这类数据?
  • 使用逻辑回归不会真正考虑时间。例如,如果不重新采样,就不可能尝试生成具有不同采样周期的时间序列的预测。专门为时间序列构建的模型是否会自动考虑它?

此外,这对我来说似乎是一个普遍的问题,可能有一个通用的解决方案。因此,为直接处理此类时间序列而构建的 python 库的提示(我不必先重新排列数据)会很棒!

1个回答

Keras是一个高级 API,允许实现循环神经网络 (RNN)。像 LSTM 这样的 RNN 可能是您数据的好模型,具体取决于有多少。 是一个很好的入门教程。

您对时间窗口和逻辑回归的建议可能会表现得更好,也可能表现得更差。有时汇总过去的事件非常有效,有时则不然。以我的经验,当数据较少并且从先前时间步长到响应变量的函数太复杂而无法在数据量少的情况下学习时,它会更有效。聚合可能允许您用一些领域专业知识来指导这种学习。(对我来说,这曾经优于自写的 vanilla RNN,但它可能没有优于 LSTM 或 GRU)。对于大量数据,RNN 在预测性能方面应该优于这种方法。另一种选择是隐马尔可夫模型. 然而,时间窗方法的一个巨大好处是聚合特征是可解释的。我会尝试这两种方法,看看哪种方法最好。

在过拟合方面,您可以使用带有逻辑回归的收缩或带有 RNN 的 dropout、收缩或减少节点。如果您确保在验证集上检查错误,则可以警惕防止过度拟合。

您必须为 RNN 重新采样以考虑时间(它们自然会处理序列,并且由您来确保序列中的事件间隔均匀)。Pandas 有一个重采样功能可能会派上用场,尽管处理原始序列而不是重采样序列也可能会产生更好的结果——同样,尝试两种方式都不会有害。

Andrej Karpathy 的博客文章是对 RNN 的一个很好的一般性介绍和更多内容。此外,参见 Goodfellow 等人的文本第 10 章