异常指标检测方法及装置
技术领域
本发明涉及数据分析技术,尤其涉及异常数据检测。
背景技术
在商业、生产等业务活动中,通常需要监控当前业务活动是否发生异常。为此,通常设计出各类关键指标,并连续观察记录这些指标在各个时间段的取值(本文简称为时间序列指标),并据此判断该指标是否发生异常。时间序列指标通常具备较明显的周期性特征,对于时间序列指标异常的判断,现有技术中通常采用的解决方法包括专家经验:即将当前指标与一预定阈值进行比较以判断是否异常值。然而对于专家经验,由于非常依赖有经验的人对于特定业务场景的理解,因此造成的缺点包括:a)需要每个指标单独制定差异化规则,工作量大,难以批量解决大量业务指标的异常检测问题。
现有技术中还采用一种时间序列分解方法来检测指标异常。最常用的时间序列分解的方法包括加法模型和乘法模型,分离出时间序列指标的长期趋势因素、季节变动因素、循环变动因素和不规则变动因素。对于从正常业务活动下的指标值生成的不规则变动因素,通常符合正常分布,如果某个时刻的指标值对应的不规则变动因素明显偏离正常分布对应的取值,则说明当前的指标发生异常。然而对于时间序列分解,由于业务活动产生的时间序列指标通常并不符合理想情况下的某类时间序列模型,因此带来的缺点包括:a)难以分解出准确的趋势因素、周期因素和不规则变动因素,或者根本就不存在稳定的趋势因素和周期因素,导致不规则变动因素的计算不可能或者出现偏差,难以在指标异常判断上达到令人满意准确度;b)时间序列分解算法的实际运用成本较高,这些成本包括:算法理解的成本、算法实施的复杂度、算法占用的运算资源。
发明内容
本发明希望提出一种改进的异常活动检测技术,其可以忽略时间序列指标本身的模型或分布特征,通过将具备时间周期性的业务指标统一转换为符合标准分布的数据,从而提供一种基于概率分布进行异常判断的通用方法,可准确计算出特定时间段、特定业务指标值的发生概率,并根据该概率判断业务指标是否发生了异常。该方法不需要对业务指标进行时间序列的周期性分解,因此实施方法较为简洁、高效。
根据本发明的一个方面,提供一种检测业务中异常指标的方法,包括:获取一观测时间窗内的至少一个业务指标值序列,其中该观测时间窗由一连续时间周期内至少一个时间周期及每个时间周期内的多个观测时间点定义,其中该至少一个业务指标值序列包括该至少一个时间周期内的按时间点排序的多个业务指标值,其中每个业务指标值指示了对应的时间周期内不同时间点的业务活动的业务指标;将所述至少一个业务指标值序列转换为符合标准分布的至少一个按所述时间点排序的标准指标值序列;针对该标准指标值序列中的每一个标准指标值,确定发生大于该标准指标值的预测概率;基于所述预测概率,标识所述观测时间窗内的至少一个业务指标值序列中代表异常活动的异常指标值。
根据本发明的一个方面,提供一种检测业务中异常指标的装置,包括:指标获取模块,用于获取一观测时间窗内的至少一个业务指标值序列,其中该观测时间窗由一连续时间周期内至少一个时间周期及每个时间周期内的多个观测时间点定义,其中该至少一个业务指标值序列包括该至少一个时间周期内的按时间点排序的多个业务指标值,其中每个业务指标值指示了对应的时间周期内不同时间点的业务活动的业务指标;指标转换模块,用于将所述至少一个业务指标值序列转换为符合标准分布的至少一个按所述时间点排序的标准指标值序列;概率计算模块,用于针对该标准指标值序列中的每一个标准指标值,确定发生大于该标准指标值的预测概率;异常标识模块,用于基于所述预测概率,标识所述观测时间窗内的至少一个业务指标值序列中代表异常活动的异常指标值。
本发明还提供一种装置,包括:存储有指令的存储器;控制器,通过执行所述指令来实现根据本发明的方法。
根据本发明,还提供一种机器可读介质,其上存储有机器可读指令,其中该指令在由所述机器执行时使该机器执行根据本发明的方法。
附图说明
图1示出根据本发明实施例的异常活动检测装置的框图;
图2示出根据本发明实施例的指标转换模块的框图;
图3示例性示出了标准正态分布曲线图;
图4示出根据本发明另一实施例的异常活动检测的流程图;
图5示出根据本发明另一实施例的计算装置示意图。
具体实施方式
下面结合附图对本发明实施例提供的装置与方法及进行详细说明。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的异常指标检测装置的框图。如图所示,该检测装置100包括指标获取模块200、指标转换模块300、概率计算模块400以及异常标识模块500。
指标获取模块200获取业务活动中具有时间周期性的业务指标,按照本发明的一个实施例,为便于查看某一时间范围内的业务活动,设置一个观测时间窗W,其中指标获取模块200设计为获取该观测时间窗W内的发生的多个业务指标值,其中观测时间窗W由一连续时间周期内选定的M个时间周期及每个时间周期内的N个观测时间点定义,这里M可以大于或等于1,而N大于1。由此,在该观测时间窗W内,指标获取模块200可以获取M×N个业务指标值,该M×N个业务指标值构成了M个按时间排序的业务指标值序列[Xi,j],其中每个业务指标值Xi,j指示了对应的时间周期i内不同预测时间点j的业务活动的业务指标。
指标转换模块300将M个业务指标值序列[Xi,j]转换为符合标准分布的M个按时间排序的标准指标值序列[Zi,j],其中每个标准指标值Zi,j基于时间周期i及之前M-1个时间周期内的同一时间点j的M个业务指标值Xi,j确定。按照一个实施例,指标转换模块300将M个业务指标值序列转换为M个指标偏离度序列[Yi,j],其中该M个指标偏离度序列中的每个指标偏离度Yi,j是基于时间周期i及之前M-1个时间周期内的同一时间点j的M个业务指标值确定的。此外,指标转换模块300确定每个指标偏离度Yi,j的标准差σi,j,并基于每个指标偏离度Yi,j的标准差σi,j,将指标偏离度Yi,j转换为对应的标准指标值Zi,j。图2示出了根据一个实施例的指标转换模块300的框图。
如图2所示,指标转换模块300包括中间值标识单元302,偏离度计算单元304,标准差计算单元306以及标准化单元308。如前所述,根据生产活动生成业务指标值Xi,j,其中i表示观测的时间周期,j表示观测时间点,例如,如果某个网站的访问量用X表示,时间周期为每天,时间点为每隔1个小时,则X3,0表示第3天凌晨0点到1点的访问量,X11,23表示第11天夜里23点到24点的访问量。为便于说明,这里假定需要观测一个连续时间周期例如365天内时间窗W为M天内N个时间点上的M*N个业务指标值中是否存在异常。因此,由指标获取模块200获取到M个业务指标值的时间序列,其中每个序列包含N个业务指标值。
中间值标识单元302确定M*N个业务指标值中每个业务指标值Xi,j的指标中间值,在以下示例中,以中位数med_Xi,j来表示指标中间值。在统计学上,将按顺序排列的一组数据中居于中间位置的数称为中位数。指标中位数med_Xi,j是当前业务指标值Xi,j与第i时间周期之前M-1个时间周期内的同一时间点j的M-1个业务指标值之间的中位数,即
med_Xi,j=median(Xi,j,Xi-1,j,…,Xi-(M-1),j),其中median代表中位数计算。
作为一个示例性说明,假定观测4月15号至4月21号这7天内从9点到13点这个时间窗W内的业务指标是否发生异常。那么对业务指标值X21,13,则用于确定X21,13的指标中位数med_X21,13的业务指标分别为X21,13、X20,13、X19,13、X18,13、X17,13、X16,13、X15,13。而对于确定该时间窗W内的其它指标值例如X18,10的指标中位数med_X18,10,则所考虑的业务指标值为X18,10、X17,10、X16,10、X15,10、X14,10、X13,10、X12,10,为此,指标获取模块200需要进一步获取在第12天、第13天、第14天的业务指标值X12,10、X13,10、X14,10。以此方式,中间值标识单元302可为M个业务指标值序列中的每个业务指标值Xi,j确定其指标中位数med_Xi,j。
随后,偏离度计算单元304将M个业务指标值序列[Xi,j]转换为M个指标偏离度序列[Yi,j],这里每个指标偏离度Yi,j是基于业务指标值Xi,j及其指标中位数med_Xi,j确定的。在一个示例中,指标偏离度Yi,j基于Xi,j与指标中位数med_Xi,j的比值来确定,例如,Yi,j=(Xi,j/med_Xi,j)-1。此外,偏离度计算单元304进一步确定每个指标偏离度Yi,j的偏离度中间值,在以下示例中,仍以偏离度中位数med_Yi,j来表示偏离度中间值,其中指标偏离度Yi,j的偏离度中位数med_Yi,j是由指标偏离度Yi,j与第i时间周期之前M-1个时间周期内的同一时间点j的M-1个指标偏离度之间的中位数,即
med_Yi,j=median(Yi,j,Yi-1,j,…,Yi-(M-1),j)。
标准差计算单元306确定每个指标偏离度Yi,j的标准差σi,j。按照一个示例,针对每个指标偏离度Yi,j,标准差计算单元306确定同一时间点j上指标偏离度Yi,j及之前M-1个指标偏离度到偏离度中位数med_Yi,j的偏差绝对值之间的偏差中间值MADi,j,该偏差中间值MADi,j可以是中位数,即:
MADi,j=median[|Yi,j-med_Yi,j|,|Yi-1,j-med_Yi,j|,…|Yi-(M-1),j-med_Yi,j|]。
本发明实施例不限于中位数,例如也可以采用指标偏离度Yi,j及之前M-1个指标偏离度到偏离度中位数med_Yi,j的偏差绝对值之间的算术平均值来确定该偏差中间值MADi,j。
由此,标准差计算单元306基于每个时间点(i,j)上的偏差中位数MADi,j,计算该时间点(i,j)上指标偏离度的标准差σi,j,在一个示例中,标准差σi,j=k*MADi,j,式中k是调整因子,例如对于符合标准正态分布的样本,则k=1.4826。
随后,标准化单元308利用标准差计算单元306计算的针对每个时间点(i,j)上的各指标偏离度确定的标准差σi,j,对由偏离度计算单元304所确定的指标偏离度Yi,j相对于偏离度中位数med_Yi,j的偏差执行归一化处理,从而获取对应于业务指标值Xi,j的标准指标值Zi,j,即Zi,j=[Yi,j-med_Yi,j]/σi,j。
不难理解,经过上述处理后,M个业务指标值序列[Xi,j]被转换成M个标准指标值序列[Zi,j],其中,经过上述转换处理后,转换后得到M*N个标准指标值Zi,j符合标准正态分布。
回到图1,在转换模块300将业务指标值序列[Xi,j]转为符合标准分布的标准指标值序列[Zi,j]后,概率计算模块400可以按照标准分布的特性,针对标准指标值序列中的每一个标准指标值Zi,j,计算发生大于该标准指标值Zi,j的预测概率Pi,j。例如,对于图3所示的标准正态分布,可以通过计算标准正态分布曲线下大于标准指标值Zi,j的曲线面积来确定预测概率Pi,j。
异常标识模块500基于预测概率Pi,j,标识观测时间窗W内与标准指标值Zi,j对应的每个业务指标值Xi,j所代表的指标是否异常。在一个实施例中,可通过设置一个置信概率PT,将观测时间窗W内的多个业务指标值中对应的预测概率P小于置信概率PT的业务指标值确定为异常指标值,表明其业务活动是异常的。
这里需要指出的是,虽然在上面实施例中,中间值标识单元302以及偏离度计算单元304是通过确定中位数方式分别确定指标Xi,j的指标中间值med_Xi,j以及偏离度Yi,j的中间值med_Yi,j。但是不难理解,本发明不限于此,也可以采用本领域已知的其它方式来计算中间值,例如,指标中间值med_Xi,j可通过当前业务指标值Xi,j与第i时间周期之前M-1个时间周期内的同一时间点j的M-1个业务指标值之间的算术平均值来确定,即
med_Xi,j=Avg(Xi,j,Xi-1,j,…,Xi-(M-1),j),其中Avg代表算术平均计算。
类似地,偏离度中间值med_Yi,j可通过偏离度Yi,j与第i时间周期之前M-1个时间周期内的同一时间点j的M-1个偏离度之间的算术平均值来确定,即
med_Yi,j=Avg(Yi,j,Yi-1,j,…,Yi-(M-1),j),其中Avg代表算术平均计算。
下面以某种业务指标冲突率演示数据为例,演示根据本发明的上述实施例的由指标转换模块300、概率计算模块400以及异常标识模块500执行的指标转换与概率预测处理。如表1所示,指标获取模块200以时间周期为天、观测时间点相隔1小时情况下获取到的指标冲突率数据的原始序列X,这里为便于描述,如表1所示,仅列出示例的2018年4月1日至2018年4月21日的上午9点至下午13点的原始序列X。如表1中阴影部分所示,希望观测的是时间窗W为2018年4月15号至2018年4月21号7天周期内的指标是否出现异常。因此,在该时间窗口内包含了属于7个时间周期的7个业务指标序列,其中每个序列包含5项数据,即总共包含7*5个业务指标数据X。
表1
中间值标识单元302首先确定7*5个业务指标值中每个业务指标值Xi,j的指标中位数med_Xi,j,该中位数代表了当前业务指标值Xi,j的一个指标基准观测值。例如,对于当前观测时间为21号13点的数据X21,13=0.118970863,指标转换模块300基于同属于13点的4月15号至21号的业务指标值,可确定其最近7天同时刻的指标中位数med_X21,13=0.11946929。不难理解,如果要观测其它时间的业务指标,例如19号13点的业务指标值X19,13=0.122551749,则用于计算X19,13的指标中位数med_X19,13的业务指标范围为X19,13、X18,13、X17,13、X16,13、X15,13、X14,13以及X13,13。表2示出了依据上述方式为2018年4月15号至2018年4月21号期间的各业务指标确定的中位数。
表2
在确定了各业务指标值Xi,j的指标中位数med_Xi,j后,偏离度计算单元304将各业务指标值Xi,j转换成指标偏离度Yi,j,从而形成指标偏离度序列[Yi,j],即Yi,j=(Xi,j/med_Xi,j)-1。表3示出了各指标的偏离度数据。
表3
以X16,9=0.111097682为例,经过转换操作:(X16,9/med_X16,9)-1后,可确定当前观测到的指标值X16,9相对表2对应的基准观测值med_X16,9(0.111097682)的偏离度为0,即偏离度Y16,9=0。再以X21,13=0.118970863为例,经过转换操作:(X21,13/med_X21,13)-1后,可确定当前观测到的指标值X21,13相对于基准观测值med_X21,13(=0.11946929)的偏离度为0.118970863÷0.11946929-1=-0.004172009,即表3中所示的指标偏离度Y21,13=-0.004172012。这里需要指出的是,表3中的偏离度数据是基于各业务指标的实际观测到的原始数据X科学计算的,且观测到的各数据X精确到小数点后15位,而在本说明书中由于表格宽度及篇幅所限,表1、表2中列出的各数据实际为小数点后9位的数据,因此,会存在着类似结合X21,13计算偏离度Y21,13时的差异即-0.004172009与-0.004172012之间的差异。以此方式,偏离度计算单元304可计算出2018年4月15号至2018年4月21号期间的各业务指标观测值的偏离度,如表3所示。
随后,偏离度计算单元304确定这7个指标偏离度序列中每个偏离度Yi,j的偏离度中位数med_Yi,j。仍以21号13点处的指标偏离度Y21,13=-0.004172012为例,基于该观测时间窗内的13点处的7个偏离度(即Y21,13、Y20,13、Y19,13、Y18,13、Y17,13、Y16,13、Y15,13)的值,可确定Y21,13的偏离度中位数即偏离度基准med_Y21,13为-0.004172012。表4示出了2018年4月15号至2018年4月21号期间的各业务指标观测值的偏离度的中位数。
表4
接下来,标准差计算单元306确定每个指标偏离度Yi,j的标准差σi,j。
首先,针对每个指标偏离度Yi,j,标准差计算单元306确定同一时间点j上指标偏离度Yi,j及之前6个指标偏离度到偏离度中位数med_Yi,j的偏差绝对值之间的中位数MADi,j,即
MADi,j=median[|Yi,j-med_Yi,j|,|Yi-1,j-med_Yi,j|,…|Yi-(M-1),j-med_Yi,j|],在本例中M为7。例如,对于MAD21,13:
MAD21,13=median[|Y21,13-med_Y21,13|,|Y20,13-med_Y21,13|,|Y19,13-med_Y21,13|,|Y18,13-med_Y21,13|,|Y17,13-med_Y21,13|,|Y16,13-med_Y21,13|,|Y16,13-med_Y21,13|]=0.020041349。下面表5示出了基于上述公式确定的各业务指标的MADi,j值。
表5
由此,标准差计算单元306可计算出各观测时间点上各指标偏离度的标准差σi,j,例如在标准正态分布中,标准差σi,j=1.4826*MADi,j。下面表6示出了按照标准正态分布针对各业务指标值Xi,j分别计算出的标准差σi,j。
表6
在计算出各观测时间点上各指标偏离度的标准差σi,j之后,标准化单元308根据公式Zi,j=[Yi,j-med_Yi,j]/σi,j,对各指标偏离度Yi,j执行归一化处理从而生成对应于各业务指标值Xi,j的标准指标值Zi,j。例如对于X21,13,其标准指标值Z21,13=(-0.004172012-(-0.004172012))÷0.029713304=0.0000。对于X17,11,其标准指标值Z17,11=(-0.05668344-(-0.00180928))÷0.027416568=-2.0015。依照上述方式,均可计算出各指标X对应的标准指标值Z,从而形成包含符合标准正态分布的7个标准指标序列[Zi,j],如下面表6所示。
表6
在生成于标准指标值序列[Zi,j]后,概率计算模块400可以按照标准正态分布的特性,针对每一个标准指标值Zi,j,计算发生大于该标准指标值Zi,j的预测概率P。例如,如图3所示,对于Z21,11=1.9121,通过计算标准正态分布曲线下大于1.9121的曲线面积可确定对应的预测概率P值即P=0.028,也就是说,对于业务指标值X21,11=0.121572359而言,在当前时间窗W下,产生该指标值的概率仅为2.8%。以此方式,如下面表7所示,概率计算模块400计算出对每一个标准指标值Zi,j值发生大于该值的预测概率Pi,j。
表7
异常标识模块500可基于所确定的各业务指标值的预测概率Pi,j,来设定一个置信概率PT,例如4%,如表7中阴影标示的数据所示,2018年4月17日9点的业务指标即X17,9、2018年4月18日12点的业务指标即X18,12、2018年4月20日12点的业务指标即X20 12以及2018年4月21日11点的业务指标即X21,11的概率P值均低于置信概率4%,因此异常标识模块500可确定这些业务指标均为异常指标。
这里需要指出的是置信概率PT是一个可随着时间而动态变化的概率,随着观测时间窗内的业务指标值的变化而可能变化,因此本发明可以动态地确定出特定时间段、特定业务指标的发生概率,从而确定出异常活动。
图4示出根据本发明一个实施例的确定业务中异常活动方法的流程图。如图所示。在步骤402,获取观测时间窗W内的M*N个业务指标值,其中观测时间窗W由一连续时间周期内M个时间周期及每个时间周期内的N个观测时间点定义,其中每个业务指标值Xi,j指示了对应的第i时间周期内第j时间点的业务活动的业务指标。
在步骤404,将M个业务指标值序列转换为符合标准分布的M个按时间排序的标准指标值序列[Zi,j],按照一个示例,每个标准指标值Zi,j基于时间周期i及之前M-1个时间周期内的同一时间点j的M个业务指标值Xi,j确定。在该示例中,按照每个观测时间点j,将M个业务指标值序列转换为M个指标偏离度序列[Yi,j],其中每个指标偏离度Yi,j是基于时间周期i及之前M-1个时间周期内的同一时间点j的M个业务指标值确定的;随后,基于每个观测时间点上指标偏离度Yi,j的标准差σi,j,将每个指标偏离度Yi,j转换为标准指标值序列中的对应时间周期上的标准指标值,从而形成M个标准指标值序列[Zi,j],其中Zi,j=[Yi,j-med_Yi,j]/σi,j,
σi,j=k*MADi,j,而MADi,j由下式确定:
MADi,j=median[|Yi,j-med_Yi,j|,|Yi-1,j-med_Yi,j|,…|Yi-(M-1),j-med_Yi,j|]。
在步骤406,对于M个标准指标值序列中的每一个标准指标值Zi,j,确定在标准分布下发生大于该标准指标值Zi,j的预测概率Pi,j。在步骤408,基于预测概率Pi,j,标识所述观测时间窗内的每个业务指标值Xi,j是否是异常的,其中如果业务指标值Xi,j的预测概率Pi,j大于置信概率PT,则标识业务指标值Xi,j为正常指标,否则如果预测概率Pi,j小于置信概率PT,则确定业务指标值Xi,j为异常概率。
这里需要指出的是,虽然结合上述优选实施例描述了本发明,但显然本发明不限于此。此外,图1、2中的各模块、单元可以包括处理器、电子设备、硬件设备、电子部件、逻辑电路、存储器、软件代码、固件代码等,或者它们的任意组合。技术人员还将认识到的是,结合本文公开内容描述的各种说明性的逻辑方框、模块和方法步骤可以实现为电子硬件、计算机软件或二者的组合。以软件实现为例,作为一个逻辑意义上的设备,是通过处理器将非易失性存储器中对应的计算机程序指令读取内存中运行形成的。从硬件层面而言,如图5所示,在一种实现方式中,根据本发明的异常指标确定设备可以由一个或多个计算设备实现,除了图5所示的处理器、内存、网络接口以及非易失性存储器之外,实施例中实现异常指标确定的计算设备通常根据其实际功能,还可以包括其它硬件,对此不再赘述。
本发明另一实施例提供的机器可读介质上存储有机器可读指令,该机器可读指令在被计算机执行时,使计算机执行本文公开的前述的任一种方法。具体地,可以提供配有机器可读介质的系统或者装置,在该机器可读介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统的计算机读出并执行存储在该机器可读介质中的机器可读指令。在这种情况下,从机器可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的机器可读介质构成了本发明的一部分。
需要说明的是,上述各流程和设备的结构图中不是所有的步骤或模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例,本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。