使用Python检测时间序列异常

3
我正在研究一大批时间序列数据。通常,这些时间序列会遵循一个线性趋势(带有一些噪音),下面是一个例子:

Example of normal time series

然而,有时检测器会出现故障,导致时间序列的y值突然下降,例如:

enter image description here

我的问题是:如何使用Python检测这种“跳跃”?

1
请查看http://nbviewer.jupyter.org/github/SheffieldML/notebook/blob/master/GPy/basic_gp.ipynb。那里涉及的技术可以用来创建一个简单的机器学习黑盒,您可以将任意长的时间序列开头输入其中,并要求其进行短期预测。如果所有后续实际值都明显趋于低于(或高于)预测值,则可以报告此情况。我正在类似(甚至更简单)的场景中使用它。 - Alfe
1个回答

0

默认的异常检测策略涉及在给定点预测时间序列并将其与新的实际值进行比较。如果存在差异,则存在异常。

在您的示例中,您的时间序列模型将是线性函数。例如,在2012年7月,您将预测接下来的五个数据点。然后,当测量到新点时,您会比较它们。如果您的数据出现像底部图像中那样的下降,则残差将高于预期。

对于您的残差,您可以假设高斯分布。如果计算出的残差超过例如2个标准差,则可以标记它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接