一种异常检测方法、服务器及计算机可读存储介质与流程

文档序号:15387727发布日期:2018-09-08 00:46阅读:213来源:国知局

本发明涉及大数据领域,更具体地说,涉及一种异常检测方法、服务器及计算机可读存储介质。



背景技术:

对于大数据平台而言,由于其具备较强的计算能力,作为一种可以被广泛对接使用的接口资源。对于大数据平台自身而言,运行在其上的应用软件当由于使用不当造成管理者无法快速处理的错误时,该应用软件仍然占有甚至于耗尽计算资源。当随着数据量的提高,计算成本逐渐增加,大数据异常检测成为大数据平台业务中不可或缺的功能,而实时异常检测方法更是快速处理错误的重要手段之一。

目前,大数据的实时异常检测可以采用基于流挖掘的流量异常检测方法,基于流挖掘的流量异常检测是指为了节省异常检测检测过程中的专家经验成本,从网络流量中挖掘具有某种隐含的、有潜在价值的模式、信息、关联等,用以检测异常。其主要特点是可以检测已知或未知的异常流,确定异常位置,能够用于实时异常检测。

基于流挖掘的流量异常检测方法中,涉及到隐半马尔可夫链模型、频繁模式检测法、数据包分割检测法等,其中,隐半马尔可夫链模型根据web用户的浏览行为组建web页面链形成访问行为轮廓,如果用户的行为与正常行为轮廓的偏离度超过一定阈值,则认为该行为属于异常,然而在训练马尔可夫链时较为耗时。频繁模式检测法以频繁模式来更新行为模型,并通过滑动窗口对实际数据进行分析,以实时检测入侵行为;但是由于前缀树的构造和调整需要较大的开销,导致全局频繁模式集无法快速更新和维护。数据包分割检测法利用自适应提升方式对多个检测器进行强化学习,增强检测效果。基于流挖掘的流量异常检测方法由于其检测精度高,善于发现隐藏异常,对异常检测有着至关重要的作用。

然而,随着数据的海量化与时效化,采用目前的基于流挖掘的流量异常检测方法进行大数据的实时异常检测时,算法模型较为复杂,计算量大,大数据平台的计算资源严重消耗,耗时长,成本增加。



技术实现要素:

本发明的主要目的在于提出一种异常检测方法、服务器及计算机可读存储介质,旨在解决现有技术中,在进行大数据的实时异常检测时,算法模型较为复杂,计算量大,大数据平台的计算资源严重消耗,耗时长,成本增加的问题。

为解决上述技术问题,本发明提供一种异常检测方法,异常检测方法包括以下步骤:

获取当前时间窗口的目标用户的行为时间序列;

根据目标用户的行为时间序列,从前一时间窗口的最大频繁模式中匹配出目标子行为;

获取目标子行为的目标依赖度系数;

根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度;预设临界条件为目标用户在时间顺序上执行行为的最大允许个数;

判断依赖度是否大于预设阈值;

若是,则确定目标用户的行为异常。

可选的,在获取当前时间窗口的目标用户的行为时间序列之前,还包括以下步骤:

获取前一时间窗口的所有用户的行为时间序列;

根据前一时间窗口的所有用户的行为时间序列,采用prefixspan模式挖掘算法挖掘出前一时间窗口内所有频繁模式;

根据所有频繁模式得出最大频繁模式。

可选的,在根据所有频繁模式得出最大频繁模式之后,还包括以下步骤:

根据前一时间窗口的所有用户的行为时间序列,将用户行为惩罚因子与齐普夫分布曲线相结合,利用最小二乘法拟合,得出最大频繁模式中每个子行为对应的依赖度系数;

用户行为惩罚因子用于对活跃用户进行降权。

可选的,用户行为惩罚因子为1/ln(1+actu),actu为用户的活跃度。

可选的,根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度包括:

根据公式p=kω/ln(1+actu)计算目标用户的依赖度;

p为依赖度,k为目标用户在时间顺序上执行行为的最大允许个数,ω为依赖度系数。

可选的,根据目标用户的行为时间序列,从前一时间窗口的最大频繁模式中匹配出目标子行为包括:

采用dna序列比对算法计算目标用户的行为时间序列与前一时间窗口的最大频繁模式中所有行为时间序列的序列相似度;

将最大频繁模式的所有行为时间序列中序列相似度最高的作为目标子行为。

可选的,在根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度之前,还包括以下步骤:

判断前一时间窗口的依赖度系数计算是否超时;

若是,则获取预设时间窗口内的目标子行为的依赖度系数,以此作为目标依赖度系数;

若否,则确定获取的目标依赖度系数为前一时间窗口的目标子行为的依赖度系数。

可选的,在判断依赖度是否大于预设阈值之后,还包括以下步骤:

若否,则确定目标用户的行为正常,并将当前时间窗口的目标用户的行为时间序列进行离线备份。

进一步地,本发明提供一种服务器,服务器包括处理器、存储器及通信总线;

通信总线用于实现处理器和存储器之间的连接通信;

处理器用于执行存储器中存储的一个或者多个程序,以实现如上的异常检测方法的步骤。

进一步地,本发明提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现如上的一种异常检测方法的步骤。

有益效果

本发明提供了一种异常检测方法、服务器及计算机可读存储介质,该异常检测方法包括以下步骤:获取当前时间窗口的目标用户的行为时间序列;根据目标用户的行为时间序列,从前一时间窗口的最大频繁模式中匹配出目标子行为;获取目标子行为的目标依赖度系数;根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度;预设临界条件为目标用户在时间顺序上执行行为的最大允许个数;判断依赖度是否大于预设阈值;若是,则确定目标用户的行为异常;通过上述方案,不需要进行全局计算,能够在较短的时间内检测出目标用户的行为时间序列异常,计算量及耗时大大减少,提高了实时性能,提高了大数据平台的可靠性,节约了资源成本。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为实现本发明各个实施例一个可选的服务器的硬件结构示意图;

图2为本发明第一实施例提供的一种异常检测方法的基本流程图;

图3为本发明第二实施例提供的一种异常检测方法的基本流程图;

图4为本发明第三实施例提供的一种服务器的示意图。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,为实现本发明各个实施例一个可选的服务器的结构示意图,该服务器至少包括:输入输出(io)总线11、处理器12、存储器13、内存14和通信装置15。其中,

输入输出(io)总线11分别与自身所属的服务器的其它部件(处理器12、存储器13、内存14和通信装置15)连接,并且为其它部件提供传送线路。

处理器12通常控制自身所属的服务器的总体操作。例如,处理器12执行计算和确认等操作。其中,处理器12可以是中央处理器(cpu)。

通信装置15,通常包括一个或多个组件,其允许自身所属的服务器与无线通信系统或网络之间的无线电通信。

存储器13存储处理器可读、处理器可执行的软件代码,其包含用于控制处理器12执行本文描述的功能的指令(即软件执行功能)。

基于上述服务器硬件结构,提出本发明方法各个实施例。

第一实施例

为了解决现有技术中,在进行大数据的实时异常检测时,算法模型较为复杂,计算量大,大数据平台的计算资源严重消耗,耗时长,成本增加的问题,本实施例将提供一种异常检测方法,参见图2,图2为本实施例提供的一种异常检测方法的基本流程图,该异常检测方法包括以下步骤:

s201:获取当前时间窗口的目标用户的行为时间序列;

在一个互联网应用中(例如门户、商城等),用户是向该应用请求业务的人或机器程序。用户的行为指用户u(user)在某个时刻t(time)请求应用的某个业务i(item)形成的三元组tuple(u,t,i)作为用户的一个行为。例如,用户u在某个时刻t请求商城应用的访问科技类书籍的业务。

一个时间窗口内用户u的多个行为按照行为发生的时间先后顺序进行排列,则构成了用户的行为时间序列yu={yu1,yu2,…,yuk,…,yum},其中yuk表示用户在某个时间窗口内用户u在时间顺序上的第k个行为三元组tuple。

时间窗口的间隔可以根据实际需求进行设定,例如可以设置为5分钟、10分钟、20分钟等。

可选的,在s201获取当前时间窗口的目标用户的行为时间序列之前,还包括以下三个步骤:

第一步:获取前一时间窗口的所有用户的行为时间序列;

第二步:根据前一时间窗口的所有用户的行为时间序列,采用prefixspan模式挖掘算法挖掘出前一时间窗口内所有频繁模式fs(frequentpatterns),集合fs={s1,s2,…sn};

第三步:根据所有频繁模式fs得出最大频繁模式maxfs,集合maxfs={ms1,ms2,…,msz}。

其中,prefixspan模式挖掘算法是序列模式分析算法的一种;

集合fs中的s与maxfs中的ms都是用户的行为时间序列,序列由一个或多个行为对象组成,将其作为用户标签。

假设前一时间窗口为wpre,当前时间窗口为wcur,间隔为10分钟,窗口滑动距离为1分钟。若wpre=06:00-06:10,则wcur=06:01-06:11。

在大数据系统中,前一时间窗口的所有用户的行为时间序列的数据量比较庞大,挖掘出的前一时间窗口内所有频繁模式的数据量也比较庞大,按照预设条件对频繁模式中的数据进行筛选,得到最大频繁模式,减少了后续根据当前时间窗口的目标用户的行为时间序列,匹配目标子行为的过程所需的时间,提升了效率。

可选的,在根据所有频繁模式得出最大频繁模式之后,还包括以下步骤:

根据前一时间窗口的所有用户的行为时间序列,将用户行为惩罚因子与齐普夫分布曲线相结合,利用最小二乘法拟合,得出最大频繁模式中每个子行为对应的依赖度系数;

其中,用户行为惩罚因子用于对活跃用户进行降权。

计算ltud(locallytaggeduserdependentdynamiccoefficients,局部标签化用户依赖动态系数)可采用以下方式:对wpre内数据,对于所有用户数据,根据齐普夫(zipf)分布曲线模型,假设用户u在wpre内的请求序列为y={y1,y2…yk},k为用户的连续行为次数。则用户在进行第k个行为时,其对应用的依赖度为p=kω/ln(1+actu)。使用最小二乘法拟合可得出依赖度系数ω,也即ltud。这个ltud是对应到每个标签分类,即最大频繁模式mfs中有z个序列,ltud就有z个ω。

在统计学中有个经典的定律叫“二八定律”:80%的事情是由20%的人处理的。同理,异常检测也如此,80%的流量是20%的网络达人产生的。机器撞库、网络爬虫或应用错误等违反正常的行为都会产生大量流量,而数据中噪音占比增加时,则那些真实有效的小量用户行为数据则会在统计时被忽略;为了防止活跃用户对数据性能影响较大而造成系统对不活跃用户检测能力不足的缺陷,因此需要对活跃的用户进行行为权重的变更;具体的,对活跃的用户进行行为权重的变更包括对活跃的用户进行降权(无论是活跃的异常流量还是正常的用户流量)。降权的方式就是对活跃用户的行为加入惩罚因子。

判断活跃用户的方式:按照用户的行为数量进行降序排序,例如有1万名用户,则取前20%作为活跃用户。

可选的,用户行为惩罚因子为1/ln(1+actu),actu为用户的活跃度,ln是数学中的对数符号。

s202:根据目标用户的行为时间序列,从前一时间窗口的最大频繁模式中匹配出目标子行为;

可选的,s202根据目标用户的行为时间序列,从前一时间窗口的最大频繁模式中匹配出目标子行为包括:

采用dna序列比对算法(smithwaterman,sw)计算目标用户的行为时间序列与前一时间窗口的最大频繁模式中所有行为时间序列的序列相似度;

将最大频繁模式的所有行为时间序列中序列相似度最高的作为目标子行为。

采用dna序列比对算法计算序列相似度、以及将序列相似度最高的作为目标子行为,其原理是将相同顺序的行为元素数量最多的作为目标子行为。

也即,是计算目标用户的行为时间序列与前一时间窗口的maxfs={ms1,ms2,…,msz}的序列相似度,将序列相似度最高的ms作为目标子行为,认为目标用户的行为时间序列与maxfs中的序列相似度最高的ms是同一标签,并给目标用户id打上一个能够关联到ms分类标签。

可选的,序列相似度高于阈值时才认为是有效的子行为;若计算出的所有序列相似度均低于阈值,则认为都是无效的子行为。

序列相似度的阈值可以根据实际情况进行设置,例如70%、75%等。

s203:获取目标子行为的目标依赖度系数;

s204:根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度;预设临界条件为目标用户在时间顺序上执行行为的最大允许个数;

可选的,在s204根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度之前,还包括以下步骤:

判断前一时间窗口的依赖度系数计算是否超时;

若是,则获取预设时间窗口内的目标子行为的依赖度系数,以此作为目标依赖度系数;

若否,则确定s203获取的目标依赖度系数为前一时间窗口的目标子行为的依赖度系数。

其中,预设时间窗口包含的时间窗口的数量至少为1,可以是只取一个时间窗口,也可以是取连续的多个时间窗口作为预设时间窗口;例如预设时间窗口可以是前一时间窗口的再前一时间窗口,或者前一天全天,或者前三天等;

如果前一时间窗口06:00-06:10计算超时了,当前时刻已经到了06:10:06,就取当天前一时间窗口的再前一时间窗口05:50-06:00计算得到的ltud,或者取前一天全天的数据计算得到的ltud。

在不同硬件环境中,由于计算性能的不一致或者网络延迟可能会造成计算超时(例如,大于时间窗口的间隔加上5秒),当超时后,需要使用近期历史数据(例如一天或上一时间窗口)获取到的ltud;若未超时,则直接使用前一时间窗口的ltud。

可选的,s204根据目标依赖度系数、计算目标用户在预设临界条件下的依赖度包括:

根据公式p=kω/ln(1+actu)计算目标用户的依赖度;

p为依赖度,k为目标用户在时间顺序上执行行为的最大允许个数,ω为依赖度系数。

k表示目标用户在时间顺序上第k个行为时,可能就不会再继续有行为了。例如k=5,但是若发现目标用户有7个行为,那么目标用户将作为异常处理。

s205:判断依赖度是否大于预设阈值;若是,则进入s206;若否,则进入s207;

依赖度的预设阈值可以根据实际情况进行设置,例如为0.3、0.4等。

s206:确定目标用户的行为异常。

在确定目标用户的行为异常之后,对目标用户进行异常处理。

s207:确定目标用户的行为正常。

确定目标用户的行为正常,并将当前时间窗口的目标用户的行为时间序列进行离线备份,以用于在计算超时的情况下,根据历史数据计算ltud。

通过本实施例的实施,在流挖掘的异常检测方法可以采取最近的两个时间窗口,而不需要进行全局计算,能够在较短的时间内检测出目标用户的行为时间序列异常,计算量及耗时大大减少,在动态用户依赖度的基础上提高了对大数据异常检测的实时性能,提高了大数据平台的可靠性,节约了资源成本。

本实施例提出的模型简单易懂,可维护性高,与非线性的复杂流挖掘算法相比能够节约大量计算资源与成本,并能够在较短的时间内检测出用户行为时序异常,提高了大数据平台的可靠性。为当前实时异常检测中计算量大,耗时长等热点问题,提供了一种可行的解决方案,为产业界提供了参考。

第二实施例

本实施例的思想是:在某一时间窗口内包含用户信息的流量数据上,对于任意用户,在捕获到其行为流量后对其进行标签化分类,计算ltud,将此作为参考;在下一个时间窗口中对进入的用户流量结合ltud计算该用户对应用的依赖度,当依赖度大于预设阈值,且用户行为时序未收敛,则认为是该用户流量存在异常。该方法在流挖掘的异常检测方法中仅仅需要最近的两个时间窗口,并不需要全局计算,计算量及耗时将大大减少。

具体的,首先,选择上一滑动时间窗口的用户行为数据,利用最大频繁模式确定用户在其标签分类中的一般行为模式;其次,计算上一滑动时间窗口中用户依赖度系数,该依赖度系数的计算方法是将用户行为惩罚因子与齐普夫分布曲线相结合,利用最小二乘法计算得到;然后,当前滑动窗口中有用户流量进入时,根据上一个时间窗口的依赖度系数计算用户对应用的依赖度;最后,将依赖度与理论阈值比较,根据用户行为时序是否收敛快速检测实时异常。

本实施例将提供一种具体的异常检测方法的实施例,参见图3,图3为本实施例提供的一种异常检测方法的流程图;

s301:用户标签化处理;

大数据系统将时间窗口06:00-06:10内的所有用户行为进行捕获,某个用户u的行为序列为yu,则所有的用户行为序列构成了y。y类似矩阵,但是列数是不等长的,每一行表示一个用户的行为序列。例如下面的矩阵中的y23表示的是标号为2的用户访问了标号为3的业务,且时间顺序上是属于他的第二个行为。

y11y12y13

y21y23

y31y13y14

对应到真实的数据则为如下场景:

这里是为了描述方便,例如将标号为1的用户的访问行为变成一个字母a,a表示用户1的一个行为。

在以上表中,可以看出经过行为的“最大公约数化”,一个用户的行为总能找到一个和其最相似的mfs中的一个。

例如y1:[abcdefcedf],其中最相似的mfs的序列有{abce,cde,ef,df},这里需要采用dna序列比对方法将每个mfs的序列ms与y1进行序列相似度比较,可以明显看出ms=abce和y1相似度是最高的(原理是相同顺序的元素数量最多),因此可以认为和ms=abce是同一类,则可以给用户1打上一个能够关联到ms分类标签。

s302:行为权重变更;

为了防止活跃用户对数据性能影响较大而造成系统对不活跃用户检测能力不足的缺陷,需要对活跃用户行为加入惩罚因子1/ln(1+actu),其中actu为用户u的活跃度。

s303:计算依赖度系数;

计算依赖度系数ltud,将矩阵y的数据放入到依赖度公式p=kω/ln(1+actu),使用最小二乘法拟合可得出依赖度系数ω,也即ltud。这个ltud是对应到每个标签分类,即最大频繁模式mfs中有z个序列,ltud就有z个ω。

s304:判断计算是否超时;若否,则进入s305;若是,则进入s306;

s305:获取实时依赖度系数,进入s307;

s306:获取历史依赖度系数,进入s307;

如果06:00-06:10窗口计算超时了,当前时刻已经到了06:10:06,就取昨天全天数据计算得到的ltud或者当天05:50-06:00计算得到的ltud。

s307:计算用户依赖度;

s308:判断依赖度是否超出预设阈值,若是,则进入s309;若否,则进入s310;

s309:进行异常处理,进入s311;

s310:通过检测,并进行离线备份,进入s311。

s311:结束。

时间窗口06:01=06:11捕获的用户1访问行为序列为y1={abceger},先从最大频繁模式中找到它最匹配的ms,然后找到对应的ltud中的ω。对于公式p=kω/ln(1+actu),已知ω和actu,设定依赖度阈值p=0.3,则能求出k值。求出的k表示用户在时间顺序上第k个行为时,可能就不会再继续有行为了。例如k=5,但是我们发现y1有7个行为,那么y1将作为异常处理。

通过本实施例的实施,在流挖掘的异常检测方法可以采取最近的两个时间窗口,而不需要进行全局计算,能够在较短的时间内检测出目标用户的行为时间序列异常,计算量及耗时大大减少,在动态用户依赖度的基础上提高了对大数据异常检测的实时性能,提高了大数据平台的可靠性,节约了资源成本。

本实施例提出的模型简单易懂,可维护性高,与非线性的复杂流挖掘算法相比能够节约大量计算资源与成本,并能够在较短的时间内检测出用户行为时序异常,提高了大数据平台的可靠性。为当前实时异常检测中计算量大,耗时长等热点问题,提供了一种可行的解决方案,为产业界提供了参考。

第三实施例

本实施例提供一种服务器,参见图4,图4为本实施例提供的一种服务器的示意图,该服务器包括处理器401、存储器402及通信总线403,其中:

通信总线403用于实现处理器401和存储器402之间的连接通信;

处理器401用于执行存储器402中存储的一个或多个程序,以实现第一实施例、第二实施例中异常检测方法的步骤。

通过本实施例的实施,在流挖掘的异常检测方法可以采取最近的两个时间窗口,而不需要进行全局计算,能够在较短的时间内检测出目标用户的行为时间序列异常,计算量及耗时大大减少,在动态用户依赖度的基础上提高了对大数据异常检测的实时性能,提高了大数据平台的可靠性,节约了资源成本。

本实施例提出的模型简单易懂,可维护性高,与非线性的复杂流挖掘算法相比能够节约大量计算资源与成本,并能够在较短的时间内检测出用户行为时序异常,提高了大数据平台的可靠性。为当前实时异常检测中计算量大,耗时长等热点问题,提供了一种可行的解决方案,为产业界提供了参考。

第四实施例

本实施例提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现第一实施例、第二实施例中异常检测方法的步骤。

通过本实施例的实施,在流挖掘的异常检测方法可以采取最近的两个时间窗口,而不需要进行全局计算,能够在较短的时间内检测出目标用户的行为时间序列异常,计算量及耗时大大减少,在动态用户依赖度的基础上提高了对大数据异常检测的实时性能,提高了大数据平台的可靠性,节约了资源成本。

本实施例提出的模型简单易懂,可维护性高,与非线性的复杂流挖掘算法相比能够节约大量计算资源与成本,并能够在较短的时间内检测出用户行为时序异常,提高了大数据平台的可靠性。为当前实时异常检测中计算量大,耗时长等热点问题,提供了一种可行的解决方案,为产业界提供了参考。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1