如何检测多个时间序列的异常?

how to detect anomalies for multiple time series?

我有大约 1000 个时间序列,每个时间序列都是 api 延迟的记录,我想检测所有时间序列的异常情况。 我应该创建一个 for 循环来按 api(每个时间序列)训练一个模型(LSTM-Autoencoder)吗? 或者有没有一种方法可以拟合一个可以检测所有时间序列异常的模型?

您问题的答案是“视情况而定”。

重要的是您了解每种方法的含义。

Should I create a for loop to train a model (LSTM-Autoencoder) for each time series ?

在这种情况下,这意味着您的模型将从每个 API 的每个时间序列中按顺序学习。如果您尝试检测的异常和延迟模式在不同的 API 中是一致的,那么这可以很好地工作。这只是让您的模型迭代包含所有时间序列的数据集的另一种方式。

如果没有这种一致性并且每个 API 显示不同的延迟模式和异常,则按顺序学习将没有意义。想象一下,尝试通过在温度上训练模型,然后在风速上重新训练来预测天气……很可能你的模型不会有任何好处,因为它不会在这样的环境中学习这两个因素之间的相互作用。

Or is there a way to fit one model that can detect anomalies for all the time series ?

您可以将问题结构化为具有 1000 个特征的数据集(每个 API 一个)。如果您的时间序列未以相同频率采样,则可能会出现困难,您可能必须对它们重新采样。 但在这种情况下,您可以开发一个模型来监控所有千 API.

当然这是理论上的,因为对于 1000 个特征,您可能需要大量样本才能避免“维数灾难”。