本篇文章针对转转内部的数据实时监控系统獬豸进行了全面的分析,这项应用不仅能够监控核心指标,而且还拥有自定义指标和日志监控的能力。 一、什么是獬豸 性别曲直。见人斗,触不直者。闻人争,咋不正者。 汉异物志 獬豸是转转内部关于数据实时监控的一整套系统,为转转各项业务发展,风险控制等保驾护航。 在通用的核心指标同环比监控之外,它还提供业务方自定义指标和日志监控的能力,并且根据时间序列模型进一步开发出智能监控功能,大幅优化了准确率和灵敏度两项指标。 二、时间序列的定义 传统的同环比监控存在各种弊端。他们虽灵活简单,但存在选择合适阈值,选择对比周期及误报率较高的情况,适用于简单场景,但在一些对准确度和灵敏度要求比较高的环境下就不适合了。 在这种前提下,我们选择了时间序列模型来作为突破点。时间序列也称动态序列,是指将某种现象的指标数值按照时间顺序排列而成的数值序列。 它由两个组成要素构成: 第一个要素是时间要素; 第二个要素是数值要素。 根据时间和数值性质的不同,还可以分为时期时间序列和时点时间序列。在时间序列的研究上,一般会有两种做法:分解预测和模型解析。 分解预测适用于趋势性和周期性明显的非平稳时间序列。它的核心思想是将整个时间序列分解为长期趋势,季节变动,循环变动和不规则变动四种类型,对每种变动进行单独的研究和预测,最后再合称为复合型的时间序列。 其中,季节变动一般以周,月,季为单位,呈现出一种周期性变动。指数平滑模型分为加和模型和乘积模型,取决于随着时间推移波动幅度是否越来越大。 模型解析适用于平稳时间序列,它更偏向于通过回归方式,找到当前周期的变量与之前周期的统计关系,主要有ARMA模型和ARIMA模型。 前者全称为AutoRegressionMovingAverage,即自回归移动平均,可再细分为AR模型,MA模型和ARMA模型;后者多出来的I为Integrated,意为整合自回归移动平均。 三、指数平滑模型 移动平均模型建立在当前数据可以由历史数据推演而来的前提上,根据移动时间窗口的大小和系数不同,还会分为周期移动平均,加权移动平均和全期平均。 指数平滑是加权移动平均的一种,采用全期数据,但会根据历史数据和当期数据时间的距离,逐渐降低该该部分的影响程度。 这个在下面的公式展开时会聊到。拆解时间序列时,它所包含的时间序列类型越丰富,模型会越复杂。按类型不同,可分为一次平滑,二次平滑和三次平滑。 其中,一次平滑模型:水平项不规则变动(误差项)二次平滑模型,即霍尔特(Holt)模型;增加长期趋势三次平滑模型,即霍尔特温特斯(HoltWinters)模型;在二次平滑模型的基础上,再增加季节变动。 一次平滑模型 二次平滑模型 三次平滑模型 s为平滑(smooth)值,x为观察值,i为周期数,,和均为平滑参数。 指数平滑模型中,一般会选择若干个周期做平均作为初始平滑值。 在一次平滑模型里,我们可以看到当前周期的平滑值等于当前周期的观测值和上个周期的平滑值加上一定的权重系数得到,即平滑参数。所得出的平滑值将作为下个周期的预测值。 根据这个公式我们可以得出两个关键点:首先,介于0到1间,越趋近于0越平滑,此时每个周期的平滑值都相等。 此外,对公式进行展开后,你会发现每个周期的观测值x都对当前周期的平滑值产生了影响,且随着周期越远而呈(1)幂次增大,因此整个方法被称为指数平滑法。 一次平滑法比较简单,但因为预测值均来自历史数据,指数平滑值序列会出现一定的滞后偏差。我们可以通过调整的大小来减少这种偏差,但当如果调整到最大即1仍旧无法解决问题时,便需要对模型进行修正。 在一次指数平滑的基础上再加上趋势变动的部分,因此也称为二次指数平滑。 原理和一次平滑法相近,即在的基础上再平滑一次,产生一个二次平滑值。同理,在二次平滑的基础上,加上季节变动的平滑值便成为三次平滑。 在实际的应用过程中,指数平滑因其简单和可解释性,被广泛地应用在各种指标监控和智能运维场景中。 四、ARMA及ARIMA模型 有些时间序列可能不存在明显的波动特征,而且一步步去试探分离出对应的波动类型过程也比较繁琐,因此在模型预测里,就直接采用模型回归拟合的方法,来实现对平稳时间序列的预测。 獬豸最后采用了平滑指数模型,ARMA这块没有深入研究,仅在这里解释下具体的定义和应用方向。 AR(p):即Autoregressive,自回归模型。含义是当前时间点的值等于过去若干个时间点的值的回归。因为只依赖于自己过去的历史值,故称为自回归;如果依赖过去最近的p个历史值,称阶数为p,记为AR(p)模型。 MA(q):即MovingAverage,移动平均模型。含义是当前时间点的值等于过去若干个时间点的预测误差的回归。预测误差模型预测值真实值;如果序列依赖过去最近的q个历史预测误差值,称阶数为q,记为MA(q)模型。 AR和MA两个模型叠加在一起即为ARMA(p,q)模型,表示随机变量的取值不仅与以前p期的序列值有关还与前q期的随机扰动有关。 因为ARMA模型要求平稳性,不平稳的序列需要通过一定手段转化为平稳序列,一般采用的手段是差分。平稳程度可通过肉眼观测或DF(DickeyFuller)方法进行检测。因此对于一些不平稳序列,一般会采取ARIMA(p,q,d)模型,其中d即差分阶数,它的定义如下: I(d):即Integrated。含义是模型对时间序列进行了差分。d表示差分的阶数,t时刻的值减去t1时刻的值,得到新的时间序列称为1阶差分序列。 1阶差分序列的1阶差分序列称为2阶差分序列,以此类推,直至差分之后的时间序列变得平稳。另外,还有一种特殊的差分是季节性差分S,即一些时间序列反应出一定的周期T,让t时刻的值减去tT时刻的值得到季节性差分序列。 五、应用场景及优化 因为互联网产品的指标存在明显的不平稳性,所以我们采取了指数平滑模型来做獬豸的核心模型,它被广泛应用在:指标预测智能监控智能运维。 在指标预测中,我们先通过某个核心指标的近一段时间的曲线形状,判断应该适合二次平滑指数模型, 在拟合过程中,我们发现整体预测效果不错,但是在凌晨和傍晚数据连续下降和上升的时候,预测值存在一定的滞后性。 观测到凌晨和傍晚有明显的上升趋势,因此增加在周期性因子里加上趋势变量,即周期性趋势(非全周期趋势)。最后的拟合趋势已经非常接近了,效果如下: 在智能监控上,还需要加上对误差的监控,这涉及到比较器的设计。经过我们分析预测误差值呈正态分布。如果误差分布在99范围之外,即min(2。58,0。06t),max(2。58,0。06t),系统便会认为数据异常,触发报警。 时间序列在以上介绍两大类方法外,还有LSTM模型,格兰杰因果模型(GrangerCausality)等等。 本文只做了常见模型的简单介绍,有需求可以参考以下文章深入了解。 参考文献: 数据分析技术:时间序列分析;时间是把杀猪刀 HoltWinter指数平滑模型; 基尼系数Wiki定义 《商务与经济统计方法(第15版)》时间序列挖掘; 预测算法三次指数平滑法(HoltWinters) ARIMA模型详解; 陈水平基于时间序列的短期数据预测ARMA模型的设计与实现; 猜你喜欢数据分析的基本方法论; 三个步骤告诉你如何设计高效D 4年估值20亿美元的大数据公司:Domo的神秘国度; 三个步骤告诉你如何设计高效Dashboard。