CN111176953A - 一种异常检测及其模型训练方法、计算机设备和存储介质 - Google Patents

一种异常检测及其模型训练方法、计算机设备和存储介质 Download PDF

Info

Publication number
CN111176953A
CN111176953A CN202010001333.1A CN202010001333A CN111176953A CN 111176953 A CN111176953 A CN 111176953A CN 202010001333 A CN202010001333 A CN 202010001333A CN 111176953 A CN111176953 A CN 111176953A
Authority
CN
China
Prior art keywords
data
index data
index
sub
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010001333.1A
Other languages
English (en)
Other versions
CN111176953B (zh
Inventor
潘建宁
郑健彦
高晓宇
毛茂德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010001333.1A priority Critical patent/CN111176953B/zh
Publication of CN111176953A publication Critical patent/CN111176953A/zh
Application granted granted Critical
Publication of CN111176953B publication Critical patent/CN111176953B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种异常检测及其模型训练方法、计算机设备和存储介质,该异常检测方法包括:确定在第一周期内、属于预设的系统指标的第一指标数据;确定在第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;对比所述第一指标数据与所述第二指标数据,以生成指标特征;根据所述指标特征对所述系统指标分类,以进行异常检测。本实施例通过对比系统指标在不同周期的数据设计指标特征,可反映出系统指标的状况,保证以此训练的异常检测模型的性能,从而保证异常检测的准确性,并且,异常检测模型将异常检测视为分类问题,操作简便,提高可靠性。

Description

一种异常检测及其模型训练方法、计算机设备和存储介质
技术领域
本发明实施例涉及运营监控的技术,尤其涉及一种异常检测及其模型训练方法、计算机设备和存储介质。
背景技术
在互联网网站的发展过程中,人们提出了各种方法来提高网站服务的稳定性和可靠性。然而,网站24小时不间断运行的服务总有出现问题的时候,可能是因为硬件故障,比如宕机;也可能是软件故障,比如触发了隐藏的缺陷bug。为了确保服务的质量,尽早地发现和解决问题,人们会对网站上的各种系统指标,如网站流量、请求成功率等,进行实时监控,在出现异常时告警。
目前,通常使用如下两种方式对网站进行监控:
一、阈值检测
为各个系统指标设定一个静态阈值,系统指标的数值超出或低于该阈值则认为异常,例如,对CPU(Central Processing Unit,中央处理器)使用率设置阈值为90%,若CPU使用率高于90%,则认为出现异常。
但是,网站中的系统指标数量庞大,为各个系统指标选择一个合适的阈值是一件繁琐的操作。而且,即使是同一个系统指标,阈值也需要根据环境不断进行调整,以适应环境的变化,操作更加繁琐。
二、同比检测
针对同一种系统指标,比较当前时刻的值与昨天或上周同一时刻的值,两者之间的比值或差值达到某个阈值则认为网站出现异常。
然而,因为系统指标的数据总会出现波动,基于单点同比往往会带来过多的告警,导致可靠性较差。
发明内容
本发明实施例提供一种异常检测及其模型训练方法、计算机设备和存储介质,以解决对系统指标进行监控要么操作复杂,要么可靠性较差的问题。
第一方面,本发明实施例提供了一种异常检测方法,包括:
确定在第一周期内、属于预设的系统指标的第一指标数据;
确定在第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征对所述系统指标分类,以进行异常检测。
第二方面,本发明实施例还提供了一种异常检测模型的训练方法,包括:
确定在第一周期内、属于系统指标的第一指标数据;
确定第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征针对所述系统指标训练异常检测模型。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的异常检测方法或如第二方面所述的异常检测模型的训练方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的异常检测方法或如第二方面所述的异常检测模型的训练方法。
在本实施例中,确定在第一周期内、属于系统指标的第一指标数据,确定第二周期内、属于系统指标的第二指标数据,第二周期位于第一周期之前,对比第一指标数据与第二指标数据,以生成指标特征;根据所述指标特征针对所述系统指标训练异常检测模型。本实施例通过对比系统指标在不同周期的数据设计指标特征,可反映出系统指标的状况,保证以此训练的异常检测模型的性能,从而保证异常检测的准确性,并且,异常检测模型将异常检测视为分类问题,与阈值检测、同比检测相比,无需设置阈值,避免根据环境不断调整阈值,操作简便,在系统指标的数据出现波动时仍然可以保证准确性,减少无效的告警,从而提高可靠性。
附图说明
图1为本发明实施例一提供的一种异常检测方法的流程图;
图2A至图2E为一种指标特征的示例图;
图3是本发明实施例二提供的一种异常检测方法的流程图;
图4A至图4B为一种异常维度定位的示例图;
图5是本发明实施例三提供的一种异常检测模型的训练方法的流程图;
图6为本发明实施例四提供的一种异常检测装置的结构示意图;
图7为本发明实施例五提供的一种异常检测模型的训练装置的结构示意图;
图8为本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种异常检测方法的流程图,本实施例可适用于通过对比系统指标在不同周期中的指标数据设计指标特征,从而进行异常检测的情况,该方法可以由异常检测装置来执行,该异常检测装置可以由软件和/或硬件实现,可配置在计算机设备中,例如,服务器、工作站、个人电脑,等等,该方法具体包括如下步骤:
S101、确定在第一周期内、属于预设的系统指标的第一指标数据。
S102、确定在第二周期内、属于所述系统指标的第二指标数据。
在具体实现中,在网站监控的过程中,可根据该网站提供的业务的特性设置相应系统指标,例如,针对直播网站,系统指标可以包括登录成功率、网站请求数量、主播在线数量、弹幕数量,等等。
同一网站的系统指标的指标数据通常具有一样的周期性,其中,指标数据通常以序列的形式记录,可绘制为曲线,因此,曲线具有一样的周期性。
为充分利用曲线一致的周期性,本实施例可加入不同周期同比的指标数据,将“预测”体现在指标数据中。
为使本领域技术人员更好地理解本发明,在本实施例中,以天作为周期,则指标数据的同比皆指按天同比,当然,本领域技术人员也可以根据实际情况设计为其它周期同比指标数据,本实施例对此不加以限制。
在本实施例中,针对一系统指标,在当前的第一周期中采集其第一指标数据today_ts,以及,在在先的第二周期中采集n个第二指标数据reference_n,其中,n为可调参数,第二周期位于第一周期之前。
例如,如图2A所示,对一个系统指标,采集当天(第一周期)中的第一指标数据201、1天前(第二周期中)的第二指标数据202、2天前(第二周期中)的第二指标数据203、3天前(第二周期中)的第二指标数据204、6天前(第二周期中)的第二指标数据205和7天前(第二周期中)的第二指标数据206,其中,第一指标数据为第一周期时刻前6小时到t时刻的序列,记为today_ts,并记当前最后一个数据点2011的数值记为第一指标数值NOW_VALUE,时间粒度为一分钟;第二指标数据202、第二指标数据203、第二指标数据204、第二指标数据205和第二指标数据206可分别记为reference_1,reference_2,reference_3,reference_4和reference_5,时间跨度为8小时,时间粒度为一分钟。
S103、对比所述第一指标数据与所述第二指标数据,以生成指标特征。
在具体实现中,对比第一指标数据today_ts与第二指标数据reference_n,获得统计特性上的特征,作为指标特征。
在本发明的一个实施例中,指标特征包括如下的至少一种:
时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差。
则在本实施例中,S103包括如下步骤:
S1301、基于所述第二指标数据对所述第一指标数据构建参考指标数据。
在本实施例中,综合多个第二指标数据reference_n中的数据点,确定对第一指标数据today_ts具有统计意义的数据点,作为参考指标数据。
在一个示例中,参考指标数据包括最小指标数据reference_ts。
在此示例中,针对第一周期、第二周期中的同一时间点,如当天的12:00、1天前的12:00、2天前的12:00、3天前的12:00、6天前的12:00和7天前的12:00,可计算第一指标数据today_ts中的数据点与第二指标数据reference_n中的数据点之间的距离。
针对第一周期、第二周期中的同一时间点,取第二指标数据reference_n中距离最小的数据点组成最小指标数据reference_ts。
在另一个示例中,参考指标数据包括中值指标数据median_refernce_ts。
在此示例中,对第二指标数据reference_n中处于同一时间点的数据点计算中位数,作为新的数据点,以组成中值指标数据median_refernce_ts。
例如,针对如图2A所示的第一指标数据today_ts 201、第二指标数据reference_1202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206,如图2B所示,采用第二指标数据reference_1 202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206中距离第一指标数据today_ts 201最小的数据点组成最小指标数据reference_ts 207,采用第二指标数据reference_1 202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206中的中位数组成中值指标数据median_refernce_ts 208。
当然,上述判断处理方法只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他参考指标数据,例如,针对第一周期、第二周期中的同一时间点,计算第一指标数据today_ts中的数据点与第二指标数据reference_n中的数据点之间的距离,取第二指标数据reference_n中距离最大的数据点组成最大指标数据,作为参考指标数据,等等,本实施例对此不加以限制。另外,除了上述参考指标数据外,本领域技术人员还可以根据实际需要采用其它参考指标数据,本实施例对此也不加以限制。
进一步地,为简化计算,可对第一指标数据today_ts、第二指标数据reference_n、参考指标数据(如最小指标数据reference_ts、中值指标数据median_refernce_ts)进行归一化处理。
具体而言,设最小指标数据reference_ts中数据点的最大值为rmin,最大值rmax,将第一指标数据today_ts、第二指标数据reference_n、参考指标数据中数据点的值v做(v-rmin)/(rmax-rmin)变换,即v’=(v-rmin)/(rmax-rmin),其中,v’为归一化后数据点的值。
S1302、基于所述第一指标数据生成时间特征。
在本实施例中,参考网站的业务,对第一指标数据today_ts提取对该业务在时间维度具有影响的特征,作为时间特征。
例如,对于直播网站,对于诸如请求量等系统指标,指标数据在凌晨等时间段的数量比较少,导致波动都比较大,因此,在不同时间段对异常本身的容忍程度是不同的。
另外,周末、工作日等日期通常也是影响网站业务的一个因素。
因此,可确定第一指标数值NOW_VALUE所处的小时hour和/或星期day_of_week,作为时间特征,其中,第一指标数值NOW_VALUE为第一指标数据today_ts中最后一个数据点的数值。
例如,2019年11年27日的第一指标数据today_ts,第一指标数值NOW_VALUE为12点01,时间特征有hour=12,day_of_week=1。
S1303、对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差。
在本实施例中,以第一指标数据today_ts、第二指标数据reference_n与参考指标数据(如最小指标数据reference_ts、中值指标数据median_refernce_ts)中的至少两者分别作为因变量(系统指标)的实际值与观测值,计算两者之间的误差,作为残差。
进一步而言,可以构造如下至少一种残差:
1、第一残差序列today_res
在具体实现中,可计算第一指标数据today_ts与最小指标数据reference_ts之间的残差,作为第一残差序列today_res,即today_res=today_ts-reference_ts。
其中,第一残差序列today_res中最后一个数据点记为第一残差值NOW_RES。
例如,针对如图2B所示的第一指标数据today_ts 201、最小指标数据reference_ts 207,如图2C所示,将最小指标数据reference_ts 207减去第一指标数据today_ts 201,可获得第一残差序列today_res 2091,最后一个数据点20911的数值记为第一残差值NOW_RES。
2、第二残差序列all_median_reference_res
在具体实现中,可分别计算第一指标数据today_ts与第二指标数据reference_n、中值指标数据median_refernce_ts之间的残差。
按照时间顺序等方式连接上述残差,作为第二残差序列all_median_reference_res。
需要说明的是,上述残差的连接方式,对第二残差序列all_median_reference_res的作用并不构成影响。
例如,针对如图2A所示的第一指标数据today_ts 201、第二指标数据reference_1202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206、以及如图2B所示的中值指标数据median_refernce_ts 208,则如图2D所示,第二残差序列all_median_reference_res 2092=(第一指标数据today_ts 201-第二指标数据reference_1 202)+(第一指标数据today_ts 201-第二指标数据reference_2 203)+(第一指标数据today_ts 201-第二指标数据reference_3 204)+(第一指标数据today_ts 201-第二指标数据reference_4 205)+(第一指标数据today_ts201-第二指标数据reference_5 206)+(第一指标数据today_ts 201-中值指标数据median_refernce_ts 208)。
3、第三残差序列recent_median_refernece_res
在具体实现中,可计算第一指标数据today_ts与中值指标数据median_refernce_ts的残差,确定残差中距离当前时间最近的m个数据点,作为第三残差序列recent_median_refernece_res,其中,m为可调参数,如24。
例如,针对如图2A所示的第一指标数据today_ts 201与如图2B所示的中值指标数据median_refernce_ts 208,则如图2E所示,将第一指标数据today_ts 201减去中值指标数据median_refernce_ts 208,去距离当前时间最近的24个数据点,获得第三残差序列recent_median_refernece_res 2093。
当然,上述残差只是作为示例,在实施本实施例时,可以根据实际情况设置其他残差,本实施例对此不加以限制。另外,除了上述残差外,本领域技术人员还可以根据实际需要采用其它残差,本实施例对此也不加以限制。
S1304、基于所述残差生成分位数特征。
在本实施例中,针对残差,可以进行统计学上的分析,计算其分位数特征,获知其数据的对称性和分散性等特性。
在具体实现中,分位数特征包括如下的至少一种:
第一分位序列today_res_iqr、第二分位序列all_median_reference_res_iqr、第三分位序列all_median_reference_res_kiqr、第一目标序列today_res_kiqr、第二目标序列all_median_reference_res_kiqr、第三目标序列recent_median_reference_res_kiqr。
进一步而言,对第一残差序列today_res计算四分位距(interquartile range,IQR),获得第一分位序列today_res_iqr。
对第二残差序列all_median_reference_res计算四分位距,获得第二分位序列all_median_reference_res_iqr。
对第三残差序列recent_median_refernece_res计算四分位距,获得第三分位序列all_median_reference_res_kiqr。
其中,四分位距又称四分位数、四分位点等,是指把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。
将第一分位序列today_res_iqr中最后一个数据点除以第一分位序列today_res_iqr,获得第一目标序列today_res_kiqr。
将第二分位序列all_median_reference_res_iqr中最后一个数据点除以第二分位序列all_median_reference_res_iqr,获得第二目标序列all_median_reference_res_kiqr。
将第三分位序列all_median_reference_res_kiqr中最后一个数据点除以第三分位序列all_median_reference_res_kiqr,获得第三目标序列recent_median_reference_res_kiqr。
当然,上述分位数特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他分位数特征,例如,对残差计算四分位距,以及,用四分位距组成的序列中最后一个数据点除以该序列,等等,本实施例对此不加以限制。另外,除了上述分位数特征外,本领域技术人员还可以根据实际需要采用其它分位数特征,本实施例对此也不加以限制。
S1305、确定所述残差的波形特征。
在本实施例中,针对残差,可以进行统计学上的分析,计算其曲线在波形上的特点,作为波形特征。
在一个示例中,若第一残差值NOW_RES大于或等于零,则可以通过SciPy(一个开源的Python算法库和数学工具包)中的find_peaks函数等方式统计第二残差序列all_median_reference_res与第三残差序列recent_median_refernece_res中高度超过第一残差值NOW_RES的数量,作为波形特征。
若第一残差值NOW_RES小于零,则可以通过SciPy中的find_peaks函数等方式统计第二残差序列all_median_reference_res与第三残差序列recent_median_refernece_res中波谷的数量,作为波形特征。
其中,第一残差值NOW_RES为第一残差序列today_res最后一个数据点的数值。
当然,上述波形特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他波形特征,例如,直接统计波峰、波谷的数量作为波形特征,等等,本实施例对此不加以限制。另外,除了上述波形特征外,本领域技术人员还可以根据实际需要采用其它波形特征,本实施例对此也不加以限制。
S1306、基于所述第一指标数据today_ts、所述参考指标数据确定成功率标识。
在网站监控中的系统指标,部分使用成功率进行表示,成功率=成功次数/总次数,比如,登录成功率,100个用户登录,99个用户登录成功率了,则登录成功率为99%。
此外,在网站监控中的系统指标,部分使用其他形式进行表示,一种常见的形式是流量类型,比如登录请求量,异常在成功率和流量类型中表现是不同的,需要区分,因此,本实施例设计成功率标识表示是否为成功率类型,以is_rate进行表示。
在具体实现中,若第一指标数据today_ts、参考指标数据中的所有数据点均在预设的数值范围(如0~1)内,则标记成功率标识为成功率类型,即当前的系统指标使用成功率表示。
若第一指标数据today_ts、参考指标数据中至少存在一个数据点在预设的数值范围(如0~1)外,则标记成功率标识为非成功率类型,即当前的系统指标使用其他形式表示。
S1307、基于所述分位数特征确定常数标识。
在网站监控中的系统指标,部分的指标数据接近常数,例如,充值成功率几乎一直是100%,这些曲线在算KIQR(如第一目标序列today_res_kiqr、第二目标序列all_median_reference_res_kiqr、第三目标序列recent_median_reference_res_kiqr等)时,数值会特别大,因此,在本实施例设计常数标识表示是否接近常数,用near_constant表示。
在具体实现中,若第一分位序列today_res_iqr等于零,则标记常数标识为常数类型。
若第一分位序列today_res_iqr不等于零,则标记常数标识为非常数序列。
S1308、基于所述第一指标数据确定对称的平均绝对百分比误差。
在具体实现中,计算第一残差值NOW_RES与第一指标数值NOW_VALUE的绝对值之间的比值,其中,第一残差值NOW_RES为第一残差序列today_res最后一个数据点的数值,第一指标数值NOW_VALUE为第一指标数据today_ts中最后一个数据点的数值。
将比值加上第二指标数值NOW_REF的绝对值,作为平均绝对百分比误差(Symmetric Mean Absolute Percentage Error,SMAPE),其中,第二指标数值NOW_REF为第二指标数据reference_n中距离第一指标数据today_ts中最后一个数据点最小的数据点的数值。
当然,上述指标特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他指标特征,例如,残差的方差、第一指标数据today_ts与第二指标数据reference_n之间的相关系数,等等,本实施例对此不加以限制。另外,除了上述指标特征外,本领域技术人员还可以根据实际需要采用其它指标特征,本实施例对此也不加以限制。
S104、根据所述指标特征对所述系统指标分类,以进行异常检测。
在本实施例中,参考系统指标的指标特征,对系统指标进行异常检测,检测网站在该系统指标的维度是否存在异常。
在具体实现中,确定异常检测模型,异常检测模型为有监督模型,如LightGBM(梯度提升树)、随机森林、SVM(Support Vector Machine,支持向量机)等,已预先训练完成,可将异常检测视为二分类问题,输入指标特征,输出异常概率值。
此时,可将指标特征输入异常检测模型,以输出异常概率值。
若异常概率值大于预设的阈值(如0.5),则确定系统指标异常。
若异常概率值大于预设的阈值(如0.5),则确定系统指标正常。
随着AIOps(Artificial Intelligence for IT Operations,智能运维)在各网站的逐渐落地,不少网站采用了一类基于预测的时间序列异常检测方法。其基本模式为,先预测出t时刻的值,然后比较预测值和真实值,超过某阈值就认为异常。此类方法的区别在于所用的时间序列预测模型不同。
某网站基于Holt-Winters(霍尔特-温特方法)对外卖订单量做异常检测,某网站的实时异常检测系统使用LSTM(Long Short Term Memory,长短期记忆网络)做预测,某网站的异常检测算法的预测部分改良自ARIMA(Autoregressive Integrated MovingAverage,差分整合移动平均自回归模型)。
基于预测的方法主要有以下三个缺点:
一、每个系统指标都需要一个模型去做预测,每个模型都得定时训练更新,计算消耗太大,尤其是采用LSTM模型去做预测。
二、预测不是目的,得到预测值后最终还是得设计一个与真实值的比较策略来判断是否异常。
三、生产环境中的时间序列,要么具有很强的周期性,要么杂乱无章。对于前者,如果要预测下一个周期,前几个周期中的一个或它们的平均往往就是一个很好预测。并且,时间序列预测模型,比如Holt-Winters和LSTM,给出的预测通常只是平滑后的和前几个周期一致的一个轮廓。而对于后者,算法预测都存在一定的可靠性问题。
所以,实际异常检测中的时间序列预测往往要么没有必要,要么无法预测。
某网站的监控系统中采用了无监督与有监督算法的异常检测方法。每个样本包含今天三个小时的序列,和两条长6小时的同比序列。无监督部分为采用EWMA(ExponentialWeighted Moving Average,指数加权移动平均)和K-Sigma(一种异常检测方法,假设数据服从正态分布,计算出标准差Sigma,如果当前点取值不在K倍标准差的范围,则认为异常)等无监督算法过滤掉一些正常样本,即当且仅当至少一种无监督算法认为样本异常时才用有监督算法去做进一步检测。
有监督异常检测虽然需要标注,但其将异常检测转为了传统的二分类问题,模型上可以有很多选择,比如随机森林和梯度提升树等,这时异常检测的工作主要落在了对样本的设计和特征工程上。
该监控系统有几个缺点:
一、通过无监督算法过滤正常样本,要求无监督算法保证足够的召回率,否则会导致部分异常样本直接被过滤掉,无法到达有监督检测部分。
二、样本过小,即使序列周期性较好,两段6小时的同比序列仍不足以构造一个当前序列的良好预测,尤其是同比序列刚好出现了异常的情况。
三、无用特征过多,徒增计算量。
在本实施例中,确定在第一周期内、属于预设的系统指标的第一指标数据、确定在第二周期内、属于系统指标的第二指标数据,第二周期位于第一周期之前,对比第一指标数据与第二指标数据,以生成指标特征,根据指标特征对系统指标分类,以进行异常检测。本实施例通过对比系统指标在不同周期的数据设计指标特征,可反映出系统指标的状况,从而保证异常检测的准确性,并且,将异常检测视为分类问题,与阈值检测、同比检测相比,无需设置阈值,避免根据环境不断调整阈值,操作简便,在系统指标的数据出现波动时仍然可以保证准确性,减少无效的告警,从而提高可靠性。
再者,本实施例根据业务的特性,基于统计学设计时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差等指标特征,从而区分不同的系统指标,实现对多种系统指标进行异常检测,预测的时间序列异常检测方法相比,无需为每种系统指标维护一个模型以及定时训练,从而提高了异常检测的通用性,降低了成本,在低资源消耗的同时,达到了超过90%的准确率和召回率。
实施例二
图3为本发明实施例二提供的一种异常检测方法的流程图,本实施例以前述实施例为基础,进一步增加定位异常的根因的处理操作,该方法具体包括如下步骤:
S301、确定在第一周期内、属于预设的系统指标的第一指标数据。
S302、确定在第二周期内、属于所述系统指标的第二指标数据。
其中,第二周期位于第一周期之前。
S303、对比所述第一指标数据与所述第二指标数据,以生成指标特征。
S304、根据所述指标特征对所述系统指标分类,以进行异常检测。
S305、若确定所述系统指标异常,则确定所述系统指标的数据类型。
S306、根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度。
如果确定该系统指标发生异常,则可以按照数据的计算方式,区分系统指标的数据类型,针对不同数据类型的系统指标,对比第一指标数据today_ts与第二指标数据reference_n,从而定位该系统指标存在异常的维度dimension。
其中,该维度针对不同的系统指标而有所不同,例如,维度可以包括省份、客户端的系统类型(如Android(安卓)、iOS、windows等)、客户端的网络类型(如移动网络、有线网络登),等等。
在一种情况中,数据类型包括和值类型,和值类型表示第一指标数据today_ts为预设维度dimension下的第一子指标数据(dimension,value)之和、第二指标数据reference_n为预设维度dimension下的第二子指标数据(dimension,value)之和,即第一指标数据today_ts在某个维度dimension下取值,可以得到多个时间段的序列,记录为第一子指标数据(dimension,value),第二指标数据reference_n在某个维度dimension下取值,可以得到多个时间段的序列,记录为第二子指标数据(dimension,value)。
例如,若系统指标为请求量,设维度dimension为省份,维度dimension的不同取值是省份=广东、省份=北京、省份=山东……,等等,那么,请求量(第一指标数据today_ts)=广东的请求量(第一子指标数据(dimension,value))+北京的请求量(第一子指标数据(dimension,value))+山东的请求量(第一子指标数据(dimension,value))……。
针对和值类型,一方面,计算第一指标数据today_ts与第二指标数据reference_n之间的差异,作为第一总改变量TOTAL_NOW_CHANGE。
在一个计算差异的方式,将第一指标数值NOW_VALUE与第二指标数值NOW_REF之间的差值,作为第一指标数据today_ts与第二指标数据reference_n之间的差异,并设置为第一总改变量TOTAL_NOW_CHANGE。
另一方面,计算第一子指标数据(dimension,value)与第二子指标数据(dimension,value)之间的差异,作为第一子改变量NOW_CHANGE。
在一个计算差异的方式,将第一子指标数值与第二子指标数值之间的差值,作为第一子指标数据(dimension,value)与第二子指标数据(dimension,value)之间的差异,并设置为第一子改变量NOW_CHANGE。
其中,第一子指标数值为第一子指标数据(dimension,value)中最后一个数据点的数值,第二子指标数值为第二子指标数据(dimension,value)中距离第一子指标数据(dimension,value)中最后一个数据点最近的数据点的数值。
若第一总改变量TOTAL_NOW_CHANGE与第一子改变量NOW_CHANGE的正负值符号不同(即一个为正值、另一个为负值),则将第一子改变量NOW_CHANGE设置为零。
若第一子改变量NOW_CHANGE与第一总改变量TOTAL_NOW_CHANGE之间的比值的绝对值小于预设的阈值,则过滤第一子指标数据(dimension,value)。
确定绝对值最大的x(x为可调参数,如5)个第一子改变量NOW_CHANGE所关联的第一子指标数据(dimension,value)存在异常。
例如,若系统指标为请求量,属于和值类型,则总的请求量可以分解为各个运营商的请求量的和值,即:
总请求量=电信请求量+移动请求量+联通请求量
某个时刻,网站的总请求量值是50000,对其作异常定位:
当前值 1天前 2天前 7天前
总请求量 50000 90000 88000 66000
NOW_VALUE=50000,而同比的数据点中,66000离50000最近,则NOW_REF=66000,TOTAL_NOW_CHANGE=50000–66000=-16000
以运营商作为维度dimension,各运营商的数据为:
运营商 当前值 1天前 2天前 7天前
电信 20000 58000 53000 32000
移动 20000 21000 22000 24100
联通 10000 11000 13000 9900
电信的NOW_CHANGE=20000-32000=-12000
移动的NOW_CHANGE=20000-12000=-1000
联通的NOW_CHANGE=10000-9900=100
100与-16000的正负值符号相反,令(运营商,联通)等于0。
-12000/-16000=0.75,保留(运营商,电信)。
-1000/-16000=0.0625<0.1,舍弃(运营商,移动)。
按NOW_CHANGE绝对值排序,返回top5,即返回了(运营商,电信),表示电信这个维度的存在异常。
在又一种情况中,数据类型包括比值类型(A/B),比值类型表示第一指标数据today_ts为第三子指标数据A与第四子指标数据B之间的比值、第二指标数据today_ts为下第五子指标数据A与第六子指标数据B之间的比值。
例如,若系统指标为登录成功率,则登录成功率=登录成功量/登录总量,若系统指标为支付成功率,则支付成功率=支付成功量/支付总量,等等。
针对比值类型,可计算第一指标数据today_ts与第二指标数据reference_n之间的差异,作为第一总改变量TOTAL_NOW_CHANGE。
若第一总改变量TOTAL_NOW_CHANGE大于零,则表示第一指标数据today_ts上升异常,此时,认为处于比值类型中分子部分的数据A为失败次数,该数据A是和值类型,可按照和值类型的方式从该数据A中定位存在异常的维度。
具体而言,一方面,计算第三子指标数据A与第五子指标数据A之间的差异,作为第二总改变量TOTAL_NOW_CHANGE,其中,第三子指标数据A为预设维度下的第一分指标数据(dimension,value)之和、第五子指标数据A为预设的维度下的第二分指标数据(dimension,value)之和。
另一方面,计算第一分指标数据(dimension,value)与第二分指标数据(dimension,value)之间的差异,作为第二子改变量NOW_CHANGE。
若第二总改变量TOTAL_NOW_CHANGE与第二子改变量NOW_CHANGE的正负值符号不同,则将第二子改变量NOW_CHANGE设置为零。
若第二子改变量NOW_CHANGE与第二总改变量TOTAL_NOW_CHANGE之间的比值的绝对值小于预设的阈值,则过滤第一分指标数据(dimension,value)。
确定绝对值最大的y(y为可调参数,如5)个第二子改变量NOW_CHANGE所关联的第一分指标数据(dimension,value)存在异常。
此外,若第一总改变量TOTAL_NOW_CHANGE小于或等于零,则表示第一指标数据today_ts下降异常,此时,认为处于比值类型中分子部分的数据B与分子部分的数据A之间的差值数据(B-A)为失败次数,该差值数据(B-A)是和值类型,可按照和值类型的方式从该差值数据(B-A)中定位存在异常的维度。
具体而言,一方面,计算第七子指标数据(B-A)与第八子指标数据(B-A)之间的差异,作为第三总改变量TOTAL_NOW_CHANGE。
其中,第七子指标数据(B-A)为第四子指标数据B与第三子指标数据A之间的差值,第八分指标数据(B-A)为第六子指标数据B与第五子指标数据A之间的差值,第六子指标数据(B-A)为预设维度下的第三分指标数据(dimension,value)之和、第六子指标数据(B-A)为预设维度下的第四分指标数据(dimension,value)之和。
另一方面,计算第三分指标数据(dimension,value)与第四分指标数据(dimension,value)之间的差异,作为第三子改变量NOW_CHANGE。
若第三总改变量TOTAL_NOW_CHANGE与第三子改变量NOW_CHANGE的正负值符号不同,则将第三子改变量NOW_CHANGE设置为零。
若第三子改变量NOW_CHANGE与第三总改变量TOTAL_NOW_CHANGE之间的比值的绝对值小于预设的阈值,则过滤第三分指标数据(dimension,value)。
确定绝对值最大的z(z为可调参数,如5)个第三子改变量NOW_CHANGE所关联的第三分指标数据(dimension,value)存在异常。
例如,若系统指标为请求成功率,属于比值类型,则请求成功率可以分解为表示请求成功的状态码返回量与状态码总返回量之间的比值,即:
请求成功率=(4xx状态码返回量+5xx状态码返回量)/状态码总返回量
即A=(4xx状态码返回量+5xx状态码返回量),B=状态码总返回量
某个时刻,请求成功率异常:
当前值 1天前 2天前 7天前
请求成功率 0.8 0.99 0.95 0.98
TOTAL_NOW_CHANGE=0.8-0.95=-0.15<0,是下降异常。
则对B-A,即(状态码返回总量-(4xx状态码返回量+5xx状态码返回量))进行和值类型的异常定位。
在又一种情况中,数据类型包括除和值类型、比值类型之外的其他类型。
针对其他类型,可确定系统指标在预设维度下的第九子指标数据(dimension,value),即系统指标在某个维度dimension下取值,可以得到多个时间段的序列,记录为第九子指标数据(dimension,value)。
调用预设的异常检测算法对第九子指数数据计算异常概率。
其中,该异常检测算法可以包括阈值检测、同比检测等常规算法,实施例对此不加以限制。
计算第一指标数据today_ts与第二指标数据reference_n之间的差异,作为第一总改变量TOTAL_NOW_CHANGE;
若第一总改变量TOTAL_NOW_CHANGE大于零,则表示第一指标数据today_ts上升异常,此时,确定值最大的a(a为可调参数,如5)个异常概率所关联的第九子指标数据(dimension,value)存在异常。
若第一总改变量TOTAL_NOW_CHANGE小于或等于零,则表示第一指标数据today_ts下降异常,此时,确定值最小的b(b为可调参数,如5)个异常概率所关联的第九子指标数据(dimension,value)存在异常。
例如,若系统指标为平均延时,属于其他类型(非和值类型,非比值类型),平均延时并不等于各运用商的平均延时之和,同时平均延时也不是率值型曲线。
如图4A所示,某个时刻的平均延时上升。
如图4B所示,对线路line的延时进行定位,即对各条线路line在该时刻的延时进行异常检测。
检测到在该时刻,线路line=5是异常的,线路line=1、线路line=3、线路line=7是正常的。
假如检测到多于两个线路line是异常的,由于延时是上升异常,按各线路line的当前延时作降序排序,返回(line,5)。
当然,上述定位异常维度的方式只是作为示例,在实施本实施例时,可以根据实际情况设置其他定位异常维度的方式,本实施例对此不加以限制。另外,除了上述定位异常维度的方式外,本领域技术人员还可以根据实际需要采用其它定位异常维度的方式,本实施例对此也不加以限制。
在本实施例中,若确定系统指标异常,则确定系统指标的数据类型,根据数据类型,对比第一指标数据与第二指标数据,以定位存在异常的维度,针对不同数据类型的特性,设计了不同的异常定位方式,可准确地检测出存在异常的维度。
实施例三
图5为本发明实施例一提供的一种异常检测模型的训练方法的流程图,本实施例可适用于通过对比系统指标在不同周期中的指标数据设计指标特征,从而训练异常检测模型的情况,该方法可以由异常检测模型的训练装置来执行,该异常检测模型的训练装置可以由软件和/或硬件实现,可配置在计算机设备中,例如,服务器、工作站、个人电脑,等等,该方法具体包括如下步骤:
S501、确定在第一周期内、属于系统指标的第一指标数据。
S502、确定第二周期内、属于所述系统指标的第二指标数据。
在具体实现中,在网站监控的过程中,可根据该网站提供的业务的特性设置相应系统指标,例如,针对直播网站,系统指标可以包括登录成功率、网站请求数量、主播在线数量、弹幕数量,等等。
同一网站的系统指标的指标数据通常具有一样的周期性,其中,指标数据通常以序列的形式记录,可绘制为曲线,因此,曲线具有一样的周期性。
为充分利用曲线一致的周期性,本实施例可加入不同周期同比的指标数据,将“预测”体现在指标数据中。
为使本领域技术人员更好地理解本发明,在本实施例中,以天作为周期,则指标数据的同比皆指按天同比,当然,本领域技术人员也可以根据实际情况设计为其它周期同比指标数据,本实施例对此不加以限制。
在本实施例中,针对一系统指标,在第一周期中采集其第一指标数据today_ts,以及,在第二周期中采集n个第二指标数据reference_n,其中,n为可调参数,第二周期位于第一周期之前。
例如,如图2A所示,对一个系统指标,采集某天(第一周期)中的第一指标数据201、1天前(第二周期中)的第二指标数据202、2天前(第二周期中)的第二指标数据203、3天前(第二周期中)的第二指标数据204、6天前(第二周期中)的第二指标数据205和7天前(第二周期中)的第二指标数据206,其中,第一指标数据为第一周期时刻前6小时到t时刻的序列,记为today_ts,并记当前最后一个数据点2011的数值记为第一指标数值NOW_VALUE,时间粒度为一分钟;第二指标数据202、第二指标数据203、第二指标数据204、第二指标数据205和第二指标数据206可分别记为reference_1,reference_2,reference_3,reference_4和reference_5,时间跨度为8小时,时间粒度为一分钟。
S503、对比所述第一指标数据与所述第二指标数据,以生成指标特征。
在具体实现中,对比第一指标数据today_ts与第二指标数据reference_n,获得统计特性上的特征,作为指标特征。
在本发明的一个实施例中,指标特征包括如下的至少一种:
时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差。
则在本实施例中,S503包括如下步骤:
S5301、基于所述第二指标数据对所述第一指标数据构建参考指标数据。
在本实施例中,综合多个第二指标数据reference_n中的数据点,确定对第一指标数据today_ts具有统计意义的数据点,作为参考指标数据。
在一个示例中,参考指标数据包括最小指标数据reference_ts。
在此示例中,针对第一周期、第二周期中的同一时间点,如当天的12:00、1天前的12:00、2天前的12:00、3天前的12:00、6天前的12:00和7天前的12:00,可计算第一指标数据today_ts中的数据点与第二指标数据reference_n中的数据点之间的距离。
针对第一周期、第二周期中的同一时间点,取第二指标数据reference_n中距离最小的数据点组成最小指标数据reference_ts。
在另一个示例中,参考指标数据包括中值指标数据median_refernce_ts。
在此示例中,对第二指标数据reference_n中处于同一时间点的数据点计算中位数,作为新的数据点,以组成中值指标数据median_refernce_ts。
例如,针对如图2A所示的第一指标数据today_ts 201、第二指标数据reference_1202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206,如图2B所示,采用第二指标数据reference_1 202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206中距离第一指标数据today_ts 201最小的数据点组成最小指标数据reference_ts 207,采用第二指标数据reference_1 202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206中的中位数组成中值指标数据median_refernce_ts 208。
当然,上述判断处理方法只是作为示例,在实施本发明实施例时,可以根据实际情况设置其他参考指标数据,例如,针对第一周期、第二周期中的同一时间点,计算第一指标数据today_ts中的数据点与第二指标数据reference_n中的数据点之间的距离,取第二指标数据reference_n中距离最大的数据点组成最大指标数据,作为参考指标数据,等等,本实施例对此不加以限制。另外,除了上述参考指标数据外,本领域技术人员还可以根据实际需要采用其它参考指标数据,本实施例对此也不加以限制。
进一步地,为简化计算,可对第一指标数据today_ts、第二指标数据reference_n、参考指标数据(如最小指标数据reference_ts、中值指标数据median_refernce_ts)进行归一化处理。
具体而言,设最小指标数据reference_ts中数据点的最大值为rmin,最大值rmax,将第一指标数据today_ts、第二指标数据reference_n、参考指标数据中数据点的值v做(v-rmin)/(rmax-rmin)变换,即v’=(v-rmin)/(rmax-rmin),其中,v’为归一化后数据点的值。
S5302、基于所述第一指标数据生成时间特征。
在本实施例中,参考网站的业务,对第一指标数据today_ts提取对该业务在时间维度具有影响的特征,作为时间特征。
例如,对于直播网站,对于诸如请求量等系统指标,指标数据在凌晨等时间段的数量比较少,导致波动都比较大,因此,在不同时间段对异常本身的容忍程度是不同的。
另外,周末、工作日等日期通常也是影响网站业务的一个因素。
因此,可确定第一指标数值NOW_VALUE所处的小时hour和/或星期day_of_week,作为时间特征,其中,第一指标数值NOW_VALUE为第一指标数据today_ts中最后一个数据点的数值。
例如,2019年11年27日的第一指标数据today_ts,第一指标数值NOW_VALUE为12点01,时间特征有hour=12,day_of_week=1。
S5303、对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差。
在本实施例中,以第一指标数据today_ts、第二指标数据reference_n与参考指标数据(如最小指标数据reference_ts、中值指标数据median_refernce_ts)中的至少两者分别作为因变量(系统指标)的实际值与观测值,计算两者之间的误差,作为残差。
进一步而言,可以构造如下至少一种残差:
1、第一残差序列today_res
在具体实现中,可计算第一指标数据today_ts与最小指标数据reference_ts之间的残差,作为第一残差序列today_res,即today_res=today_ts-reference_ts。
其中,第一残差序列today_res中最后一个数据点记为第一残差值NOW_RES。
例如,针对如图2B所示的第一指标数据today_ts 201、最小指标数据reference_ts 207,如图2C所示,将最小指标数据reference_ts 207减去第一指标数据today_ts 201,可获得第一残差序列today_res 2091,最后一个数据点20911的数值记为第一残差值NOW_RES。
2、第二残差序列all_median_reference_res
在具体实现中,可分别计算第一指标数据today_ts与第二指标数据reference_n、中值指标数据median_refernce_ts之间的残差。
按照时间顺序等方式连接上述残差,作为第二残差序列all_median_reference_res。
需要说明的是,上述残差的连接方式,对第二残差序列all_median_reference_res的作用并不构成影响。
例如,针对如图2A所示的第一指标数据today_ts 201、第二指标数据reference_1202、第二指标数据reference_2 203、第二指标数据reference_3 204、第二指标数据reference_4 205和第二指标数据reference_5 206、以及如图2B所示的中值指标数据median_refernce_ts 208,则如图2D所示,第二残差序列all_median_reference_res 2092=(第一指标数据today_ts 201-第二指标数据reference_1 202)+(第一指标数据today_ts 201-第二指标数据reference_2 203)+(第一指标数据today_ts 201-第二指标数据reference_3 204)+(第一指标数据today_ts 201-第二指标数据reference_4 205)+(第一指标数据today_ts201-第二指标数据reference_5 206)+(第一指标数据today_ts 201-中值指标数据median_refernce_ts 208)。
3、第三残差序列recent_median_refernece_res
在具体实现中,可计算第一指标数据today_ts与中值指标数据median_refernce_ts的残差,确定残差中距离当前时间最近的m个数据点,作为第三残差序列recent_median_refernece_res,其中,m为可调参数,如24。
例如,针对如图2A所示的第一指标数据today_ts 201与如图2B所示的中值指标数据median_refernce_ts 208,则如图2E所示,将第一指标数据today_ts 201减去中值指标数据median_refernce_ts 208,去距离当前时间最近的24个数据点,获得第三残差序列recent_median_refernece_res 2093。
当然,上述残差只是作为示例,在实施本实施例时,可以根据实际情况设置其他残差,本实施例对此不加以限制。另外,除了上述残差外,本领域技术人员还可以根据实际需要采用其它残差,本实施例对此也不加以限制。
S5304、基于所述残差生成分位数特征。
在本实施例中,针对残差,可以进行统计学上的分析,计算其分位数特征,获知其数据的对称性和分散性等特性。
在具体实现中,分位数特征包括如下的至少一种:
第一分位序列today_res_iqr、第二分位序列all_median_reference_res_iqr、第三分位序列all_median_reference_res_kiqr、第一目标序列today_res_kiqr、第二目标序列all_median_reference_res_kiqr、第三目标序列recent_median_reference_res_kiqr。
进一步而言,对第一残差序列today_res计算四分位距(interquartile range,IQR),获得第一分位序列today_res_iqr。
对第二残差序列all_median_reference_res计算四分位距,获得第二分位序列all_median_reference_res_iqr。
对第三残差序列recent_median_refernece_res计算四分位距,获得第三分位序列all_median_reference_res_kiqr。
其中,四分位距又称四分位数、四分位点等,是指把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。
将第一分位序列today_res_iqr中最后一个数据点除以第一分位序列today_res_iqr,获得第一目标序列today_res_kiqr。
将第二分位序列all_median_reference_res_iqr中最后一个数据点除以第二分位序列all_median_reference_res_iqr,获得第二目标序列all_median_reference_res_kiqr。
将第三分位序列all_median_reference_res_kiqr中最后一个数据点除以第三分位序列all_median_reference_res_kiqr,获得第三目标序列recent_median_reference_res_kiqr。
当然,上述分位数特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他分位数特征,例如,对残差计算四分位距,以及,用四分位距组成的序列中最后一个数据点除以该序列,等等,本实施例对此不加以限制。另外,除了上述分位数特征外,本领域技术人员还可以根据实际需要采用其它分位数特征,本实施例对此也不加以限制。
S5305、确定所述残差的波形特征。
在本实施例中,针对残差,可以进行统计学上的分析,计算其曲线在波形上的特点,作为波形特征。
在一个示例中,若第一残差值NOW_RES大于或等于零,则可以通过SciPy(一个开源的Python算法库和数学工具包)中的find_peaks函数等方式统计第二残差序列all_median_reference_res与第三残差序列recent_median_refernece_res中高度超过第一残差值NOW_RES的数量,作为波形特征。
若第一残差值NOW_RES小于零,则可以通过SciPy中的find_peaks函数等方式统计第二残差序列all_median_reference_res与第三残差序列recent_median_refernece_res中波谷的数量,作为波形特征。
其中,第一残差值NOW_RES为第一残差序列today_res最后一个数据点的数值。
当然,上述波形特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他波形特征,例如,直接统计波峰、波谷的数量作为波形特征,等等,本实施例对此不加以限制。另外,除了上述波形特征外,本领域技术人员还可以根据实际需要采用其它波形特征,本实施例对此也不加以限制。
S5306、基于所述第一指标数据today_ts、所述参考指标数据确定成功率标识。
在网站监控中的系统指标,部分使用成功率进行表示,成功率=成功次数/总次数,比如,登录成功率,100个用户登录,99个用户登录成功率了,则登录成功率为99%。
此外,在网站监控中的系统指标,部分使用其他形式进行表示,一种常见的形式是流量类型,比如登录请求量,异常在成功率和流量类型中表现是不同的,需要区分,因此,本实施例设计成功率标识表示是否为成功率类型,以is_rate进行表示。
在具体实现中,若第一指标数据today_ts、参考指标数据中的所有数据点均在预设的数值范围(如0~1)内,则标记成功率标识为成功率类型,即当前的系统指标使用成功率表示。
若第一指标数据today_ts、参考指标数据中至少存在一个数据点在预设的数值范围(如0~1)外,则标记成功率标识为非成功率类型,即当前的系统指标使用其他形式表示。
S5307、基于所述分位数特征确定常数标识。
在网站监控中的系统指标,部分的指标数据接近常数,例如,充值成功率几乎一直是100%,这些曲线在算KIQR(如第一目标序列today_res_kiqr、第二目标序列all_median_reference_res_kiqr、第三目标序列recent_median_reference_res_kiqr等)时,数值会特别大,因此,在本实施例设计常数标识表示是否接近常数,用near_constant表示。
在具体实现中,若第一分位序列today_res_iqr等于零,则标记常数标识为常数类型。
若第一分位序列today_res_iqr不等于零,则标记常数标识为非常数序列。
S5308、基于所述第一指标数据确定对称的平均绝对百分比误差。
在具体实现中,计算第一残差值NOW_RES与第一指标数值NOW_VALUE的绝对值之间的比值,其中,第一残差值NOW_RES为第一残差序列today_res最后一个数据点的数值,第一指标数值NOW_VALUE为第一指标数据today_ts中最后一个数据点的数值。
将比值加上第二指标数值NOW_REF的绝对值,作为平均绝对百分比误差(Symmetric Mean Absolute Percentage Error,SMAPE),其中,第二指标数值NOW_REF为第二指标数据reference_n中距离第一指标数据today_ts中最后一个数据点最小的数据点的数值。
当然,上述指标特征只是作为示例,在实施本实施例时,可以根据实际情况设置其他指标特征,例如,残差的方差、第一指标数据today_ts与第二指标数据reference_n之间的相关系数,等等,本实施例对此不加以限制。另外,除了上述指标特征外,本领域技术人员还可以根据实际需要采用其它指标特征,本实施例对此也不加以限制。
S504、根据所述指标特征针对所述系统指标训练异常检测模型。
在本实施例中,异常检测模型为有监督模型,如LightGBM(梯度提升树)、随机森林、SVM(支持向量机)等,可将异常检测视为二分类问题,输入指标特征,输出异常概率值。
在具体实现中,对第一指标数据today_ts与第二指标数据reference_n中的数据点生成标记,该标记表示异常或正常。
对第一指标数据today_ts、第二指标数据reference_n中、与异常的数据点相邻的其他数据点生成标记,该标记表示正常。
进一步而言,除了异常、正常的数据点之外,还有些对于业务而言并不关心的数据点,例如,对于登录成功率,通常是在99%,在登录成功率掉到95%以下才关心,则可以对登录成功率大于或等于99%的数据点标记正常,对登录成功率小于或等于95%的数据点标记为异常,对于登录成功率为98%等数据点,偏离正常值99%,但又未到达异常值的95%,这类数据点可标记为正常,以减少异常检测模型认为异常,业务认为正常的情况。
在标记完成之后,可从第一指标数据today_ts、第二指标数据reference_n构建出正样本、负样本,以及,按时序将第一指标数据today_ts、第二指标数据reference_n划分为训练集和验证集。
此时,使用训练集参考标记对所述系统指标训练异常检测模型,使用验证集对异常检测模型进行验证,如准确率、精确率、召回率、F值等。
其中,该标记用于通过损失函数(loss function)计算损失值。
此外,在训练异常检测模型的过程中,通过对损失函数进行二阶泰勒展开、特征取值分桶、早停(Early Stopping)等方法提升异常检测模型的计算性能并降低过拟合。
其中,损失函数是用来估量异常检测模型的预测值f(x)(即预测的标记)与真实值Y(即实际的标记)的不一致程度,它是一个非负实值函数,通常使用L(Y,f(x))来表示,损失函数越小,异常检测模型的鲁棒性就越好。
在本实施例中,确定在第一周期内、属于系统指标的第一指标数据,确定第二周期内、属于系统指标的第二指标数据,第二周期位于第一周期之前,对比第一指标数据与第二指标数据,以生成指标特征;根据所述指标特征针对所述系统指标训练异常检测模型。本实施例通过对比系统指标在不同周期的数据设计指标特征,可反映出系统指标的状况,保证以此训练的异常检测模型的性能,从而保证异常检测的准确性,并且,异常检测模型将异常检测视为分类问题,与阈值检测、同比检测相比,无需设置阈值,避免根据环境不断调整阈值,操作简便,在系统指标的数据出现波动时仍然可以保证准确性,减少无效的告警,从而提高可靠性。
再者,本实施例根据业务的特性,基于统计学设计时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差等指标特征,从而区分不同的系统指标,实现对多种系统指标进行异常检测,预测的时间序列异常检测方法相比,无需为每种系统指标维护一个模型以及定时训练,从而提高了异常检测的通用性,降低了成本,在低资源消耗的同时,达到了超过90%的准确率和召回率。
实施例四
图6为本发明实施例四提供的一种异常检测装置的结构示意图,该装置具体可以包括如下模块:
第一指标数据确定模块601,用于确定在第一周期内、属于预设的系统指标的第一指标数据;
第二指标数据确定模块602,用于确定在第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
指标特征生成模块603,用于对比所述第一指标数据与所述第二指标数据,以生成指标特征;
指标检测模块604,用于根据所述指标特征对所述系统指标分类,以进行异常检测。
在具体实现中,所述指标特征包括如下的至少一种:
时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差。
在本发明的一个实施例中,所述指标特征生成模块603包括:
参考指标数据构建子模块,用于基于所述第二指标数据对所述第一指标数据构建参考指标数据;
时间特征生成子模块,用于基于所述第一指标数据生成时间特征;
残差计算子模块,用于对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差;
分位数特征生成子模块,用于基于所述残差生成分位数特征;
波形特征确定子模块,用于确定所述残差的波形特征;
成功率标识确定子模块,用于基于所述第一指标数据、所述参考指标数据确定成功率标识;
常数标识确定子模块,用于基于所述分位数特征确定常数标识;
SMAPE特征确定子模块,用于基于所述第一指标数据确定对称的平均绝对百分比误差。
在本发明的一个实施例中,所述参考指标数据包括最小指标数据和/或中值指标数据;
所述参考指标数据构建子模块还用于:
针对同一时间点,计算所述第一指标数据中的数据点与所述第二指标数据中的数据点之间的距离;
针对同一时间点,取所述第二指标数据中距离最小的数据点组成最小指标数据;
和/或,
对所述第二指标数据中处于同一时间点的数据点计算中位数,以组成中值指标数据。
在本发明的一个实施例中,所述时间特征生成子模块还用于:
确定第一指标数值所处的小时和/或星期,作为时间特征;
其中,所述第一指标数值为所述第一指标数据中最后一个数据点的数值。
在本发明的一个实施例中,所述残差计算子模块还用于:
计算所述第一指标数据与所述最小指标数据之间的残差,作为第一残差序列;
和/或,
分别计算所述第一指标数据与所述第二指标数据、所述中值指标数据之间的残差;
连接所述残差,作为第二残差序列;
和/或,
计算所述第一指标数据与所述中值指标数据的残差;
确定所述残差中距离当前时间最近的m个数据点,作为第三残差序列。
在本发明的一个实施例中,所述分位数特征生成子模块还用于:
对所述第一残差序列计算四分位距,获得第一分位序列;
对所述第二残差序列计算四分位距,获得第二分位序列;
对所述第三残差序列计算四分位距,获得第三分位序列;
将所述第一分位序列中最后一个数据点除以所述第一分位序列,获得第一目标序列;
将所述第二分位序列中最后一个数据点除以所述第二分位序列,获得第二目标序列;
将所述第三分位序列中最后一个数据点除以所述第三分位序列,获得第三目标序列。
在本发明的一个实施例中,所述波形特征确定子模块还用于:
若第一残差值大于或等于零,则统计所述第二残差序列与所述第三残差序列中高度超过所述第一残差值的数量,作为波形特征;
若第一残差值小于零,则统计所述第二残差序列与所述第三残差序列中波谷的数量,作为波形特征;
其中,第一残差值为所述第一残差序列最后一个数据点的数值。
在本发明的一个实施例中,所述成功率标识确定子模块还用于:
若所述第一指标数据、所述参考指标数据中的所有数据点均在预设的数值范围内,则标记成功率标识为成功率类型;
若所述第一指标数据、所述参考指标数据中至少存在一个数据点在预设的数值范围外,则标记成功率标识为非成功率类型。
在本发明的一个实施例中,所述常数标识确定子模块还用于:
若所述第一分位序列等于零,则标记常数标识为常数类型;
若所述第一分位序列不等于零,则标记常数标识为非常数序列。
在本发明的一个实施例中,所述SMAPE特征确定子模块还用于:
计算第一残差值与第一指标数值的绝对值之间的比值,所述第一残差值为所述第一残差序列最后一个数据点的数值,所述第一指标数值为所述第一指标数据中最后一个数据点的数值;
将所述比值加上第二指标数值的绝对值,作为平均绝对百分比误差,所述第二指标数值为所述第二指标数据中距离所述第一指标数据中最后一个数据点最小的数据点的数值。
在本发明的一个实施例中,所述指标检测模块604包括:
异常检测模型确定子模块,用于确定异常检测模型;
异常概率值输出子模块,用于将所述指标特征输入所述异常检测模型,以输出异常概率值;
指标异常确定子模块,用于若所述异常概率值大于预设的阈值,则确定所述系统指标异常;
指标正常确定子模块,用于若所述异常概率值大于预设的阈值,则确定所述系统指标正常。
在本发明的一个实施例中,还包括:
数据类型确定模块,用于若确定所述系统指标异常,则确定所述系统指标的数据类型;
异常维度定位模块,用于根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度。
在本发明的一个实施例中,所述数据类型包括和值类型,所述和值类型表示所述第一指标数据为预设维度下的第一子指标数据之和、所述第二指标数据为预设维度下的第二子指标数据之和;
所述异常维度定位模块包括:
第一总改变量计算子模块,用于计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
第一子改变量计算子模块,用于计算所述第一子指标数据与所述第二子指标数据之间的差异,作为第一子改变量;
第一置零子模块,用于若所述第一总改变量与所述第一子改变量的正负值符号不同,则将所述第一子改变量设置为零;
第一子指标数据过滤子模块,用于若所述第一子改变量与所述第一总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第一子指标数据;
第一异常确定子模块,用于确定绝对值最大的x个第一子改变量所关联的第一子指标数据存在异常。
在本发明的一个实施例中,所述数据类型包括比值类型,所述比值类型表示所述第一指标数据为第三子指标数据与第四子指标数据之间的比值、所述第二指标数据为第五子指标数据与第六子指标数据之间的比值;
所述异常维度定位模块包括:
第一总改变量计算子模块,用于计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
第二总改变量计算子模块,用于若所述第一总改变量大于零,则计算所述第三子指标数据与所述第五子指标数据之间的差异,作为第二总改变量,所述第三子指标数据为预设维度下的第一分指标数据之和、所述第五子指标数据为预设的维度下的第二分指标数据之和;
第二子改变量计算子模块,用于计算所述第一分指标数据与所述第二分指标数据之间的差异,作为第二子改变量;
第二置零子模块,用于若所述第二总改变量与所述第二子改变量的正负值符号不同,则将所述第二子改变量设置为零;
第一分指标数据过滤子模块,用于若所述第二子改变量与所述第二总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第一分指标数据;
第二异常确定子模块,用于确定绝对值最大的y个第二子改变量所关联的第一分指标数据存在异常。
在本发明的一个实施例中,所述数据类型包括比值类型,所述比值类型表示所述第一指标数据为第三子指标数据与第四子指标数据之间的比值、所述第二指标数据为第五子指标数据与第六子指标数据之间的比值;
所述异常维度定位模块包括:
第一总改变量计算子模块,用于计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
第三总改变量计算子模块,用于若所述第一总改变量小于或等于零,则计算第七子指标数据与第八子指标数据之间的差异,作为第三总改变量,所述第七子指标数据为所述第四子指标数据与所述第三子指标数据之间的差值,所述第八分指标数据为所述第六子指标数据与所述第五子指标数据之间的差值,所述第六子指标数据为预设维度下的第三分指标数据之和、所述第六子指标数据为预设维度下的第四分指标数据之和;
第三子改变量计算子模块,用于计算所述第三分指标数据与所述第四分指标数据之间的差异,作为第三子改变量;
第三置零子模块,用于若所述第三总改变量与所述第三子改变量的正负值符号不同,则将所述第三子改变量设置为零;
第三分指标数据过滤子模块,用于若所述第三子改变量与所述第三总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第三分指标数据;
第三异常确定子模块,用于确定绝对值最大的z个第三子改变量所关联的第三分指标数据存在异常。
在本发明的一个实施例中,所述数据类型包括除和值类型、比值类型之外的其他类型;
所述异常维度定位模块包括:
第九子指标数据确定子模块,用于确定所述系统指标在预设维度下的第九子指标数据;
异常概率计算子模块,用于对所述第九子指数数据计算异常概率;
第一总改变量计算子模块,用于计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
第四异常确定子模块,用于若所述第一总改变量大于零,则确定值最大的a个异常概率所关联的第九子指标数据存在异常;
第五异常确定子模块,用于若所述第一总改变量小于或等于零,则确定值最小的b个异常概率所关联的第九子指标数据存在异常。
本发明实施例所提供的异常检测装置可执行本发明任意实施例所提供的异常检测方法,具备执行方法相应的功能模块和有益效果。
实施例五
图7为本发明实施例五提供的一种异常检测模型的训练装置的结构示意图,该装置具体可以包括如下模块:
第一指标数据确定模块701,用于确定在第一周期内、属于系统指标的第一指标数据;
第二指标数据确定模块702,用于确定第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
指标特征生成模块703,用于对比所述第一指标数据与所述第二指标数据,以生成指标特征;
模型训练模块704,用于根据所述指标特征针对所述系统指标训练异常检测模型。
在本发明的一个实施例中,所述模型训练模块704包括:
第一标记生成子模块,用于对所述第一指标数据与所述第二指标数据中的数据点生成标记,所述标记表示异常或正常;
第二标记生成子模块,用于对所述第一指标数据、所述第二指标数据中、与所述异常的数据点相邻的其他数据点生成标记,所述标记表示正常;
样本划分子模块,用于按照时序对所述第一指标数据、所述第二指标数据划分训练集与验证集;
训练集训练子模块,用于使用所述训练集参考所述标记对所述系统指标训练异常检测模型;
验证集验证子模块,用于使用所述验证集对所述异常检测模型进行验证。
在具体实现中,所述指标特征包括如下的至少一种:
时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差。
在本发明的一个实施例中,所述指标特征生成模块703包括:
参考指标数据构建子模块,用于基于所述第二指标数据对所述第一指标数据构建参考指标数据;
时间特征生成子模块,用于基于所述第一指标数据生成时间特征;
残差计算子模块,用于对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差;
分位数特征生成子模块,用于基于所述残差生成分位数特征;
波形特征确定子模块,用于确定所述残差的波形特征;
成功率标识确定子模块,用于基于所述第一指标数据、所述参考指标数据确定成功率标识;
常数标识确定子模块,用于基于所述分位数特征确定常数标识;
SMAPE特征确定子模块,用于基于所述第一指标数据确定对称的平均绝对百分比误差。
在本发明的一个实施例中,所述参考指标数据包括最小指标数据和/或中值指标数据;
所述参考指标数据构建子模块还用于:
针对同一时间点,计算所述第一指标数据中的数据点与所述第二指标数据中的数据点之间的距离;
针对同一时间点,取所述第二指标数据中距离最小的数据点组成最小指标数据;
和/或,
对所述第二指标数据中处于同一时间点的数据点计算中位数,以组成中值指标数据。
在本发明的一个实施例中,所述时间特征生成子模块还用于:
确定第一指标数值所处的小时和/或星期,作为时间特征;
其中,所述第一指标数值为所述第一指标数据中最后一个数据点的数值。
在本发明的一个实施例中,所述残差计算子模块还用于:
计算所述第一指标数据与所述最小指标数据之间的残差,作为第一残差序列;
和/或,
分别计算所述第一指标数据与所述第二指标数据、所述中值指标数据之间的残差;
连接所述残差,作为第二残差序列;
和/或,
计算所述第一指标数据与所述中值指标数据的残差;
确定所述残差中距离当前时间最近的m个数据点,作为第三残差序列。
在本发明的一个实施例中,所述分位数特征生成子模块还用于:
对所述第一残差序列计算四分位距,获得第一分位序列;
对所述第二残差序列计算四分位距,获得第二分位序列;
对所述第三残差序列计算四分位距,获得第三分位序列;
将所述第一分位序列中最后一个数据点除以所述第一分位序列,获得第一目标序列;
将所述第二分位序列中最后一个数据点除以所述第二分位序列,获得第二目标序列;
将所述第三分位序列中最后一个数据点除以所述第三分位序列,获得第三目标序列。
在本发明的一个实施例中,所述波形特征确定子模块还用于:
若第一残差值大于或等于零,则统计所述第二残差序列与所述第三残差序列中高度超过所述第一残差值的数量,作为波形特征;
若第一残差值小于零,则统计所述第二残差序列与所述第三残差序列中波谷的数量,作为波形特征;
其中,第一残差值为所述第一残差序列最后一个数据点的数值。
在本发明的一个实施例中,所述成功率标识确定子模块还用于:
若所述第一指标数据、所述参考指标数据中的所有数据点均在预设的数值范围内,则标记成功率标识为成功率类型;
若所述第一指标数据、所述参考指标数据中至少存在一个数据点在预设的数值范围外,则标记成功率标识为非成功率类型。
在本发明的一个实施例中,所述常数标识确定子模块还用于:
若所述第一分位序列等于零,则标记常数标识为常数类型;
若所述第一分位序列不等于零,则标记常数标识为非常数序列。
在本发明的一个实施例中,所述SMAPE特征确定子模块还用于:
计算第一残差值与第一指标数值的绝对值之间的比值,所述第一残差值为所述第一残差序列最后一个数据点的数值,所述第一指标数值为所述第一指标数据中最后一个数据点的数值;
将所述比值加上第二指标数值的绝对值,作为平均绝对百分比误差,所述第二指标数值为所述第二指标数据中距离所述第一指标数据中最后一个数据点最小的数据点的数值。
本发明实施例所提供的异常检测装置可执行本发明任意实施例所提供的异常检测方法,具备执行方法相应的功能模块和有益效果。
实施例六
图8为本发明实施例六提供的一种计算机设备的结构示意图。如图8所示,该计算机设备包括处理器800、存储器801、通信模块802、输入装置803和输出装置804;计算机设备中处理器800的数量可以是一个或多个,图8中以一个处理器800为例;计算机设备中的处理器800、存储器801、通信模块802、输入装置803和输出装置804可以通过总线或其他方式连接,图8中以通过总线连接为例。
存储器801作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例中的异常检测方法对应的模块(例如,如图6所示的异常检测装置中的第一指标数据确定模块601、第二指标数据确定模块602、指标特征生成模块603和指标检测模块604)、或者本实施例中的异常检测模型的训练方法对应的模块(例如,如图7所示的异常检测模型的训练装置中的第一指标数据确定模块701、第二指标数据确定模块702、指标特征生成模块703和模型训练模块704)。处理器800通过运行存储在存储器801中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的异常检测方法或异常检测模型的训练方法。
存储器801可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器801可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器801可进一步包括相对于处理器800远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信模块802,用于与显示屏建立连接,并实现与显示屏的数据交互。
输入装置803可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。
输出装置804可以包括扬声器等音频设备。
需要说明的是,输入装置803和输出装置804的具体组成可以根据实际情况设定。
处理器800通过运行存储在存储器801中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的电子白板的连接节点控制方法。
本实施例提供的计算机设备,可执行本发明任一实施例提供的异常检测方法或异常检测模型的训练方法,具体相应的功能和有益效果。
实施例七
本发明实施例七还提供一种计算机可读存储介质,其上存储有计算机程序。
在一种情况中,该计算机程序被处理器执行时实现一种异常检测方法,该方法包括:
确定在第一周期内、属于预设的系统指标的第一指标数据;
确定在第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征对所述系统指标分类,以进行异常检测。
在另一种情况中,该计算机程序被处理器执行时实现一种异常检测模型的训练方法,该方法包括:
确定在第一周期内、属于系统指标的第一指标数据;
确定第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征针对所述系统指标训练异常检测模型。
当然,本发明实施例所提供的计算机可读存储介质,其计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的异常检测方法或异常检测模型的训练方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述异常检测装置或异常检测模型的训练装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (20)

1.一种异常检测方法,其特征在于,包括:
确定在第一周期内、属于预设的系统指标的第一指标数据;
确定在第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征对所述系统指标分类,以进行异常检测。
2.根据权利要求1所述的方法,其特征在于,所述指标特征包括如下的至少一种:
时间特征、分位数特征、波形特征、成功率标识、常数标识、对称的平均绝对百分比误差;
所述对比所述第一指标数据与所述第二指标数据,以生成指标特征,包括:
基于所述第二指标数据对所述第一指标数据构建参考指标数据;
基于所述第一指标数据生成时间特征;
对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差;
基于所述残差生成分位数特征;
确定所述残差的波形特征;
基于所述第一指标数据、所述参考指标数据确定成功率标识;
基于所述分位数特征确定常数标识;
基于所述第一指标数据确定对称的平均绝对百分比误差。
3.根据权利要求2所述的方法,其特征在于,所述参考指标数据包括最小指标数据和/或中值指标数据;
所述基于所述第二指标数据对所述第一指标数据构建参考指标数据,包括:
针对同一时间点,计算所述第一指标数据中的数据点与所述第二指标数据中的数据点之间的距离;
针对同一时间点,取所述第二指标数据中距离最小的数据点组成最小指标数据;
和/或,
对所述第二指标数据中处于同一时间点的数据点计算中位数,以组成中值指标数据。
4.根据权利要求2所述的方法,其特征在于,所述基于所述第一指标数据生成时间特征,包括:
确定第一指标数值所处的小时和/或星期,作为时间特征;
其中,所述第一指标数值为所述第一指标数据中最后一个数据点的数值。
5.根据权利要求3所述的方法,其特征在于,所述对所述第一指标数据、所述第二指标数据与所述参考指标数据中的至少两者计算残差,包括:
计算所述第一指标数据与所述最小指标数据之间的残差,作为第一残差序列;
和/或,
分别计算所述第一指标数据与所述第二指标数据、所述中值指标数据之间的残差;
连接所述残差,作为第二残差序列;
和/或,
计算所述第一指标数据与所述中值指标数据的残差;
确定所述残差中距离当前时间最近的m个数据点,作为第三残差序列。
6.根据权利要求5所述的方法,其特征在于,所述基于所述残差生成分位数特征,包括:
对所述第一残差序列计算四分位距,获得第一分位序列;
对所述第二残差序列计算四分位距,获得第二分位序列;
对所述第三残差序列计算四分位距,获得第三分位序列;
将所述第一分位序列中最后一个数据点除以所述第一分位序列,获得第一目标序列;
将所述第二分位序列中最后一个数据点除以所述第二分位序列,获得第二目标序列;
将所述第三分位序列中最后一个数据点除以所述第三分位序列,获得第三目标序列。
7.根据权利要求5所述的方法,其特征在于,所述确定所述残差的波形特征,包括:
若第一残差值大于或等于零,则统计所述第二残差序列与所述第三残差序列中高度超过所述第一残差值的数量,作为波形特征;
若第一残差值小于零,则统计所述第二残差序列与所述第三残差序列中波谷的数量,作为波形特征;
其中,第一残差值为所述第一残差序列最后一个数据点的数值。
8.根据权利要求2所述的方法,其特征在于,所述基于所述第一指标数据、所述参考指标数据确定成功率标识,包括:
若所述第一指标数据、所述参考指标数据中的所有数据点均在预设的数值范围内,则标记成功率标识为成功率类型;
若所述第一指标数据、所述参考指标数据中至少存在一个数据点在预设的数值范围外,则标记成功率标识为非成功率类型。
9.根据权利要求6所述的方法,其特征在于,所述基于所述分位数特征确定常数标识,包括:
若所述第一分位序列等于零,则标记常数标识为常数类型;
若所述第一分位序列不等于零,则标记常数标识为非常数序列。
10.根据权利要求5所述的方法,其特征在于,所述基于所述第一指标数据确定对称的平均绝对百分比误差,包括:
计算第一残差值与第一指标数值的绝对值之间的比值,所述第一残差值为所述第一残差序列最后一个数据点的数值,所述第一指标数值为所述第一指标数据中最后一个数据点的数值;
将所述比值加上第二指标数值的绝对值,作为平均绝对百分比误差,所述第二指标数值为所述第二指标数据中距离所述第一指标数据中最后一个数据点最小的数据点的数值。
11.根据权利要求1-10任一所述的方法,其特征在于,所述根据所述指标特征对所述系统指标分类,以进行异常检测,包括:
确定异常检测模型;
将所述指标特征输入所述异常检测模型,以输出异常概率值;
若所述异常概率值大于预设的阈值,则确定所述系统指标异常;
若所述异常概率值大于预设的阈值,则确定所述系统指标正常。
12.根据权利要求1-10任一所述的方法,其特征在于,还包括:
若确定所述系统指标异常,则确定所述系统指标的数据类型;
根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度。
13.根据权利要求12所述的方法,其特征在于,所述数据类型包括和值类型,所述和值类型表示所述第一指标数据为预设维度下的第一子指标数据之和、所述第二指标数据为预设维度下的第二子指标数据之和;
所述根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度,包括:
计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
计算所述第一子指标数据与所述第二子指标数据之间的差异,作为第一子改变量;
若所述第一总改变量与所述第一子改变量的正负值符号不同,则将所述第一子改变量设置为零;
若所述第一子改变量与所述第一总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第一子指标数据;
确定绝对值最大的x个第一子改变量所关联的第一子指标数据存在异常。
14.根据权利要求12所述的方法,其特征在于,所述数据类型包括比值类型,所述比值类型表示所述第一指标数据为第三子指标数据与第四子指标数据之间的比值、所述第二指标数据为第五子指标数据与第六子指标数据之间的比值;
所述根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度,包括:
计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
若所述第一总改变量大于零,则计算所述第三子指标数据与所述第五子指标数据之间的差异,作为第二总改变量,所述第三子指标数据为预设维度下的第一分指标数据之和、所述第五子指标数据为预设的维度下的第二分指标数据之和;
计算所述第一分指标数据与所述第二分指标数据之间的差异,作为第二子改变量;
若所述第二总改变量与所述第二子改变量的正负值符号不同,则将所述第二子改变量设置为零;
若所述第二子改变量与所述第二总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第一分指标数据;
确定绝对值最大的y个第二子改变量所关联的第一分指标数据存在异常。
15.根据权利要求12所述的方法,其特征在于,所述数据类型包括比值类型,所述比值类型表示所述第一指标数据为第三子指标数据与第四子指标数据之间的比值、所述第二指标数据为第五子指标数据与第六子指标数据之间的比值;
所述根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度,包括:
计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
若所述第一总改变量小于或等于零,则计算第七子指标数据与第八子指标数据之间的差异,作为第三总改变量,所述第七子指标数据为所述第四子指标数据与所述第三子指标数据之间的差值,所述第八分指标数据为所述第六子指标数据与所述第五子指标数据之间的差值,所述第六子指标数据为预设维度下的第三分指标数据之和、所述第六子指标数据为预设维度下的第四分指标数据之和;
计算所述第三分指标数据与所述第四分指标数据之间的差异,作为第三子改变量;
若所述第三总改变量与所述第三子改变量的正负值符号不同,则将所述第三子改变量设置为零;
若所述第三子改变量与所述第三总改变量之间的比值的绝对值小于预设的阈值,则过滤所述第三分指标数据;
确定绝对值最大的z个第三子改变量所关联的第三分指标数据存在异常。
16.根据权利要求12所述的方法,其特征在于,所述数据类型包括除和值类型、比值类型之外的其他类型;
所述根据所述数据类型,对比所述第一指标数据与所述第二指标数据,以定位存在异常的维度,包括:
确定所述系统指标在预设维度下的第九子指标数据;
对所述第九子指数数据计算异常概率;
计算所述第一指标数据与所述第二指标数据之间的差异,作为第一总改变量;
若所述第一总改变量大于零,则确定值最大的a个异常概率所关联的第九子指标数据存在异常;
若所述第一总改变量小于或等于零,则确定值最小的b个异常概率所关联的第九子指标数据存在异常。
17.一种异常检测模型的训练方法,其特征在于,包括:
确定在第一周期内、属于系统指标的第一指标数据;
确定第二周期内、属于所述系统指标的第二指标数据,所述第二周期位于所述第一周期之前;
对比所述第一指标数据与所述第二指标数据,以生成指标特征;
根据所述指标特征针对所述系统指标训练异常检测模型。
18.根据权利要求17所述的方法,其特征在于,所述根据所述指标特征针对所述系统指标训练异常检测模型,包括:
对所述第一指标数据与所述第二指标数据中的数据点生成标记,所述标记表示异常或正常;
对所述第一指标数据、所述第二指标数据中、与所述异常的数据点相邻的其他数据点生成标记,所述标记表示正常;
按照时序对所述第一指标数据、所述第二指标数据划分训练集与验证集;
使用所述训练集参考所述标记对所述系统指标训练异常检测模型;
使用所述验证集对所述异常检测模型进行验证。
19.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-16中任一所述的异常检测方法或如权利要求17-18中任一所述的异常检测模型的训练方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-16中任一所述的异常检测方法或如权利要求17-18中任一所述的异常检测模型的训练方法。
CN202010001333.1A 2020-01-02 2020-01-02 一种异常检测及其模型训练方法、计算机设备和存储介质 Active CN111176953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010001333.1A CN111176953B (zh) 2020-01-02 2020-01-02 一种异常检测及其模型训练方法、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010001333.1A CN111176953B (zh) 2020-01-02 2020-01-02 一种异常检测及其模型训练方法、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN111176953A true CN111176953A (zh) 2020-05-19
CN111176953B CN111176953B (zh) 2023-06-20

Family

ID=70650812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010001333.1A Active CN111176953B (zh) 2020-01-02 2020-01-02 一种异常检测及其模型训练方法、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN111176953B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898800A (zh) * 2020-06-28 2020-11-06 中国建设银行股份有限公司 公积金缴存数据预测方法、装置及电子设备
CN112163614A (zh) * 2020-09-24 2021-01-01 广州虎牙信息科技有限公司 一种主播分类方法、装置、电子设备及存储介质
CN112905419A (zh) * 2021-03-02 2021-06-04 广州虎牙科技有限公司 指标数据监测阈值范围确定方法、装置和可读存储介质
CN115994248A (zh) * 2023-03-24 2023-04-21 青岛精锐机械制造有限公司 阀门故障的数据检测方法及系统
CN117591964A (zh) * 2024-01-12 2024-02-23 山西思极科技有限公司 基于人工智能的电力智能分析方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103974311A (zh) * 2014-05-21 2014-08-06 哈尔滨工业大学 基于改进高斯过程回归模型的状态监测数据流异常检测方法
CN106095655A (zh) * 2016-05-31 2016-11-09 北京蓝海讯通科技股份有限公司 一种异常检测方法、应用和监控设备
US20180324199A1 (en) * 2017-05-05 2018-11-08 Servicenow, Inc. Systems and methods for anomaly detection
CN109032829A (zh) * 2018-07-23 2018-12-18 腾讯科技(深圳)有限公司 数据异常检测方法、装置、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103974311A (zh) * 2014-05-21 2014-08-06 哈尔滨工业大学 基于改进高斯过程回归模型的状态监测数据流异常检测方法
CN106095655A (zh) * 2016-05-31 2016-11-09 北京蓝海讯通科技股份有限公司 一种异常检测方法、应用和监控设备
US20180324199A1 (en) * 2017-05-05 2018-11-08 Servicenow, Inc. Systems and methods for anomaly detection
CN109032829A (zh) * 2018-07-23 2018-12-18 腾讯科技(深圳)有限公司 数据异常检测方法、装置、计算机设备及存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898800A (zh) * 2020-06-28 2020-11-06 中国建设银行股份有限公司 公积金缴存数据预测方法、装置及电子设备
CN112163614A (zh) * 2020-09-24 2021-01-01 广州虎牙信息科技有限公司 一种主播分类方法、装置、电子设备及存储介质
CN112905419A (zh) * 2021-03-02 2021-06-04 广州虎牙科技有限公司 指标数据监测阈值范围确定方法、装置和可读存储介质
CN112905419B (zh) * 2021-03-02 2022-11-15 广州虎牙科技有限公司 指标数据监测阈值范围确定方法、装置和可读存储介质
CN115994248A (zh) * 2023-03-24 2023-04-21 青岛精锐机械制造有限公司 阀门故障的数据检测方法及系统
CN117591964A (zh) * 2024-01-12 2024-02-23 山西思极科技有限公司 基于人工智能的电力智能分析方法
CN117591964B (zh) * 2024-01-12 2024-04-05 山西思极科技有限公司 基于人工智能的电力智能分析方法

Also Published As

Publication number Publication date
CN111176953B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
CN111176953B (zh) 一种异常检测及其模型训练方法、计算机设备和存储介质
CN113556258B (zh) 一种异常检测方法及装置
CN107566163A (zh) 一种用户行为分析关联的告警方法及装置
CN111309539A (zh) 一种异常监测方法、装置和电子设备
CN113591393B (zh) 智能变电站的故障诊断方法、装置、设备和存储介质
WO2023071761A1 (zh) 一种异常定位方法及装置
CN110874744B (zh) 一种数据异常检测方法及装置
CN111796957B (zh) 基于应用日志的交易异常根因分析方法及系统
WO2020155752A1 (zh) 异常点检测模型验证方法、装置、计算机设备及存储介质
WO2022142013A1 (zh) 基于人工智能的ab测试方法、装置、计算机设备及介质
CN111813644B (zh) 系统性能的评价方法、装置、电子设备和计算机可读介质
CN111756560A (zh) 一种数据处理方法、装置及存储介质
CN112769605A (zh) 一种异构多云的运维管理方法及混合云平台
CN114356734A (zh) 服务异常检测方法和装置、设备、存储介质
KR102059112B1 (ko) 사물 인터넷 스트림 데이터 품질 측정 지표 및 프로파일링 방법 및 그 시스템
KR101960755B1 (ko) 미취득 전력 데이터 생성 방법 및 장치
Zhang et al. Real-time burst detection based on multiple features of pressure data
CN114356900A (zh) 一种电力数据异常检测方法、装置、设备及介质
CN114090393A (zh) 一种告警级别的确定方法、装置及设备
CN114548493A (zh) 一种电能表电流过载预测方法与系统
CN112699048A (zh) 基于人工智能的程序故障处理方法、装置、设备及存储介质
CN117034149A (zh) 故障处理策略确定方法、装置、电子设备和存储介质
CN117149565A (zh) 云平台关键性能指标的状态检测方法、装置、设备及介质
CN111783883A (zh) 一种异常数据的检测方法及装置
CN114331688A (zh) 一种银行柜面系统业务批量运行状态检测方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant