正文
大家可以仔细回想一下你平时看到的数据监控看板等等,无论形态如何,基本都涉及了时间维度。但凡涉及时间维度,那么异常的识别都是基于时间来识别的,且识别的是最新一段时间是否异常(用最新数据鉴定历史数据异常并没有任何业务意义)。
了解了上面的内容,下面我们聊聊都有哪些时序异常数据的识别方法。
(1)基于固定数值
这个比较好理解,就是直接按照固定的数值进行异常判定。逻辑简单、容易实现与理解。
比如上图中,我们设定固定数值是[3800-5600],在这个区间范围内的数据,我们认为是正常数据;低于或者高于该区间的数据,认为是异常数据。
固定数值判断异常的方法,核心在于如何取合理区间的上下限。如果有明确的业务红线,可以将业务红线设为上下限;如果没有业务限制,可以使用分位数进行取值,比如历史5%-95%分位认为是正常的。
对于一个发展比较稳定业务而言,设定固定的绝对数值是没啥问题的。但是对于一个快速发展期的业务,很明显,固定数值并不适用。
随着时间的变化,合理的区间也相应发生了变化。这种情况不适合用固定数值进行异常判定,而是需要相对值。
(2)基于相对数值
上面讲到了固定数值方法的缺点。因此,我们考虑相对数值的方法。提到相对值,主要就是同比和环比。
由于同比通常的定义指的是与去年同期比较,因此针对单天,我们往往是与上周进行对比。如此,上周的数值就是基准值,再增加一个波动区间范围即可。比如上周二的新增用户数200,波动范围设定[-10%,10%],那么本周二如果新增用户数在180-220则认为是正常的;超出该范围则判定异常。
该方法也有明显的缺点。如果上周二就是一个异常值(假设数值异常低),而本周二数据是恢复正常了。那么根据相对值得判定逻辑,很容易把本周二判定为「异常高」。这是点对点对比的缺点。
(3)基于统计分布
如何能避免单个异常点对后续判断的影响呢?这里就可以基于统计分布进行规则建立。