1

我最近观看了Homin Lee在OSCON Austin 2016上关于“在 Datadog 实时检测异常值和异常”的演讲,并找到了提出以下问题的适当动机。

基本上,我要做的是在不一定同时开始(t)但形状非常相似(在家庭中)的图中找到异常。 

分开:

在此处输入图像描述

在此处输入图像描述

结合:

在此处输入图像描述

正如我的(粗略的)概念图中所描绘的,给定两个相似的频率(f)时间函数,我想根据每个拐点的位置将它们排列在一起。其中一个频率图从t=-2开始,另一个从t=5开始。它们在t_1=8.5t_2=1.5附近都有拐点。这就是我要排列它们的地方。从本质上讲,绘制的图像应该是我的算法的最终输出,并列出任何触发的异常,例如绿色曲线,如果f=0.2t_1=12,那么这应该是异常,因为它不在家族中。正如 Homin Lee 所说,该图不会“在经过训练的信封内”。

现在我想列出我的具体方法是什么,看看你是否有同样的想法或有更好的方法来开发这个算法。在我们选择使用哪种异常检测算法之前,我们需要讨论如何准备这些数据。我们将继续使用频率与时间的数据作为示例。为了准备数据,我们需要(1)找到拐点,(2)缩放数据,使数据都具有相同的时域持续时间(即,12-5=7=7=5-(-2) ) 和 (3) 找到一种方法来匹配(排列)每个图的时间(即,5 到 -2、6 到 -1,等等)。

  1. 找到拐点不会太难,因为我们所要做的就是检测每个图表上凹度变化的位置。在我们的示例中,这将是t_1=7.5t_2=1.5这里写的这个算法似乎很有潜力。
  2. 为了缩放数据,我们希望将拐点放在图的中间,所以|t_min-t_I|=|t_max-t_I| 其中t_I是拐点发生的时间。频率将被缩放到一些相当大的范围。我假设这种缩放将类似于这种方法。
  3. 找到一种方法来匹配(排列)每个图表的时间将是三个目标中最困难的目标,我不确定如何做到这一点,但我会提出我的建议。我在想也许我们可以使用这里讨论的内容或为数据集定义离散傅立叶变换,以确定两个图的公共数据域。这部分非常未知,我想打开它以征求建议。

一旦准备好数据,现在就进入算法了。对于(稳健的)异常检测,我正在考虑使用一类/多类支持向量机(SVM),因为我们将训练大量图来形成“包络”。本节也开放征求意见。

作为一个登月想法,我希望最终能够将所有图表放在一个巨大的图上,并从那里指出异常。问题是会有很多不同的时间间隔。因此,一种解决方案是创建一个单一的通用(u)时间间隔,这样您就不必处理不同的间隔(例如,t_1=5,9将变为t_u=1,5并且同样适用于t_2)。

回顾一下,我希望分析不同时间间隔的类似图表以发现异常。查找关键/关键点(不一定是拐点)、缩放、绘制图表并检查异常情况。

我已经讨论了足够长的时间,但是如果有些事情没有意义,并且您希望我澄清或详细说明,请告诉我,我会的。随意提出建议,向我提交一些代码,和/或我以前没有必要想到的任何其他想法或方法。

谢谢你。

PS,对图纸感到抱歉;我已经尽力了。:P

4

0 回答 0