简介:
比如体温37.4度vs 36.5度,波动只有2.5%。但是如果在测温点发现有人体温37.4度,估计会马上带走做核酸。为什么?因为人们不怕2.5%的波动,而是怕新冠肺炎!
所以:指标波动不可怕,但指标波动所代表的业务场景才可怕!从经营场景谈指标波动就是耍流氓。
在各类经营指标中,数据往往不是一成不变的,尤其是一些核心指标发生变化或波动时,需要判断这种波动是否异常。那么波动多大才算不正常呢?本文将通过一些实际的业务场景来说明数据波动的异常判别方法。
数据波动是各种业务场景中常见的情况,比如每天的GMV、每天的订单量,都是不断变化的。在大多数情况下,变化是正常波动,但有些波动是由于突发的外界原因或其他意想不到的因素,使其呈现出不同于正常模式的异常状态。如果能够准确识别异常波动,对波动进行预警,并及时处理,就可以在一定程度上保证所关注的业务场景系统的整体稳定性。
一个
波动类型
数据波动可以不能脱离时间特征。今天在商业中遇到的最常见的问题是什么指标看起来像。什么过去几天的趋势是什么?未来会有怎样的变化?时间构成了波动的两个基本属性。
根据时间的不同特征,常见的波动类型有:
一次性波动:偶然和突然的波动。一般是受短期和突发事件影响的指标波动。比如某个头部主播在文章中获得了YEATION的一款产品,某个明星的同款产品在YEATION有现货等等。会导致订单量暂时超预期上涨。
这种波动影响时间短,往往几天就恢复正常波动。以单个数量为例。大促期间是单量爆发期,大促是一个偶然事件。此时单量的波动是一次性的波动。它有以下特征图:
周期性波动:这种波动与时间节点有很强的相关性,往往以周、季或年为循环节点。比如羽绒服秋冬卖的好,春天销量下降,夏天几乎没有销量,每年都差不多。
持续波动:从某个时间开始,指标一直呈上升/下降趋势。比如今年4月份以来,卫浴香氛品类的销量一直呈上升趋势,这是一个持续的波动。持续波动背后的原因往往更深刻,比如秩序结构的变化,环境因素的影响,导致了这种持续的趋势。
2
异常识别
那么什么样的波动可以被视为异常?异常识别也可以被认为是异常检测。这里主要从绝对值预警和相对值预警两个方面来说明。
2.1绝对值警告
绝对值预警是指通过设置一定的阈值,当指数低于/高于阈值时,认为此时指数波动异常,给出预警。
比如YEATION作为一个品牌,毛利是其核心指标。可以设置毛利绝对值预警:毛利为负时,视为异常情况。有必要探究原因并解释这种异常波动。通过毛利绝对值预警,YEATION及时发现部分用户为薅羊毛使用咖啡机,导致咖啡机毛利为负,并改进规则减少YEATION的损失。
不仅可以设置在某个值以下,还可以在指标高于某个值时给出预警。举个例子,在一个供应链中,如果一个大仓库的仓存比高于40%,那么这个仓库就会超负荷,生产就会受到影响。
绝对值预警往往是一次性波动,因此异常判断是相对可靠的
然而,在实际业务中,绝对门槛只能提供一个底线。除了一些非常确定的业务场景,在其他情况下,过高的a 底线会导致误报,而过低的a 底线可能会错过很多需要预警的情况。所以相对值预警作为绝对值预警的补充,可以根据历史数据和波动来判断当前波动是否异常。
(1)同比比较
同比比较是业务场景中常用的异常检测方法。通过比较当前时间段与上一时间段(同比)和过去同一时间段(同比),如果超过一定阈值,则认为该点异常。在实际操作中,常用的是周/日对比和同比对比。
如上所示,( 1)的数据就是要判断的值。当(1)的值为百分比时,如主站订单占比,同比对比一般为:
环比:(1)-(2)铂
同比:(1)-(3) pt
当(1)的值为非百分比时,如来自主站的订单数量:
环比:((1)-(2))/(2)%
同比:((1)-(3))/(3)%
判断它是否它根据正值或负值上升或下降。通过对比上周/昨天和去年同期的数据表现,计算波动值,然后将波动值与阈值进行比较,从而得出当前时间值是否处于正常波动状态(阈值的设置方法后面会介绍)。
比如上面周期性波动的例子,11月份环比波动会更大,所以设置同比波动预警比环比波动预警更合理。所以在波动判别中要注意实际业务背景。
(2)周期平滑
同比/环比数据只使用1~2个时间点,容易受到数据本身质量的影响:当历史同期或上一个周期的数据本身异常,用异常数据来判断它是否异常。
一个很自然的想法是扩展参考时间点,对多个时间点的周期性数据进行平滑,得到当前时间指标的比较值。比如:
比较值:
其中是平滑系数,当所有值都相同时,这是平均值。或者说,越接近学习的时间点,平滑系数越高。可以根据业务需求定义所选的时间点。
通过比较比较值B和研究值(1),可以认为是异常如果超过了一定的阈值,其波动就需要注意了。
(3)假设检验(3原理)上面提到的比较值需要与学习值进行比较,通过阈值就可以判断波动是否异常。阈值的定义方法与预警方法类似,包括绝对值阈值和自适应(相对值)阈值。
绝对值:根据正常情况下的历史数据波动,计算比较值与学习值的差值,从而定义一个上/下限值,即阈值。
自适应阈值:根据数据的波动而变化的阈值。其理论基础是假设检验和判断是否异常的大数定律。
让假设当前时间点的指标数据为B,历史上用于比较的指标数据为:
其中包括:
分别显示比较数据的平均水平和波动。然后根据大数定律和假设检验,当
也就是说,当前时点的指标数据是异常波动的。其中z是对应于置信水平的值。例如,当z=1.96时,置信水平为95%,即100次波动中有95次在正常范围内(置信水平及其对应值可参考标准正态分布表)。当z=2.58时,置信水平为99%,这就是著名的3原则。
3.3其他方法
除了上面提到的一些常用方便的方法外,还可以通过时间序列、算法模型等来判断异常值。离群点判别是一个常见的研究场景,但由于实践的复杂性,这里仅作介绍。
(1)时间序列业务中的数据往往具有时间属性,如单个数量和GMV随时间的变化。那么,在时间序列中,当前的流感
平均法:移动平均、加权移动平均、指数加权移动平均、累计移动平均等。类似上面提到的定期平均方法,可以自定义窗口大小和加权系数。
ARIMA模型:ARIMA(自回归移动平均模型)是时间序列中的基本模型。它利用过去的数据点来生成下一个数据点的预测,并在这个过程中加入一些随机变量。使用这个模型,我们需要确定ARIMA所需的参数,也就是说,我们需要拟合数据点。利用拟合的方程确定下一个时间点数据的区间,从而判断当前波动是否异常。
另外还有ESD,S-ESD,S-H-ESD,STL分解等算法检测异常点。
(2)算法模型
基于分类方法:根据现有的历史资料,分为正常和异常两类。之后可以生成新的观测值,利用分类方法判断新的观测值是否异常。例如使用距离鉴别的K-均值算法和SVM算法。
神经网络方法:可以对时间特征建模的LSTM算法,利用卷积神经网络对时间序列进行分类的Time Le-Net,以及各种监督模型都是可以识别异常数据的算法。
三
摘要
在实际应用中,需要结合业务背景来选择方法。一般来说,判断异常的主要方法有:
- EOF -
编辑:李倩
标签:波动时间值