找出时间序列数据中的异常值

数据挖掘 机器学习 时间序列 异常检测
2022-03-02 07:34:59

我想以每小时的速度实时找出功耗的异常值,即在小时结束时,我应该说当前小时的功耗是否异常/异常。

方法: 到目前为止,我完成了以下步骤

  1. 假设我想查明上午 9 点到 10 点之间的用电是否异常?为此,我首先在同一时间间隔内找到过去n天的使用情况,然后找到所有先前使用情况的平均值/中位数
  2. 现在,我有当天的使用情况和前n天的平均/中位使用情况。我应该使用哪种统计方法来声明当天的使用情况是否异常?

使用上述方法,在特定(测试)日的 24 小时内并使用过去 10 天的消耗量,我得到的结果如下:

图形解读:黑线代表当天当前小时的使用情况;红线和蓝线代表同一时间间隔过去 10 天的平均值和中位数 在此处输入图像描述 在此处输入图像描述

从目测来看,我可以说 07:10 - 08:00 和 22:10 - 23:00 之间的使用是异常的,因为实际使用和之前的平均/中值使用之间存在很大差异。我不知道我应该使用哪种统计方法来自动指出这种异常情况,使用讨论的方法。

1个回答

我一直在使用一种启发式方法来检测非常简单的异常值。首先计算一个以平均值为中心且半径为三个标准差的区间。接下来,使用 Tukey 的盒子和胡须测量计算第二个间隔,将间隔限制放在胡须的限制处。最后,计算两个区间的并集并使用这个新区间来检测你的异常值:这个区间之外的任何观察都是潜在的异常值。请注意,您可能需要调整两个间隔以校准所需的精度。此外,您可能必须考虑这些间隔中可能的趋势和季节性,具体取决于历史数据的行为方式。