时间序列异常检测算法

机器算法验证 r 回归 时间序列 异常检测
2022-01-24 13:59:48

我目前在 R 中使用 Twitter 的 AnomalyDetection:https ://github.com/twitter/AnomalyDetection 。该算法为具有季节性的数据提供时间序列异常检测。

问题:是否有其他类似的算法(控制季节性无关紧要)?

我正在尝试对我的数据尽可能多的时间序列算法进行评分,以便我可以选择最好的一个/集合。

4个回答

Twitter算法基于

Rosner, B.,(1983 年 5 月),“广义 ESD 多异常值程序的百分比”,Technometrics,25(2),第 165-172 页

我敢肯定,自 1983 年以来已经有许多技术和进步!我对我的内部数据进行了测试,Twitter 的异常检测并没有识别出明显的异常值。我也会使用其他方法来测试时间序列中的异常值。我遇到的最好的是Tsay 的异常值检测程序,它在 SAS/SPSS/Autobox 和 SCA 软件中实现。所有这些都是商业系统。还有 tsoutliers包,它很棒,但需要arima模型规范才能有效地工作。auto.arima我在优化和模型选择方面遇到了默认问题。

Tsay 的文章是时间序列异常值检测方面的开创性工作。领先的预测研究期刊International Journal of Forecasting提到 Tsay 的文章是上面链接的一篇文章中被引用次数最多和最有影响力的论文之一(另见下文)。这项重要工作和其他异常值检测算法在预测软件(尤其是开源软件)中的传播是罕见的。

在此处输入图像描述

以下是截至 2017 年 R 中异常检测的选项。

Twitter 的异常检测包

  • 使用季节性混合 ESD (SH-ESD) 工作;
  • 基于用于检测异常的通用 ESD 测试
  • 可以检测局部和全局异常;
  • 采用时间序列分解和稳健的统计指标(例如中位数和 ESD)
  • 对长时间序列采用分段逼近;
  • 当时间戳不可用时也有方法;
  • 可以指定异常的方向、感兴趣的窗口、切换分段近似,并具有视觉支持。

anomalyDetection 包(不同于 Twitter 的)

  • 各种方法,包括马氏距离、因子分析、霍恩平行分析、块检验、主成分分析;
  • 有处理结果的方法。

tsoutliers 包

  • 按照 Chen 和 Liu 程序检测时间序列中的异常值 ( https://www.jstor.org/stable/2290724?seq=1#page_scan_tab_contents );
  • 离群值是基于模型参数的“较少污染”估计值、使用多元线性回归估计离群值效应以及联合估计模型参数和效应而获得的。
  • 考虑创新异常值、附加异常值、水平变化、临时变化和季节性水平变化。

异常-acm

  • 通过计算每个时间序列上的特征向量(例如,包括滞后相关性、季节性强度、谱熵),然后对特征应用稳健的主成分分解,最后对前两个主成分应用各种双变量异常值检测方法;
  • 能够根据特征向量识别最不寻常的系列;
  • 包包含来自 Yahoo 的真实和合成数据集。

彩虹包

  • 使用袋状图和箱线图;
  • 识别具有最低深度或密度的异常值。

kmodR 软件包

洗涤法

稳健统计方法的 CRAN 任务视图

  • 使用稳健统计方法检测异常值的多种方法。

编辑 2018

异常化:整洁的异常检测

我遇到了一些可能对您有所帮助的来源,但它们不会像在您的数据上运行 R 脚本那样简单/方便:

  • Numenta有一个开源的NuPIC平台,可用于许多事情,包括异常检测。
  • Netflix 的 Atlas Project即将发布开源异常值/异常检测工具。
  • Prelert具有作为服务器端应用程序提供的异常检测引擎。他们的试用版提供了有限的使用,可能会满足您的需求。

Autobox(我的公司)提供异常值检测。与Autobox相比,Twitter 的算法得到了较大的异常值,但错过了较小的异常值

运行需要很长时间,但结果更适合寻找较小的异常值以及季节性的变化,这些变化也是异常值。下面是使用 14,398 个原始观测值的前 8,560 个观测值发现 79 个异常值的模型。标准版本的最大值为 10,000 个观测值,但可以对其进行更多修改,但是当您想要识别和响应异常值时,没有真正的理由拥有这么多数据。

我们受到 Tsay 在异常值、水平变化和方差变化方面所做的工作以及 Chow 在参数变化方面的工作以及我们自己在检测季节性变化方面的工作的影响,

如果您下载 30 天试用版并加载 Twitter 示例数据并将频率指定为 60 并在安装文件夹中保存 3 个触发器文件(noparcon.afs、novarcon.afs、notrend.afs)并创建一个名为 stepupde 的文件。 afs 与 100。

在此处输入图像描述

在此处输入图像描述