基于twitter的异常检测算法

sesd的Python项目详细描述


异常检测:季节性ESD

注:所有的功劳都归于Twitter公司的Jordan Hochenbaum、Owen S.Vallis和Arun Kejariwa。代码中的任何错误当然都是我的错误。请随意修理。

简介

季节性esd是一种在twitter上实现的异常检测算法。有什么比他们在论文中使用的定义更好的定义:

"we developed two novel statistical techniques for automatically detecting anomalies in cloud infrastructure data. Specifically, the techniques employ statistical learning to detect anomalies in both application, and system metrics. Seasonal decomposition is employed to filter the trend and seasonal components of the time series, followed by the use of robust statistical metrics – median and median absolute deviation (MAD) – to accurately detect anomalies, even in the presence of seasonal spikes."

安装

要安装sesd,请使用pip:

pipinstallsesd

解释

该算法采用极端学习偏差检验来计算异常事实上,新奇的东西并没有出现 事实上,esd是被使用的,而是在what上被测试的。

ESD测试本身的问题是它假设数据分布为正态分布,而现实世界中的数据可能具有多模态分布。为了避免这种情况,使用stl分解。任何时间序列都可以用stl分解成季节、趋势和残差分量。关键是残余物有一个单峰分布,静电放电可以测试。

然而,仍然存在一个问题,即极端的、虚假的异常可能会破坏剩余成分为了解决这一问题,本文提出用中值来表示“稳定”的趋势,而不是用stl分解的方法得到的趋势。

最后,对于异常率较高的数据集,本文提出用中值和中值绝对偏差(MAD)代替均值和标准偏差来计算zscore使用MAD可以更一致地测量具有高异常百分比的时间序列的中心趋势


用法

importnumpyasnpimportsesdts=np.random.random(100)# Introduce artificial anomaliests[14]=9ts[83]=10outliers_indices=sesd.seasonal_esd(ts,hybrid=True,max_anomalies=2)foridxinoutliers_indices:print"Anomaly index: {0}, anomaly value: {1}".format(idx,ts[idx])>>>Anomalyindex:83,anomalyvalue:10.0>>>Anomalyindex:14,anomalyvalue:9.0

文件

  • seasonal_esd(seasonality=None, hybrid=False, max_anomalies=10, alpha=0.05):计算时间序列的季节极端研究偏差。所采取的步骤首先是将时间序列分解为stl分解(趋势、季节性、残差)。然后,计算混合(否则为中值)时的中值绝对偏差(MAD),并对残差进行常规ESD测试,我们将其计算为:`R=TS-季节性-MAD或中值。

    • 参数

      • ts:计算sesd的时间序列。
      • seasonality:statsmodel库需要一个季节性来计算STL分解,如果没有给定,那么它将自动计算为总时间序列的20%
      • hybrid:差异见Twitter的研究论文。 max_异常:grubbs检验应用于时间序列的次数。
      • alpha:显著性水平。
    • 回报

      • 时间序列中异常的指数。
  • esd(timeseries, max_anomalies=10, alpha=0.05, hybrid=False):计算时间序列的极端研究偏差。Grubbs测试执行最大异常次数,并警告每次移除顶部值有关详细信息,请访问http://www.itl.nist.gov/div898/handbook/eda/section3/eda35h3.htm

    • 参数

      • ts:计算ESD的时间序列。 max_异常:grubbs检验应用于时间序列的次数。
      • alpha:显著性水平
      • hybrid:如果设置为false,那么将使用平均值和标准偏差计算grubbs测试中的zscores。如果设置为true,则将使用中值和mad。
    • 返回

      • 时间序列中异常的指数

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView