发明内容
本公开解决的一个技术问题是,如何提升基于业务数据进行作业的鲁棒性。
根据本公开实施例的一个方面,提供了一种数据监测方法,包括:对第一时间序列数据进行基于局部加权回归散点平滑法的季节趋势分解STL处理,获得第一时间序列数据的季节分量、趋势分量以及残差分量;
根据残差分量,判断第一时间序列数据中是否存在异常数据;在第一时间序列数据中不存在异常数据的情况下,向数据显示设备推送第一时间系列数据;在第一时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第一时间系列数据,并触发异常数据告警。
在一些实施例中,根据残差分量,判断第一时间序列数据中是否存在异常数据包括:计算残差分量的均值及标准差;计算残差分量中的目标数值与均值之差的绝对值,并判断绝对值是否大于标准差的三倍;在绝对值大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值为异常数据;在绝对值不大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值不为异常数据。
在一些实施例中,还包括:在第一时间序列数据中不存在异常数据的情况下,确定第二时间序列数据中与第一时间序列数据相关联的关联分量;将第二时间序列数据分解为关联分量和剩余分量;根据剩余分量,判断第二时间序列数据中是否存在异常数据;在第二时间序列数据中不存在异常数据的情况下,向数据显示设备推送第二时间系列数据;在第二时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第二时间系列数据,并触发异常数据告警。
在一些实施例中,对第一时间序列数据进行基于局部加权回归散点平滑法的季节趋势分解STL处理包括:根据第一时间序列数据的波动幅度,选取STL处理的运算模型。
在一些实施例中,根据第一时间序列数据的波动幅度,选取STL分解的运算模型包括:在第一时间序列数据的波动幅度随时间的变化率大于预设值的情况下,在STL处理中采用乘法模型;在第一时间序列数据的波动幅度随时间的变化率不大于预设值的情况下,在STL处理中采用加法模型。
在一些实施例中,对第一时间序列数据进行基于局部加权回归散点平滑法的季节趋势分解STL处理还包括:根据第一时间序列数据的业务属性,确定STL处理的模型参数。
在一些实施例中,根据第一时间序列数据的业务属性,确定STL处理的模型参数包括:设置n(p)=365,n(i)=1,n(o)=6,n(l)=365,n(t)=549,n(s)=21;其中,n(p)表示每个季节项周期中观察点的数量,n(i)表示内循环的次数,n(o)表示外循环鲁棒性迭代的次数,n(l)表示低通滤波的平滑参数,n(t)表示趋势项的平滑参数,n(s)表示季节项的平滑参数。
根据本公开实施例的另一个方面,提供了一种数据监测装置,包括:数据分解模块,被配置为:对第一时间序列数据进行基于局部加权回归散点平滑法的季节趋势分解STL处理,获得第一时间序列数据的季节分量、趋势分量以及残差分量;异常判断模块,被配置为:根据残差分量,判断第一时间序列数据中是否存在异常数据;监测控制模块,被配置为:在第一时间序列数据中不存在异常数据的情况下,向数据显示设备推送第一时间系列数据;在第一时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第一时间系列数据,并触发异常数据告警。
在一些实施例中,异常判断模块被配置为:计算残差分量的均值及标准差;计算残差分量中的目标数值与均值之差的绝对值,并判断绝对值是否大于标准差的三倍;在绝对值大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值为异常数据;在绝对值不大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值不为异常数据。
在一些实施例中,还包括:关联确定模块,被配置为:在第一时间序列数据中不存在异常数据的情况下,确定第二时间序列数据中与第一时间序列数据相关联的关联分量;关联分解模块,被配置为:将第二时间序列数据分解为关联分量和剩余分量;数据判断模块,被配置为:根据剩余分量,判断第二时间序列数据中是否存在异常数据;监测处理模块,被配置为:在第二时间序列数据中不存在异常数据的情况下,向数据显示设备推送第二时间系列数据;在第二时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第二时间系列数据,并触发异常数据告警。
在一些实施例中,数据分解模块被配置为:根据第一时间序列数据的波动幅度,选取STL处理的运算模型。
在一些实施例中,数据分解模块被配置为:在第一时间序列数据的波动幅度随时间的变化率大于预设值的情况下,在STL处理中采用乘法模型;在第一时间序列数据的波动幅度随时间的变化率不大于预设值的情况下,在STL处理中采用加法模型。
在一些实施例中,数据分解模块还被配置为:根据第一时间序列数据的业务属性,确定STL处理的模型参数。
在一些实施例中,数据分解模块被配置为:设置n(p)=365,n(i)=1,n(o)=6,n(l)=365,n(t)=549,n(s)=21;其中,n(p)表示每个季节项周期中观察点的数量,n(i)表示内循环的次数,n(o)表示外循环鲁棒性迭代的次数,n(l)表示低通滤波的平滑参数,n(t)表示趋势项的平滑参数,n(s)表示季节项的平滑参数。
根据本公开实施例的又一个方面,提供了一种数据监测装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述的数据监测方法。
根据本公开实施例的再一个方面,提供了一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机指令,指令被处理器执行时实现前述的数据监测方法。
本公开能够准确检测到异常业务数据,并熔断基于异常业务数据的下游作业同时触发告警,提升了基于业务数据进行作业的鲁棒性。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
发明人研究发现,数据质量问题是拆解业务流程的重要标志。目前的数据质量监控系统更多的聚焦在数据生产过程,大多针对数据生产中贴源层及基础层源表结构的变化、字段信息的一致性进行规则校验,以及针对数据入库后的质量评估。但在数据集市层加工后最终落地的业务数据(例如监控业务部门各销售量、新增用户量等产品运营指标),往往才是运营及决策人员最关注的数据指标,针对这些数据指标目前没有一套完整及对各业务场景都适用的监测方法。
每一个在数据集群中加工的指标计算作业,都会配置一个将业务数据推送到商务智能看板或是mysql数据库的下游推送作业。若要监测数据质量,还需要配置相对应的指标监测作业。在配置指标监测作业时,首先需要选择要进行数据监测的目的。如果需要监测业务数据的唯一性、完整性或有效性,可直接调用现有的稽核sql逻辑进行模板配置,此处不多赘述。如果需要监测业务数据的波动性,例如用户类指标(例如新增用户数及活跃用户数)、订单及金额类指标(例如各业务线新增及累计订单量、销售额)、流量类数据(例如访问时长、访问深度)等,则需要设置监测告警阈值。
设置监测告警阈值时,可以首先根据业务指标的历史数据或业务经验,判断业务指标是否存在节性波动。例如,每年遇到定期的促销活动时流量数据及订单数据激增,则可以确定业务指标存在节性波动;而有些业务指标常年处于相对平稳的状态,则可以确定业务指标不存在节性波动。
在业务指标不存在季节性波动或周期性变化的情况下,可以采用多种方式设置监测告警阈值。例如,可以采用业务指标的同环比变化值等方式设置监测告警阈值。假如业务指标满足正态分布或是近似正态分布,还可以采用三倍标准差法设置监测告警阈值;假如业务指标满足偏态分布,还可以通过箱型图来设置监测告警阈值。
在业务指标存在季节性波动或周期性变化的情况下,如果只是简单采用同环比等方式设置监测告警阈值,数据质量监控系统就会出现异常报警,但对运营人员来说这种数据波动属于正常现象,并不存在异常数据。为避免在监测告警时出现误报,就需要手动不断调整监测告警阈值。如果每个业务指标都需要人工配置监测告警阈值,需要耗费较高的人力成本。如果针对不同业务指标能够自动、准确检测到异常业务数据,并熔断基于异常业务数据的下游作业同时触发告警,则能够提升基于业务数据进行作业的鲁棒性,同时节省投入成本。
首先结合图1描述本公开数据监测方法的一些实施例。
图1示出了本公开一些实施例的数据监测方法的流程示意图。如图1所示,本实施例包括步骤S101~步骤S104。
在步骤S101中,对第一时间序列数据进行STL(Seasonal and Trenddecomposition using Loess,基于局部加权回归散点平滑法的季节趋势分解)处理,获得第一时间序列数据的季节分量、趋势分量以及残差分量。
STL处理的具体过程如下。
首先,根据第一时间序列数据的波动幅度,选取STL处理的运算模型。在第一时间序列数据的波动幅度随时间的变化率较大(大于预设值)的情况下,在STL处理中采用乘法模型;在第一时间序列数据的波动幅度随时间的变化率较小(不大于预设值)的情况下,在STL处理中采用加法模型。
然后,根据第一时间序列数据的业务属性,确定STL处理的模型参数n(p)、n(i)、n(o)、n(l)、n(t)、n(s)。其中,n(p)表示每个季节项周期中观察点的数量,n(i)表示内循环的次数,n(o)表示外循环鲁棒性迭代的次数,n(l)表示低通滤波的平滑参数,n(t)表示趋势项的平滑参数,n(s)表示季节项的平滑参数。
在步骤S102中,根据残差分量,判断第一时间序列数据中是否存在异常数据。
从时间序列数据中依次分解季节分量、趋势分量后,可以获得残差分量。在加法模型中,残差分量=时间序列数据-季节分量-趋势分量;在乘法模型中,残差分量=时间序列数据/(季节分量*趋势分量)。图2示出了采用加法模型进行STL处理的示意图。如图2所示,等号左边的曲线表示时间序列数据,Seasonal表示季节分量,Trend表示趋势分量,Random表示残差分量。
通常情况下,残差分量满足正态分布或是近似正态分布。此时可以先计算残差分量的均值及标准差,然后计算残差分量中的目标数值与均值之差的绝对值,并判断绝对值是否大于标准差的三倍。在绝对值大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值为异常数据;在绝对值不大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值不为异常数据。
如果残差分量满足偏态分布,还可使用箱型图来识别残差分量中的异常数据,利用箱型图上下四分位距判定内外限,内限之外为中度异常数据,外限之外为极度异常数据。
本领域技术人员应理解,还可以在残差分量中设定同比或环比的绝对值每天浮动不超过10%,来进行残差分量的异常监测,在此不作穷举。
在第一时间序列数据中不存在异常数据的情况下,执行步骤S103;在第一时间序列数据中存在异常数据的情况下,执行步骤S104。
在步骤S103中,向数据显示设备推送第一时间系列数据。
其中,数据显示设备例如可以为商务智能看板。
在步骤S104中,停止向数据显示设备推送第一时间系列数据,并触发异常数据告警。
本实施例能够为不同的业务指标分别设置合理的告警阈值,对业务指标的季节性波动具有适应性,从而准确检测到异常业务数据,并熔断基于异常业务数据的下游作业同时触发告警,避免了业务决策人员和运营人员看到异常的业务数据而影响业务决策,提升了基于业务数据进行作业的鲁棒性,同时节省了投入的人力成本。
下面结合图3描述本公开数据监测方法的另一些实施例。
图3示出了本公开另一些实施例的数据监测方法的流程示意图。如图3所示,在图1对应的实施例基础上,本实施例还包括步骤S301~步骤S304。
在步骤S301中,在第一时间序列数据中不存在异常数据的情况下,确定第二时间序列数据中与第一时间序列数据相关联的关联分量。
例如,第一时间序列数据为新用户业务指标的时间序列数据,第二时间序列数据为留存用户业务指标的时间序列数据,二者之间相关联的关联分量为第一时间序列数据自身。
在步骤S302中,将第二时间序列数据分解为关联分量和剩余分量。
例如,相关联的关联分量为第一时间序列数据自身,可以将第二时间序列数据分解为第一时间序列数据以及剩余分量。
在步骤S303中,根据剩余分量,判断第二时间序列数据中是否存在异常数据。
具体的判断过程可以参照步骤S102执行,在此不做赘述。
在第二时间序列数据中不存在异常数据的情况下,执行步骤304;在第二时间序列数据中存在异常数据的情况下,执行步骤305。
在步骤S304中,向数据显示设备推送第二时间系列数据;
在步骤S305中,停止向数据显示设备推送第二时间系列数据,并触发异常数据告警。
本实施例中,在监测到其中业务指标的时间序列数据不存在异常数据后,可以基于该业务指标与其他业务指标的相关性,简化对其他业务指标的时间序列数据的监测过程,减少了执行STL处理的次数,提升了检测异常业务数据的工作效率,同时进一步提升了基于业务数据进行作业的鲁棒性。
下面介绍本公开数据监测方法的一个具体的应用例。
假设业务指标的季节性波动幅值随时间呈正相关,选择乘法模型,使用r软件自带的STL函数或是调用python statsmodels模块进行STL处理。参数设定如下:n(p)=365,n(i)=1,n(o)=6,n(l)=365,n(t)=549,n(s)=21。其中,n(p)是周期中观察点的数量,如以年为周期按天统计时n(p)=365;n(i)是内循环的次数,一般情况下n(i)=0或1;确定好n(i)后,确定迭代次数n(o),满足给定的收敛条件时停止迭代,n(i)=1时,n(o)可直接在5到10中间调整;n(l)通常可以设定为大于或等于n(p)的最小奇数;n(t)一般设定为1.5*n(p)~*2n(p)间的最小奇数;n(s)为不小于7的奇数,随着n(s)的增加,每个周期子序列变得平滑。
去除掉趋势分量和季节分量的影响后,直接分析残差分量即可识别异常数据。通过调整平滑参数、循环次数和季节项变量个数,可以使STL处理对季节性波动具有自适应性。
下面结合图4描述本公开数据监测装置的一些实施例。
图4示出了本公开一些实施例的数据监测装置的结构示意图。如图4所示,本实施例中的数据监测装置40包括:
数据分解模块401,被配置为:对第一时间序列数据进行基于局部加权回归散点平滑法的季节趋势分解STL处理,获得第一时间序列数据的季节分量、趋势分量以及残差分量;异常判断模块402,被配置为:根据残差分量,判断第一时间序列数据中是否存在异常数据;监测控制模块403,被配置为:在第一时间序列数据中不存在异常数据的情况下,向数据显示设备推送第一时间系列数据;在第一时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第一时间系列数据,并触发异常数据告警。
本实施例能够为不同的业务指标分别设置合理的告警阈值,对业务指标的季节性波动具有适应性,从而准确检测到异常业务数据,并熔断基于异常业务数据的下游作业同时触发告警,避免了业务决策人员和运营人员看到异常的业务数据而影响业务决策,提升了基于业务数据进行作业的鲁棒性,同时节省了投入的人力成本。
在一些实施例中,异常判断模块402被配置为:计算残差分量的均值及标准差;计算残差分量中的目标数值与均值之差的绝对值,并判断绝对值是否大于标准差的三倍;在绝对值大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值为异常数据;在绝对值不大于标准差的三倍的情况下,目标数值所对应第一时间序列数据中的数值不为异常数据。
在一些实施例中,还包括:关联确定模块404,被配置为:在第一时间序列数据中不存在异常数据的情况下,确定第二时间序列数据中与第一时间序列数据相关联的关联分量;关联分解模块405,被配置为:将第二时间序列数据分解为关联分量和剩余分量;数据判断模块,被配置为:根据剩余分量406,判断第二时间序列数据中是否存在异常数据;监测处理模块,被配置为:在第二时间序列数据中不存在异常数据的情况下,向数据显示设备推送第二时间系列数据;在第二时间序列数据中存在异常数据的情况下,停止向数据显示设备推送第二时间系列数据,并触发异常数据告警。
本实施例中,在监测到其中业务指标的时间序列数据不存在异常数据后,可以基于该业务指标与其他业务指标的相关性,简化对其他业务指标的时间序列数据的监测过程,减少了执行STL处理的次数,提升了检测异常业务数据的工作效率,同时进一步提升了基于业务数据进行作业的鲁棒性。
在一些实施例中,数据分解模块401被配置为:根据第一时间序列数据的波动幅度,选取STL处理的运算模型。
在一些实施例中,数据分解模块401被配置为:在第一时间序列数据的波动幅度随时间的变化率大于预设值的情况下,在STL处理中采用乘法模型;在第一时间序列数据的波动幅度随时间的变化率不大于预设值的情况下,在STL处理中采用加法模型。
在一些实施例中,数据分解模块401还被配置为:根据第一时间序列数据的业务属性,确定STL处理的模型参数。
在一些实施例中,数据分解模块401被配置为:设置n(p)=365,n(i)=1,n(o)=6,n(l)=365,n(t)=549,n(s)=21;其中,n(p)表示每个季节项周期中观察点的数量,n(i)表示内循环的次数,n(o)表示外循环鲁棒性迭代的次数,n(l)表示低通滤波的平滑参数,n(t)表示趋势项的平滑参数,n(s)表示季节项的平滑参数。
下面结合图5描述本公开数据监测装置的一些实施例。
图5示出了本公开另一些实施例的数据监测装置的结构示意图。如图5所示,该实施例的数据监测装置50包括:存储器510以及耦接至该存储器510的处理器520,处理器520被配置为基于存储在存储器510中的指令,执行前述任意一些实施例中的数据监测方法。
其中,存储器510例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
数据监测装置50还可以包括输入输出接口530、网络接口540、存储接口550等。这些接口530、540、550以及存储器510和处理器520之间例如可以通过总线560连接。其中,输入输出接口530为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为SD卡、U盘等外置存储设备提供连接接口。
本公开还包括一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现前述任意一些实施例中的数据监测方法。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。