我的任务是开发一个异常检测系统,用于以许多 1D 组织的数据(如果我选择可以超过 1D,但我认为这会使问题更加复杂)每日时间序列。该系列在很大程度上是非季节性的,但它们可能有趋势。我从两个最简单的实现开始,即指数时间加权移动平均线(即 Holt-Winters 方法的 Holt 部分,因为没有季节性)和一个简单的差分序列 Δ(t)= Y(t) – Y(t-1 ) 来检测突然的巨大运动。
最终,我想用一组算法实现一个集成,因为不同的算法处理不同的异常。(例如,在异常之后,SD 太大了,以至于我的第一个算法基本上没用;另一方面,如果有两个连续的异常,第二个算法无法检测到后一个)另外,我不知道是什么异常对最终用户来说更重要,所以如果我有一个允许用户查看结果的集成系统,可以有一个监督学习算法来学习不同算法的相对权重。
我担心的是 1) 我不确定我的两个简单算法是否足够好/足够强大。我查阅了文献,发现更多涉及的统计/概率方法,例如卡尔曼滤波器、ARIMA(我实际上实现了 ARIMA,但迭代到最佳参数在计算上是昂贵的。此外,在 python 中拟合 ARIMA 似乎真的很痛苦 - 需要很长时间,并且给了我很多警告,比如 Fail to Converge,有时它会直接失败,说 MA/AR 系数是不可逆的。因为我有很多时间序列,所以无法通过肉眼目视检查自相关/部分自相关图。但是,如果你有这个问题的解决方案,我肯定愿意尝试)和机器学习算法(如聚类、k-邻居等)。
2)虽然发现附加异常值很重要,但我也有兴趣实施变化检测(例如检测斜坡的存在、均值变化、方差变化等)。谷歌搜索并没有产生太多有希望的结果。对此领域的任何建议将不胜感激。
(顺便使用 Python)