我最近在OSCON Austin 2016 talk "Detecting outliers and anomalies in realtime at Datadog"上观看了Homin Lee,并找到了提出以下问题的正确动机。
基本上我要做的是发现图形中的异常不一定同时开始( t )但在形状上非常相似(在族中)。
分居:
合并:
如我的(粗略)概念图所示,给定两个相似频率( f )的时间函数,我想根据每个人的位置将它们排列在彼此之上拐点是。其中一个频率图从 t = -2 开始,另一个 t = 5 。它们都有 t_1 = 8.5 和 t_2 = 1.5 周围的拐点。这是我想要排队的地方。基本上,绘制的图像应该是我的算法的最终输出,并列出任何触发绿色曲线的异常,如果 f = 0.2 t_1 = 12 ,那么这应该是一个异常现象,因为它不属于家庭。正如Homin Lee所说,图表不会“在训练有素的信封内”。
现在我想列出我的特定方法,看看你是否认为相同或者有更好的方法来开发这个算法。在我们选择使用哪种异常检测算法之前,我们需要讨论如何准备这些数据。我们将继续使用频率 - 时间数据作为示例目的。为了准备数据,我们需要(1)找到拐点,(2)缩放数据,使数据都具有相同的时域持续时间(即 12-5 = 7 = 7 = 5-( -2)),以及(3)找到一种匹配(排列)每个图形的时间的方法(即5到-2,6到-1,依此类推)。
准备好数据后,现在它就在算法上了。对于(强大的)异常检测,我正在考虑使用one-class / multi-class支持向量机(SVM),因为我们将训练一组巨大的图形来形成“包络”。本节也可以提供建议。
作为一个moonshot思想,我希望最终能够将所有图表放在一个巨大的情节上,并指出那里的异常。问题是会有这么多不同的时间间隔。因此,一种解决方案是创建一个单一的通用( u )时间间隔,这样您就不必处理不同的间隔(例如, t_1 = 5,9 会变成 t_u = 1,5 , t_2 也是如此。
所以回顾一下,我希望在异常的不同时间间隔内分析类似的图表。找到关键点/关键点(不一定是拐点),比例,绘图和检查异常。
我已经漫步了很长时间,但如果事情没有意义,你希望我澄清或详细说明,请告诉我,我会。随意提出建议,向我提交一些代码,和/或之前我没有必要考虑的任何其他想法或方法。
谢谢。
P.S。抱歉图纸;我已经尽力了。 :P