一种异常数据检测的方法、装置及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种异常数据检测的方法、装置、及设备。
背景技术
近些年来,随着互联网的迅猛发展,促使了互联网的运维监控工作越来越受到重视,其中监控系统是整个运维环节最重要的一部分,目前各大互联网公司都开发了针对自己网络系统的运维监控系统。例如,支付宝XFLUSH监控系统,主要监控支付宝的运维环境,为金融交易的正常运行提供了一定的保障。监控系统可以对服务器、操作系统、中间件、应用等进行全面的监控,可以在事前预警发现故障,而故障发现的越及时,运维人员才能够及时的对故障进行处理,因此,对监控对象进行及时的检测,判断是否有异常情况是运维监控中亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种异常数据检测的方法、装置及设备,用于提高数据检测的时效性。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种异常数据检测的方法,包括:
获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据;
根据检测模型,判断所述待检测数据是否异常,得到判断结果;
当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据;
当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据;
根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
本说明书实施例提供的一种异常数据检测的装置,包括:
数据获取模块,用于获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据;
异常数据判断模块,用于根据检测模型,判断所述待检测数据是否异常,得到判断结果;
异常数据确定模块,用于当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据;
正常数据确定模块,用于当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据;
模型更新模块,用于根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
本说明书实施例提供的一种异常数据检测的设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据;
根据检测模型,判断所述待检测数据是否异常,得到判断结果;
当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据;
当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据;
根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本说明书实施例提供的检测方法中当检测数据为正常数据时,就会利用正常的检测数据进行模型更新,更新时间可以在秒级或者更小,不再需要设定时间窗口利用批量级数据对模型进行更新,时效性强,检测模型更新时间小于运维监控过程中日志采集系统的延时时间,无需用户等待模型更新时间,可以对数据进行实时检测,提高了用户的体验性。
另外,本说明书部分实施例中的检测模型利用遗忘因子对模型进行更新,可降低历史数据对模型的影响,降低误报率,增加准确率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种异常数据检测的方法的应用场景的示意图;
图2为本说明书实施例提供的一种异常数据检测的方法的流程示意图;
图3为本说明书实施例提供的一种异常数据检测的方法的原理框图;
图4为本说明书实施例提供的一种异常数据检测的方法中异常判断原理图;
图5为本说明书实施例提供的另一种异常数据检测的方法的流程示意图;
图6为本说明书实施例提供的再一种异常数据检测的方法的流程示意图;
图7为本说明书实施例提供的一种异常数据检测的装置的结构示意图;
图8为本说明书实施例提供的一种异常数据检测的设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着计算机和互联网技术的迅速发展,很多业务都可以在网上进行,这给用户带来了方便,同时为了确保业务处理的安全性,会对业务处理中的各项指标进行监控,例如,监控服务器的CPU占用率、内存使用率,当CPU占用率过高或者内存使用率过高时会造成服务器的瘫痪,进而造成业务不能被正常处理;又如,在支付宝交易的过程中,可以检测与各大银行之间的交互情况,如,交易时各银行所占比例,当监控到某银行的比例急剧增大或者减小时,可能此银行出现了问题,需要运维人员注意。
目前,监控系统中的检测单元一般是人为根据经验设定一个阈值,作为发出警报或者异常判断的阈值,并且在对系统中的检测模型进行更新时,需要设定更新的时间窗口,利用一批数据对模型进行更新,更新时间一般在几个小时,需要等待更新完成后才可以继续进行检测,时效性较差,用户体验性较低。
本说明书实施例提供的检测方法中当检测数据为正常数据时,就会利用正常的检测数据进行模型更新,更新时间可以在秒级或者更小,不再需要设定时间窗口利用批量级数据对模型进行更新,时效性强,无需用户等待模型更新时间,提高了用户的体验性,也可以对数据进行实时检测,提高了检测的效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本说明书实施例中一种异常数据检测的方法的应用场景的示意图。如图1所示,整体架构中,主要包括数据监控设备1和数据检测设备2。用户3可以为网络运维人员,利用数据检测设备2检测监控设备1传输过来的检测数据,检测设备中包括检测系统,检测系统中包括检测模型,利用检测模型对检测数据进行检测。其中数据监控设备1可以将检测数据传输到数据库4中,检测设备从数据库4中获取检测数据;数据检测设备2还可以直接从数据监控设备1中获取检测数据。在实际应用中,数据监控设备1和数据检测设备2可以是同一设备,也可以是不同设备,数据监控设备1也可以是多台设备构成的监控系统,数据检测设备2也可以是由多台设备构成的检测系统。
图2为本说明书实施例提供的一种异常数据检测的方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。
如图2所示,该流程可以包括以下步骤:
步骤110,获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据。
随着计算机以及网络的发展,我们可以对服务器以及业务情况等进行监控,可以监控服务器的性能指标,如CPU占用率,也可以监控业务的处理情况,如交易的成功率。在实际应用中这些服务器以及业务情况等内容都会生成日志进行保存,本说明书实施例中的待检测数据就可以从生成的日志中获取日志数据。通常情况下,各个网站或者公司都会采用日志收集系统收集日常工作中的日志,收集日志的工具也多种多样,例如,FaceBook公司的Scribe日志系统,Apache公司的Chukwa日志系统等日志系统,本说明书实施例中的待检测数据可以包括由日志收集系统收集的日志数据,一般为随时间变化而变化的时序型数据,这里具体的日志系统不做限定,只要能够获取到待检测数据即可。
步骤120,根据检测模型,判断所述待检测数据是否异常,得到判断结果。
在本说明书实施例中可以将所述待检测数据进行预处理,例如标准化处理,将处理后的所述待检测数据按照所述日志采集系统的采集时间顺序根据所述检测模型逐条进行判断。
步骤130,当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据。
本说明书实施例提供的检测方法检测待检测数据的异常情况,比较适用于异常数据的占比较小的场合,例如支付宝交易过程中的交易数据,如,在实际应用中交易成功率一般在95%及以上,从待检测数据中检测异常数据,当待检测的数据中异常数据的比例较小时,检测结果中可以只存储异常数据,占用的空间较少,并且当检测到异常数据时需要发出警报时,由于异常数据占比较小,发出的警报次数也会较少,更符合实际情况的应用,节省资源,实用性高。
步骤140,当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据。
步骤150,根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
本说明书实施例提供的检测方法中当检测数据为正常数据时,就会利用正常的检测数据进行模型更新,更新时间可以在秒级或者更小,不再需要设定时间窗口利用批量级数据对模型进行更新,时效性强,检测模型更新时间小于运维监控过程中日志采集系统的延时时间,无需用户等待模型更新时间,可以对数据进行实时检测,提高了用户的体验性。
并且,本说明书实施例中,将正常数据用于更新检测模型,从而随着检测模型的不断更新,正常数据的比例逐渐增加,用检测模型进行异常检测时,可准确的检测出异常数据,提高了数据检测的准确率。并且,即使在刚开始进行检测时,检测模型的数据中包含有少量异常数据,随着检测的进行,正常数据不断对检测模型进行更新,使后续检测模型中异常数据的比例不断缩小,正常数据的比例逐渐增加,对模型不断的修正,使模型逐渐趋于完全正常的状态,也可以减小刚开始进行检测时,检测模型中异常数据对检测结果的影响,也可以提高数据检测的准确率。
图3为本说明书实施例提供的一种异常数据检测的方法的原理框图,如图3所示。
本说明书实施例中所述待检测数据可以包括运维环境中的服务器的性能指标数据、运维环境中的网络流量信息数据、运维环境中的数据库的性能指标数据、运维环境中的业务指标数据中至少一种。
具体的,在实际应用中,可以利用合适的工具生成多种类型的时序数据,例如,cacti是一款使用php语言开发的性能与流量监测工具,监测的对象可以是Linux或Windows服务器,也可以是路由器、交换机等网络设备,主要基于SNMP(简单网络管理协议)来搜集CPU占用、内存占用、运行进程数、磁盘空间、网卡流量等各数据。又如,随着电子交易平台的日趋成熟,越来越多的人使用网络购物来满足需求,其中最为常用的就是支付宝平台,同样为了保证平台的稳定性以及安全性,通常会监测平台中的各种数据,例如监控系统Sunfire是阿里集团的业务监控系统,其前身是蚂蚁的xflush,xflush是私有云下以业务为核心的监控产品,xflush可以对常规的运维环境进行监控,如主机监控中的服务器性能指标的监控(如CPU使用率,内存使用率,下载情况等)、网络监控中设备(如交换机、主机等)的网络流量信息等、以及数据库监控中的数据库的性能指标(如工作时间、读取量等),xflush可以对支付宝特定的运维环境进行监控,如交易量、淘宝交易创建请求的付款成功率、商户的交易情况、银行渠道的情况等业务指标数据,并且xflush可以将监测到的信息生成日志进行存储。本说明书实施例中的检测方法就可以从日志中获取数据作为待检测数据。
如图3所示,左侧为现有技术中一般的检测方法的原理框图,首先需要获取一批历史数据对模型进行训练,为保证训练的效果,一般会选择已知性能的数据,例如以检测业务时序数据(即业务指标数据)为例,现有技术中一般是在历史数据中选择已知为正常数据和已知为异常数据的一批数据作为模型训练的训练数据,对模型进行训练,由于采用批量数据对模型进行训练,模型训练的时间一般为几个小时甚至更长,并且由于需要将批量数据输入到模型中进行训练,当数据的量级较大时,也会受到网络的影响,例如,当网络上传与下载数据的资源有限时,还需要将批量训练数据进行分批传输,模型再分批获取训练数据,也就又会增加模型训练的时间。
同理,在进行模型更新时,现有技术中一般是设置一个时间窗口,认为设定一个模型更新时间,例如7天更新一次模型,在更新时也需采集一批已知的历史数据对模型进行更新,同样由于数据量大以及网络流量的限制,模型更新也需要几个小时甚至更长时间,在此期间模型是不能进行检测工作的,需要用户采用其他应用进行暂时替代,或者等待模型更新完成后再进行数据检测,导致不能及时的对数据进行检测,时效性较低。
图3的右侧为本说明书实施例提供的异常数据检测的方法的原理框图,其中逐条获取待检测数据,具体的,可以利用流式计算引擎按照日志采集系统的采集时间顺序逐条获取待检测数据,然后根据检测模型对获取的待检测数据进行检测,再根据检测结果对检测模型进行更新,具体的,当检测结果中表示待检测数据为正常数据时,利用此正常数据对模型进行更新,即每得到一个正常数据就对检测模型更新一次,所需时间可以是秒级甚至更短,例如,在实际应用中利用一条业务指标数据(如某时刻支付宝的交易量)更新一次检测模型的时间为0.1ms,一般的日志采集系统生成日志数据的延时时间为100ms~1s,所述延时时间可以是从数据产生到日志采集系统收集数据生成日志数据的时间,例如,支付宝日志分析系统xflush采集支付宝的交易量时,交易量在发生交易后的那一刻就会产生,而交易量真正显示在xflush界面或者存储在xflush系统的日志中需要一定的延时,一般在100ms左右,从而本说明书实施例中检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间,从而可以达到无感化模型更新,无需再利用批量的历史数据对模型进行训练或者更新,也需要用户再等待模型更新,在实际应用中可忽略模型的更新时间,从而可以对检测数据进行及时的检测,提高了数据检测的时效性。
为了使检测模型可以处理获取的待检测数据,本说明书实施例中将所述待检测数据进行预处理,具体可以包括:对所述待检测数据进行标准化/归一化处理。
具体的,在数据分析中,由于数据采集方式不同或者数据来源不同通常会导致数据的量纲、数据的量级产生差异,为了让这些数据具备可比性,需要采用标准化方法来消除这些差异。本说明书实施例中日志采集系统收集的日志数据可以是多种形式的数据,为保证获取的检测数据还可以被检测模型正常识别,可以对待检测数据进行预处理,具体的可以包括对待测数据进行标准化处理。其中标准化处理可采用常用的min-max标准化(min-max normalization,离差标准化)、log函数转换、atan函数转换、z-score标准化(zero-mena normalization,零均值标准化)、模糊量化法中任一种方式。
进一步的,为提高检测的准确性,本说明书实施例中还可以对待检测数据进行特征工程处理,提取合适的特征进行检测。本说明书实施例中的待检测数据可以包括离散型数据和/或连续型数据,还可以包括数字型、文字型以及图表型。其中,可以采用one-hot编码对所述待检测数据中的离散型数据进行特征工程处理;和/或采用GBRT(Gradient BoostRegression Tree,渐进梯度回归树)算法对所述待检测数据中的连续型数据进行特征工程处理。
具体的,one-hot编码是一种将离散型数据转变为多维连续型数据的特征工程方法,主要对待检测数据为离散型数据进行预处理。例如,在支付宝平台中,检测各银行交易渠道的异常情况,其中与支付宝平台合作的银行有中国工商银行、中国农业银行、中国建设银行、中国邮政储蓄银行、交通银行和中国银行,要对各行的交易渠道进行检测,从日志系统中获取的日志数据可能就是“中国工商银行”等银行的名字,而本说明书实施例中的检测模型对数字可以进行检测,对文字不能进行直接检测,这就需要将文字进行预处理,处理为检测模型可以处理的数值型变量并可以提取必要的特征进行检测。
GBRT算法主要是针对连续型变量进行处理,例如,日志数据中包含支付宝平台在某一时间段的交易量,针对交易量进行检测,就可以利用GBRT算法对待检测的交易量进行特征提取,进而更准确的分析交易量的变动情况,得到更为准确的检测结果。
需要说明的是,上述内容只是对待检测数据进行预处理的举例,而具体采用哪种方式进行预处理,这里不做限定,只要能够得到检测模型可以处理的形式即可。
图4为本说明书实施例提供的一种异常数据检测的方法中异常判断原理图。如图4所示,本说明书实施例中是通过不等式x-μt>k*σt(1)来判断待检测数据是否异常,当待检测数据为正常时,更新模型的第一特征值和第二特征值,具体过程可见以下内容。
本说明书实施例中判断所述待检测数据是否异常,具体可以包括:
判断所述待检测数据是否满足不等式x-μt>k*σt(1);其中,x表示所述待检测数据,μt表示在检测所述待检测数据x时所述检测模型的第一特征值;σt表示在检测所述待检测数据x时所述检测模型的第二特征值;t为所述检测模型在检测所述待检测数据x时已经检测过的正常数据的数量,t≥1,t为正整数;k为预设的距离参数。
其中,第一特征值μt和第二特征值σt与检测模型在不同更新状态的第一特征值和第二特征值以及检测过的正常数据有关,通过不断的迭代计算得到,具体的,xt表示所述检测模型检测过的第t个正常数据,μt-1表示在检测第t个正常数据时所述检测模型的第一特征值;σt-1表示在检测第t个正常数据时所述检测模型的第二特征值;λ为遗忘因子,λ∈(0,1)。
其中,当t=1时,μ0为所述检测模型的初始第一特征值,σ0为所述检测模型的初始第二特征值。
其中,ai表示训练数据,m为所述训练数据的个数。
本说明书实施例中,所述训练数据包括所述日志数据中的数据,所述训练数据中正常数据所占比例大于或等于预设比例。
为更清楚的说明上述判断所述待检测数据是否异常的具体过程,现以检测某电商平台在某时间段的交易量为例,进行说明。
假设a时刻某电商平台的交易量为ax,检测此交易量ax是否异常,在实际应用中,成熟电商平台一般为稳定的平台,其交易量中异常数据的比例较小,正常数据的比例较大,正常数据一般在90%以上,针对这种情况,可以从收集的日志数据中直接选取若干数据作为训练数据,对检测模型进行训练,本说明书实施例中可以选取50条日志数据作为训练数据,其中训练数据可以随机在日志数据中选取,也可以按照数据的采集时间逐条输入到检测模型中,根据公式(4)可以得到所述检测模型的初始第一特征值μ0和所述检测模型的初始第二特征值σ0,进而根据公式(2)和(3)迭代计算得到在检测交易量ax时,检测模型对应的第一特征值μt和第二特征值σt,进而根据公式(1)判断交易量ax是否为异常数据。需要说明的是,训练数据的选取也可以采用其他方式,例如,为保证检测的精确性,还可以选用已知情况的数据作为训练数据,例如,可以选取已知为正常数据的数据作为训练数据得到初始第一特征值μ0和初始第二特征值σ0。在实际应用中训练数据的选取可以根据实际检测数据的特征进行选择,只要能够满足检测需求即可。
本说明书实施例中,所述训练数据可以包括所述日志数据中的数据,所述训练数据中正常数据所占比例大于或等于预设比例。例如预设比例可以为85%,上述对交易量的检测过程中就可以直接选取日志数据中的若干条数据作为训练数据。需要说明的是预设比例可以根据实际需要进行设定,当需要检测结果更精确时,可以将预设比例设置的大一些,当对检测结果要求不高时,可以将预设比例设置的小一些,具体数据这不做限定。
当检测到待检测数据x为正常数据时,就可以根据此正常数据对模型进行更新,具体可以包括:当所述待检测数据为正常数据时,采用正常的所述待检测数据,根据公式更新所述第一特征值与所述第二特征值,得到更新后的第一特征μt+1和第二特征σt+1;其中xt+1表示所述正常的所述待检测数据,即检测前的待检测数据x。
本说明书实施例中利用每条正常数据对检测模型进行更新,不再采用传统的批量数据更新方法,模型更新方法从批量到流式,从根本上解决了模型实时更新的问题,并且所需更新时间短,也提高了数据检测的时效性。
延续上例,当检测出交易量ax为正常数据时,就可以根据上述公式(5),式中xt-1为ax,得到根据交易量ax更新后的第一特征μt+1和第二特征σt+1,在后继检测中以更新后的第一特征μt+1和第二特征σt+1对数据进行检测。
其中,预设的距离参数k以及遗忘因子λ可根据实际情况进行设定,本说明书实施例中遗忘因子λ≥0.9。所述遗忘因子λ越接近于0,历史数据对所述检测模型的第一特征值和第二特征值的影响越小,所述历史数据为在获取所述检测数据之前获取的正常数据;所述遗忘因子λ越接近于1,所述待检测数据(即新获取的正常数据)对所述检测模型的第一特征值和第二特征值的影响越小。在本说明书实施例中,针对正常率较高的检测数据,一般在95%以上的正常率时,遗忘因子λ取0.95时会在检测准确率和误报率上取得较好的效果。
在实际应用中,当待检测数据中正常的数据在99.5%左右时,可以将距离参数k设定为3,会得到更准确的判断结果。具体的距离参数k的取值可以根据实际的正常数据的占比进行设定,具体数据这里不做限定,只要符合检测的需求即可。
基于上述图3的方法,图5为本说明书实施例提供的另一种异常数据检测的方法的流程示意图,如图5所示,本说明书实施例中根据所述正常数据对所述检测模型进行更新之后,还可以包括:
步骤510:获取所述检测模型在更新后的保持时间,所述检测模型在所述保持时间内未更新;
步骤520:当所述保持时间大于预设的更新时间段时,获取二次训练数据;
步骤530:利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型;
步骤540:利用所述二次检测模型对后续获取到的检测数据进行检测。
其中,步骤530利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型,具体可以包括:
将所述保持时间内的检测数据作为所述二次训练数据,
根据得到所述二次检测模型的二次初始第一特征值μ'0和所述二次检测模型的二次初始第二特征值σ'0,其中bi表示所述二次训练数据,q表示所述二次训练数据的数量。
延续上述检测某电商平台的交易量ax,假设由于促销活动,如双十一零点秒杀活动,在零点前后的交易量会突然急剧增加并持续一段时间,此时由于检测模型的第一特征值和第二特征值是根据之前相对较小的交易量迭代计算得到的,当检测零点前后的交易量时,此时的交易量会满足不等式(1),并且会将连续的多个交易量判断为异常数据,此时由于没有检测出正常数据,模型将不会更新,当检测模型持续不更新的保持时间大于预设的更新时间段时,可以获取二次训练数据对检测模型进行训练,更新时间段可根据实际需要进行的设定,上述促销活动中,可将更新时间段设定为2s~5s之间,本说明书实施例中,预设的更新时间段为2s,在实际应用中,由于交易量很大,2s的时间里可以获取50~100条甚至更多的交易量日志数据,本说明书实施例中可以选取这2s内的数据或者部分数据作为二次训练数据,对检测模型进行二次训练,得到二次检测模型,利用二次检测模型对后续的交易量数据进行检测。需要说明的是,在实际的电商交易中,可能会产生成百上千条的交易甚至更多,本说明书实施例中的模型可以采用50~100条数据就可以完成一次训练,无需大批量的训练数据,所需时间少,无需用户等待很长时间,并且对数据检测的影响小,可以持续检测数据,并且针对成百上千条的交易甚至更多的交易量数据来说,即使检测的几十条数据有问题在实际应用中也是可以被接受的。
在实际应用中由于一般交易量的正常比例在95%及以上,本说明书实施例中在二次训练时模型可以将二次训练数据默认为全部是正常数据,在获得了二次初始第一特征值和二次初始第二特征值的基础上,采用上述包含遗忘因子λ的迭代计算方法更新模型的第一特征值和第二特征值,可以使二次训练数据对第一特征值和第二特征值的影响越来越小,从而即使训练数据中含有异常数据,也会在后续的更新过程中淡化异常数据的影响,当更新多次后,可以忽略异常数据的影响,进而也可以提高检测的准确性。
基于上述图3的方法,图6为本说明书实施例提供的再一种异常数据检测的方法的流程示意图,如图6所示,本说明书实施例中根据所述正常数据对所述检测模型进行更新之后,还可以包括:
步骤610:获取所述检测模型在更新后检测过的异常数据的数量;
步骤620:当所述数量大于预设的数量时,获取二次训练数据;
步骤630:利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型;
步骤640:利用所述二次检测模型对后续获取到的检测数据进行检测。
其中,步骤630利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型,具体可以包括:
将所述检测过的异常数据作为所述二次训练数据,
根据得到所述二次检测模型的二次初始第一特征值μ'0和所述二次检测模型的二次初始第二特征值σ'0,其中bi表示所述二次训练数据,q表示所述二次训练数据的数量。
仍以上述某电商平台进行促销活动为例,由于交易量的突然急剧增加并会持续一段时间,本说明书实施例中的检测模型会将突然增加的交易量判断为异常数据,并且可能会将连续的几条交易量都判断为异常数据,此时,当连续判断的异常数据的数量大于预设的数量时,如预设的数量为50条,可以获取二次训练数据对检测模型进行训练,训练期间可以暂停对数据的检测工作,暂停时间一般在2s甚至更小的时间,并且在实际应用中会将检测过的数据情况进行标记,例如正常数据标记为正常,异常数据标记为异常,或者标记不同的颜色等,本说明书实施例中可以将上述连续判断为异常数据的这些数据作为二次训练数据,对检测模型进行二次训练,进而得到二次检测模型,再利用二次检测模型检测后续获取到的检测数据。通常情况下根据一条数据进行模型更新的时间为0.1ms,当采用50条数据对模型进行训练时,所需的时间通常在0.5s~2s之间甚至更少的时间,本说明书实施例中模型训练的所需的时间短,用户只需等待秒级的时间即可,训练完成后就可继续对数据进行检测。在实际应用中,可以利用训练后的检测模型重现检测判断为异常的数据,也可以跳过预设的数量的数据,对后续的数据进行检测。当检测模型中输入的待检测数据为实时数据时,训练后的检测模型就可以跳过训练数据对实时数据进行检测。
需要说明的是,上述保持时间和预设的数量均可以根据实际需要进行的设定,具体数值这里不做限定,只要能够满足需求即可。在实际应用中,一般数据的变化幅度不会很大,所以,本说明书实施例中检测模型进行二次训练的情况较少,对一般的数据检测的需求不会造成影响。
本说明书实施例中的检测模型可以自主应对数据突发的情况,并能根据突发情况及时自动更新模型,无需人为参与,提高了数据检测的及时性和准确性,也减少了运维人员的工作量。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图7为本说明书实施例提供的一种异常数据检测的装置的结构示意图。如图7所示,该装置可以包括:
数据获取模块710,用于获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据;
异常数据判断模块720,用于根据检测模型,判断所述待检测数据是否异常,得到判断结果;
异常数据确定模块730,用于当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据;
正常数据确定模块740,用于当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据;
模型更新模块750,用于根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
可选的,异常数据判断模块720可以包括:
数据预处理单元,用于将所述待检测数据进行预处理;
数据判断单元,用于将处理后的所述待检测数据按照所述日志采集系统的采集时间顺序根据所述检测模型逐条进行判断。
可选的,异常数据判断模块720,具体可以用于:
判断所述待检测数据是否满足不等式x-μt>k*σt(1);其中,x表示所述待检测数据,μt表示在检测所述待检测数据x时所述检测模型的第一特征值;σt表示在检测所述待检测数据x时所述检测模型的第二特征值;t为所述检测模型在检测所述待检测数据x时已经检测过的正常数据的数量,t≥1,t为正整数;k为预设的距离参数;
其中,xt表示所述检测模型检测过的第t个正常数据,μt-1表示在检测第t个正常数据时所述检测模型的第一特征值;σt-1表示在检测第t个正常数据时所述检测模型的第二特征值;λ为遗忘因子,λ∈(0,1);
其中,当t=1时,μ0为所述检测模型的初始第一特征值,σ0为所述检测模型的初始第二特征值;
其中,ai表示训练数据,m为所述训练数据的个数。
可选的,模型更新模块750,具体可以用于:
当所述待检测数据为正常数据时,采用正常的所述待检测数据,根据公式更新所述第一特征值与所述第二特征值,得到更新后的第一特征μt+1和第二特征σt+1;其中xt+1表示所述正常的所述待检测数据。
可选的,本说明书实施例中的装置还可以包括:
第一状态确定模块,用于获取所述检测模型在更新后的保持时间,所述检测模型在所述保持时间内未更新;
第一训练数据获取模块,用于当所述保持时间大于预设的更新时间段时,获取二次训练数据;
第一模型训练模块,用于利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型;
第一后续检测模块,用于利用所述二次检测模型对后续获取到的检测数据进行检测。
可选的,所述第一模型训练模块,具体可以用于:
将所述保持时间内的检测数据作为所述二次训练数据,
根据得到所述二次检测模型的二次初始第一特征值μ'0和所述二次检测模型的二次初始第二特征值σ'0,其中bi表示所述二次训练数据,q表示所述二次训练数据的数量。
可选的,本说明书实施例中的装置还可以包括:
第二状态确定模块,用于获取所述检测模型在更新后检测过的异常数据的数量;
第二训练数据获取模块,用于当所述数量大于预设的数量时,获取二次训练数据;
第二模型训练模块,用于利用所述二次训练数据对所述检测模型进行训练,得到二次检测模型;
第二后续检测模块,用于利用所述二次检测模型对后续获取到的检测数据进行检测。
可选的,所述第二模型训练模块,具体可以用于:
将所述检测过的异常数据作为所述二次训练数据,
根据得到所述二次检测模型的二次初始第一特征值μ'0和所述二次检测模型的二次初始第二特征值σ'0,其中bi表示所述二次训练数据,q表示所述二次训练数据的数量。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图8为本说明书实施例提供的一种异常数据检测的设备的结构示意图。如图8所示,设备800可以包括:
至少一个处理器810;以及,
与所述至少一个处理器通信连接的存储器830;其中,
所述存储器830存储有可被所述至少一个处理器810执行的指令820,所述指令被所述至少一个处理器810执行,以使所述至少一个处理器810能够:
获取待检测数据,所述待检测数据包括由日志采集系统收集的日志数据;
根据检测模型,判断所述待检测数据是否异常,得到判断结果;
当所述判断结果表示所述待检测数据异常时,确定所述待检测数据为异常数据;
当所述判断结果表示所述待检测数据正常时,确定所述待检测数据为正常数据;
根据所述正常数据对所述检测模型进行更新,所述检测模型的更新时间小于所述日志采集系统生成所述日志数据的延时时间。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。