“今天和朋友们聊聊数据分析、数据产品设计中经常面临的场景:异常判定,并看看如何进行预警相关的产品设计。”
关于BI系统,之前分享过阿里的Quick BI,微信公众平台的看板设计,以及数据图表相关设计。今天和大家聊聊常见的场景:异常数据的识别,以及预警相关功能的产品化设计。
一、场景概述
我们在做数据分析的时候,有一个重要的环节,就是发现目前运行数据的异常,然后基于异常寻找原因、提出意见和建议。
如果是人工判断异常数据的话,往往通过恰当的可视化图形就能很好地发现,比如下面数据走势的异常:
或者下面的数据关系的异常,通过回归曲线很容易发现右下角的异常点。
但是对于机器而言,想要识别异常数据,就比较麻烦了。这就是咱们今天将重点展开讨论的内容:如何通过系统化的规则或者算法,识别异常数据。
由于数据的类型多种多样,我们针对不同数据类型分别展开。
二、时序异常数据识别
时间序列相关的异常判定,应该是我们最常见的异常识别情景。尤其是在数据产品中,我们关注的大部分内容都是和时间序列有关系。
大家可以仔细回想一下你平时看到的数据监控看板等等,电话号码列表 无论形态如何,基本都涉及了时间维度。但凡涉及时间维度,那么异常的识别都是基于时间来识别的,且识别的是最新一段时间是否异常(用最新数据鉴定历史数据异常并没有任何业务意义)。
了解了上面的内容,下面我们聊聊都有哪些时序异常数据的识别方法。
1. 基于固定数值
这个比较好理解,就是直接按照固定的数值进行异常判定。逻辑简单、容易实现与理解。
比如上图中,我们设定固定数值是[3800-5600],在这个区间范围内的数据,我们认为是正常数据;低于或者高于该区间的数据,认为是异常数据。
固定数值判断异常的方法,核心在于如何取合理区间的上下限。如果有明确的业务红线,可以将业务红线设为上下限;如果没有业务限制,可以使用分位数进行取值,比如历史5%-95%分位认为是正常的。
对于一个发展比较稳定业务而言,设定固定的绝对数值是没啥问题的。但是对于一个快速发展期的业务,很明显,固定数值并不适用。
随着时间的变化,合理的区间也相应发生了变化。这种情况不适合用固定数值进行异常判定,而是需要相对值。
2. 基于相对数值
上面讲到了固定数值方法的缺点。因此,我们考虑相对数值的方法。提到相对值,主要就是同比和环比(关于同比和环比可参考历史文章)。