文章目录
数据特点
订单量时间序列有两个明显的特征:
- 周期性。每天订单量的变化趋势都大致相同,早10点高峰和晚8点高峰订单量集中。
- 实时性。当天的订单量可能会受促销等因素影响,呈现整体的上涨或下降。
异常检测
异常,意为“异于正常”。异常检测,就是从一组数据中寻找那些和期望数据不同的数据。监控数据都是和时间相关的,每一个监控指标只有和时间组合一起才有其具体的含义。按照时间顺序,将监控指标组成一个序列,我们就得到了监控指标的时间序列。
基于预测的异常检测模型如下图所示,xt是真实数据,通过预测器得到预测数据,然后xt和pt分别作为比较器的输入,最终得到输出yt。yt是一个二元值,可以用+1(+1表示输入数据正常),-1(-1表示输入数据异常)表示。
异常检测主要有两种策略:
- 异常驱动的异常检测(敏感性):宁愿误报,也不能错过任何一个异常,这适用于非常重要的检测。简单概括,就是“宁可错杀一千,不能放过一个”。
- 预算驱动的异常检测(准确性):这种策略的异常检测,从字面理解就是只有定量的一些预算去处理这些报警,那么只能当一定是某种问题时,才能将报警发送出来。
这两种策略不可兼容的。对于检测模型的改善,可以从两个方面入手,一是预测器的优化,二是比较器的优化。我们从这两个方面描述模型的改善。
预测器,就是用一批历史数据预测当前的数据。使用的历史数据集大小,以及使用的预测算法都会影响最终的预测效果。
预测器设计
同比环比预测器
同比环比是比较常用的异常检测方式,它是将 当前时刻数据和前一时刻数据(环比)
或者前一天同一时刻数据(同比)
比较,超过一定阈值即认为该点异常
。如果用图2.1模型来表示,那么预测器就可以表示为用当前时刻前一时刻或者前一天同一时刻数据作为当前时刻的预测数据。
如果将不同日期、时刻的监控数据以矩阵方式存储,每一行表示一天内不同时刻的监控数据,每一列表示同一时刻不同日期的监控数据,那么存储矩阵如下图所示:
基线预测器
同比环比使用历史上的单点数据来预测当前数据,误差比较大。
t 时刻的监控数据,与 t-1,t-2,…时刻的监控数据存在相关性。同时,与t-k,t-2k,…时刻的数据也存在相关性(k为周期),如果能利用上这些相关数据对t时刻进行预测,预测结果的误差将会更小。
比较常用的方式是对历史数据求平均,然后过滤噪声,可以得到一个平滑的曲线(基线),使用基线数据来预测当前时刻的数据。该方法预测t时刻数据(图中黄色数据)使用到的历史数据如下图所示(图中红色数据):
基线数据预测器广泛应用在业务大盘监控中,预测效果如图3.3所示。从图中可以看出,基线比较平滑,在低峰期预测效果比较好,但是在外卖的午高峰和晚高峰预测误差比较大。