使用倒排索引的时序异常检测的制作方法

文档序号:29696591发布日期:2022-04-16 13:12阅读:167来源:国知局
使用倒排索引的时序异常检测的制作方法
使用倒排索引的时序异常检测


背景技术:

1.异常和趋势检测、生产监控、银行交易、医疗交易,乃至突发或趋势新闻识别对于很多不同问题来说是有益的。这种检测系统作用于时序数据,例如,在时间段上跟踪具有特定维度标签或维度标签的组合的事件的某个值。一些异常/趋势检测系统可以使用预测模型来确定值是否落在预测范围之外。但是,预测模型高度依赖于所建模的维度并且训练时需要大量的计算。因此,这样的系统在预先训练的具有特定维度的模型上运行或作为批作业运行。


技术实现要素:

2.异常或趋势检测系统,或简言之,检测系统是基于时序数据的大规模聚合来识别异常或趋势的分布式计算机系统。检测系统是灵活且高效的,使得能够针对由时序数据跟踪的维度的任何请求组合实时识别异常/趋势。维度表示特定类型的数据。例如,维度可以是语言、状态、服务提供商、温度等。标签指示维度的值。例如,状态维度可以具有标签“待审核(pending)”、“批准(approved)”和“拒绝(denied)”,并且温度维度可以具有将温度测量表示为标签的任何数字。检测系统将这些维度中的一者或多者作为参数。检测系统从大量(数百万或数十亿)时序中的维度标记的所有可能组合中识别数据点,这些数据点可能表示异常。例如,如果参数标识状态和交易类型,则系统确定在指定的时间间隔内,事件存储库中存在哪些状态和交易类型标签的唯一组合(例如,《待审核,存款(deposit)》、《批准,转移(transfer)》、《待审核,转移》、《拒绝,存款》等)。这些唯一的组合可以被称为唯一的维度标签或片段。检测系统比较不同唯一组合的聚合值(或多个值),并确定哪些是感兴趣的,例如哪些是用于进一步分析的候选。检测系统执行密集计算以仅为被选择用于进一步分析的那些候选训练预测模型。检测系统使用预测模型确定候选是否表示异常。因为检测系统消除了维度标签的绝大多数潜在组合,所以即使事先不知道要对哪个维度组合建模,系统也能够实时操作。
3.所公开的实施方式首先查询事件存储库的时序数据,该时序数据可以用于识别和分析所请求的维度的唯一组合。该分析将测试区间的聚合值与一个或多个参考区间中的每一个的聚合值进行比较。可以提供测试区间或用于确定测试区间的数据作为参数。参考区间或用于确定参考区间的数据也可以作为参数提供。在一些实施方式中,可以根据测试区间的信息来确定参考区间。对测试区间和参考区间中的数据的分析使得检测系统能够快速选择异常候选。对于作为参数提供的一维,异常候选是唯一的维度标签。对于作为参数提供的两个或多个维度,异常候选是维度标记的唯一组合,该组合包括作为参数提供的每个维度的标记。系统可以对由候选选择过程识别的几个异常候选执行完整的预测分析,例如训练和使用预测模型。预测可以用于确定异常候选的最近值是否足够远离预测值以有资格作为异常。如果是,则检测系统可以提供维度标签作为响应,例如用于报告或进一步处理。
4.可以实现所公开的实施方式以实现以下优点中的一者或多者。例如,即使对于先前未知的维度组合,只要维度在时序库中被捕获,那么系统也能够实时提供异常检测。作为
另一个示例,检测系统具有树状结构。树状结构将数十亿个数据点大致线性地缩放为所添加的叶子的数目。换句话说,实施方式可以扩展到数十亿个时序,同时仍然实现实时等待时间。大规模检测系统呈现出固有的可扩展性挑战,特别是当用于具有极低延迟要求的应用时,例如,为与金融交易、机械系统、欺诈检测、恶意软件识别等相关的应用提供实时警报。许多预测和异常检测系统观察随时间的预定域阈值或动态地调整分辨率区间。但是,这样的系统不能扩展到数百亿的数据点,并且或者依赖于大规模的批作业(牺牲延迟)或者仅在数据的子集上运行(牺牲召回)。相反,所公开的实施方式可以在整个事件储存库上实时运行,因为训练预测模型的计算密集型工作仅针对相对少的维度组合来执行。即,候选维度组合被识别,并且基于所识别的维组合而不是基于每个维贡献来执行预测模型,这显著地减少了计算负担。作为另一示例,所公开的实施方式可以作为服务提供给任何时序储存库。实施方式对于底层数据点是灵活且高度可定制的。实施方式可以成批地以及实时地运行。
5.在附图和以下描述中阐述了一个或多个实施方式的细节。通过说明书、附图和权利要求书,本主题的其它特征、方面和优点将变得显而易见。
附图说明
6.图1图示了根据所公开的主题的用于基于所请求的维度从事件储存库中识别异常的示例检测系统。
7.图2是根据所公开的主题的用于从时序中识别所请求维度中的异常的示例性过程的流程图。
8.图3是根据所公开的主题的用于评估异常候选的示例性过程的流程图。
9.图4是根据所公开的主题的示例性事件储存库。
10.图5图示了基于图4的示例事件储存库和所公开的实施方式的示例性异常候选选择。
11.图6示出了可用于实现所描述的技术的计算机设备的示例。
12.图7示出了可用于实现所述技术的分布式计算机设备的示例。
13.各个附图中相同的附图标记表示相同的元件。实施例的具体实施方式
14.实施方式通过从类型化的事件时序储存库(time-series event repository)中识别所请求维度的异常来为事件跟踪系统提供增强。实施方式可以使用类型化事件的索引来标识异常候选片段(slice)。实施方式可以使用来自类型化事件时序(time-series)储存库的历史数据来构建仅用于那些候选片段的预测模型,并且使用该预测模型来预测该片段是否表示异常。
15.如本文所使用的,时序数据意味着表示在特定时间段期间发生的事件的数据。事件与一个或多个数据点相关联。每个数据点具有维度。每个维度可以在时序中与特定时间戳相关联,并且具有标签。标签表示维度值。例如,如果维度是“语言”,则维度标签可以是“英语”、“俄语”、“日语”等。类似地,如果维度是“压力”,则维度标签可以是表示压力测量的数字。时序数据点可以包括维度的指示和时间戳的标签的指示。在一些实施方式中,每个时序数据点具有表示发生计数的隐含值,即一(1)的计数。在一些实施方式中,时序数据点具有表示计数的表达值,该计数可以是一或大于一的数。在一些实施方式中,时序数据点具有
表示另一种适合于聚合函数(aggregate function)的表达值,例如平均值、最大值、中位数(median)、最小值、和值等。
16.时序数据可以保留短时间段。短时间段的长度可以是系统可调参数。时序事件储存库可以仅维护足够的历史时序数据以提供准确的预测。对于实时异常检测,这可以是几周、几天或甚至几个小时,这取决于被分析的事件的类型。因此,短时间段通常可以是大约数分钟、数小时或数天,而不是数月或数年。
17.事件时序数据,例如与特定事件相关的维度,可以以多种不同的方式被组织。例如,系统可以生成单个文档,该文档包括表示在单个时间或在单个时间段内共同出现的所有维度的数据。作为另一示例,储存库(repository)可将每个数据点存储为单独的记录。作为另一个示例,储存库可以是倒排索引(inverted index)。例如,维度标签可以与时间戳列表或与表示不同时间戳的文档列表一起存储。事件索引的合适技术在美国专利公开号2018/0314742“云推理系统”中描述,其通过引用并入。在一些实施方式中,倒排索引可被布置在具有根服务器、一个或多个级中的多个中间服务器和多个叶子服务器的基于树的分层结构(hierarchy)中。在这样的系统中,根服务器向每个叶子服务器发送查询,并且每个叶子服务器用任何响应的事件数据点来应答。然后根服务器可以执行返回数据的n路合并(n-way merge)。这种安排允许对索引数据的集合的实时搜索,这在可搜索维度的规模使完整的索引无法被预先生成的情况下是重要的。
18.趋势是具有方向性的异常。例如,突发新闻报道可以指示其比时序数据预测更频繁(而不是更不频繁)发生的趋势。因此,如本文所使用的,当方向性也被考虑时,对异常的任何引用也可以应用于趋势。
19.如本文所使用的,片段表示某些维度的标签值的组合,即作为参数提供的维度。因此,片段表示维度标签的唯一组合,每个维度一个标签。如图5所示,如果要求“压力”和“温度”的维度,则片段可以是压力标签和温度标签的唯一组合。如本文所使用的,当片段表示两个或多个维度时,两个维度必须具有所请求的区间的标签。
20.如本文所使用的,测试区间(test interval)是用于选择异常候选进行全面预测分析的时间段。测试区间可以作为参数提供。例如,请求过程可以提供开始时间作为参数,并且检测系统假设一个持续时间。作为另一个示例,请求过程可以提供开始时间和持续时间作为参数,并且检测使用开始时间和持续时间来定义测试区间。
21.如本文所使用的,参考区间(reference interval)是在测试区间之前出现的时间段,并且参考区间的持续时间是测试区间的持续时间的倍数。检测系统可以使用多个参考区间来操作。在一些实施方式中,可以从测试区间确定参考区间。例如,可以假设参考区间是在测试区间之前出现的时间段,例如在测试区间之前的1小时、5小时、1天等开始。在一些实施方式中,请求过程可以提供从中确定参考区间的信息。例如,请求过程可以提供参考区间的开始时间。检测系统可以产生一定数量的参考区间,其中第一参考区间在开始时间开始。请求过程可以为参考区间提供年龄。在这样的实施方式中,检测系统可以从测试区间开始时间减去年龄,并且生成在该时间开始的某一数量的参考区间。请求过程可以为多个区间中的每一个提供开始时间和持续时间。在这种实施方式中,检测系统可以为每个提供的开始时间和持续时间生成参考区间。
22.图1是根据示例性实施方式的异常检测系统的框图。系统100可用于识别代表事件
dimension)检测。
28.在图1的示例中,索引的事件115表示分布式倒排索引,其中类型化的事件在若干叶子服务器114之间被分片(sharded)。每个叶子服务器114(例如,叶子114(1),叶子114(2)

叶子114(n))可以存储索引的唯一部分或者可以存储副本。可以由根服务器112控制访问叶子服务器114中的事件120。查询系统110的根服务器112可以接收查询请求并且可以将查询分发到叶子服务器114。叶子服务器114可以向根服务器112提供任何响应事件数据点。尽管在图1中未图示,查询系统110可以包括根服务器112和叶子服务器114之间的一个或多个中间服务器。实施方式还包括具有不同于倒排索引的格式的索引事件115。但是对于存储数十亿个数据点的索引储存库,这种格式可能不能像分布式倒排索引那样快速地响应。
29.在图1的示例中,索引事件115被示为检测系统100的一部分。但是在一些实施方式中,被索引的事件115可以远离检测系统100,但可由检测系统100访问。类似地,图1的示例将查询系统110示出为检测系统100的一部分,但是查询系统110也可以远离检测系统100,但是可由其访问。换句话说,检测系统100可以使用到查询系统110的接口来请求和接收来自索引事件115的事件。
30.查询系统110将一个或多个维度作为输入。在来自请求过程180的请求185中提供维度。在请求中提供的维度定义维度组合。其它尽管在图1中被示为包括在检测系统100中,但是请求过程180可以与检测系统100分离但与其通信。例如,请求过程180可以经由api为检测系统100提供请求185。在一些实施方式中,请求185还可以包括关于在异常或趋势检测过程中使用的不同时间段的信息。如果没有提供这样的信息,则系统100可以使用默认值。示例时间段包括在候选选择器140中使用的测试区间和一个或多个参考区间,以及在异常检测器中使用的历史持续时间。例如,请求185可以包括测试区间的开始时间。在一些实施方式中,查询系统110使用默认测试区间持续时间和测试区间开始时间来定义测试区间。在一些实施方式中,还在请求185中提供测试区间持续时间。
31.在一些实施方式中,可以从测试区间确定参考区间。参考区间均发生在测试区间开始时间之前。在一些实施方式中,可以提供参考区间年龄作为请求185的一部分。系统100可以通过从测试区间开始时间中减去参考区间年龄来确定参考区间开始时间。在一些实施方式中,可以在请求185中为每个参考区间提供相应的参考区间年龄。在一些实施方式中,请求区间与测试区间不相关,或者请求区间不是从测试区间确定的。例如,请求185可以包括一个或多个参考区间中的每一个的相应开始时间。在一些实施方式中,系统100可以为每个参考区间使用默认持续时间。在一些实施方式中,默认持续时间对于每个参考区间可以是相同的。在一些实施方式中,默认持续时间对于一些参考区间可以是不同的。在一些实施方式中,参考区间的持续时间是测试区间的倍数。倍数可以是1、2、3、4等。如果参考区间的持续时间长于测试区间持续时间(例如,倍数是2或更大),则系统可以对参考区间中的测试区间的数目上的聚合值求平均。因此,例如,如果参考区间是5小时,但是测试区间是一个小时,则系统100可以找到5小时的每1小时持续时间的聚合值,然后对5个聚合值求平均。
32.请求185还可以包括其它参数,比如历史持续时间。历史持续时间是异常检测器150为了获得时序数据以训练预测模型而应当返回多远的指示。如果在请求185中没有提供历史持续时间,则系统100可以使用默认历史持续时间。其它可选参数包括与响应中所包括
的内容有关的标志(flag)。例如,除了异常事件160之外,系统100可以可选地返回由异常检测器150和/或响应区间片段135评估的异常候选145。请求185中的可选参数还可以提供由候选选择器140和异常检测器150使用的各种阈值和比较值。例如,请求185可以包括用于评估预测模型的相对变化阈值、绝对变化阈值、最大误差阈值的参数,以及本文描述的其它变量的参数。因此,检测系统100可以经由api提供高度可定制的过程。
33.查询系统110使用参数(和/或默认值)来确定测试区间和参考区间。然后查询系统110查询被索引的事件115以识别每个区间中的响应事件。响应事件是与所请求的维度匹配(与维度的标签无关)的那些数据点,并且这些数据点具有落入测试区间或参考区间内的时间戳。对于每个区间,当返回响应事件时,查询系统110执行n路合并区间片段135。n路合并通过聚集聚合值来组合具有相同维度标签/维度标签组合的事件。例如,如果聚合值是计数并且查询参数指定维度1,则特定《维度1,label(x)》的每个实例是具有关联计数的响应区间片段,该关联计数表示在区间中找到label(x)的次数,其中label(x)是维度1的任何唯一标签。如果查询参数指定两个或多个维度,则每个响应区间片段是维度标签与其自身相关联的聚合值的唯一组合。例如,如果状态和交易是所请求的维度,则维度组合是状态标签和交易标签的组合。查询系统110返回其中用于状态的任何标签与用于交易的任何标签共同出现的每个实例。共同出现(co-occurrence)意味着具有状态标签的数据点与具有交易标签的数据点具有相同的时间戳。换句话说,状态和交易是具有单个时间戳的同一事件的多种维度。状态取消与交易的撤回同时发生的次数是区间时间片段《状态,取消,交易,撤回》的聚合值。当然,可以类似地应用其它聚合函数。
34.在一些实施方式中,当参考区间具有比测试区间更长的持续时间时,n路合并计算参考区间内的每个测试区间持续时间的聚合值,然后对这些聚合值求平均。因此,例如,如果用于以上示例的测试区间持续时间是一分钟,并且参考区间是五分钟的时间段,则n路合并将确定在五分钟时间段的每一分钟中出现的维度标签的唯一组合的计数,并且然后计算计数的平均值。这五个计数的平均值是该特定参考区间的聚合值。虽然系统100被描述为针对每个片段的每个区间计算一个聚合值(例如,计数),但是系统100可以针对每个片段的每个区间计算多个聚合值,例如,计数和平均值。
35.检测系统100向候选选择器140提供响应区间片段135(即,所请求的维度的标签的唯一组合)。候选选择器140被配置为通过将测试区间中的聚合值与参考区间中的聚合值进行比较来确定哪些片段可能表示异常。在一些实施方式中,候选选择器140可以被配置为仅选择前k个区间片段。在一些实施方式中,前k个区间片段是在所有区间(即,测试区间和所有参考区间)上最常出现的片段。用于确定发生的计数可以是区间的聚合值,或者可以与区间的聚合值分开计算、或除了区间的聚合值之外计算。k的值可以是在请求185中提供的参数,或者可以是默认的,例如2、3、5、8、10等。
36.候选选择器140可基于测试区间和参考区间来确定前k个片段中的每一个(或每个唯一片段)是否是异常候选。如果片段存在于参考区间中但不存在于测试区间中,则候选选择器140可选择片段作为异常候选145。如果片段存在于所有区间中,但在测试区间中具有与参考区间之一中明显不同的聚合值,则候选选择器140可选择该片段作为异常候选145。图2更详细地描述聚合值是否明显不同。
37.任何异常候选145被提供给异常检测器150。异常检测器150可以被配置为针对每
个候选片段,在历史时期上获取该片段的时序。历史时期可以由作为参数提供的历史持续时间来定义,或者由默认时期来定义。异常检测器150可以使用历史时序来训练预测模型。异常检测器150可以使用任何已知的或以后开发的预测模型。示例预测模型包括线性回归、简单移动平均、具有或不具有stl的loess(局部估计散点图平滑)等。所使用的模型可以取决于历史时期的长度。例如,较短的时期可以使用移动平均值,而较长的时期可以使用loess。异常检测器150可以使用预测模型来生成预测或预报值,然后将该值与来自索引事件115的实际值进行比较。如果数值相差很大,则异常检测器150返回片段作为异常事件160。
38.因此,对于每个异常候选145,异常检测器150可以例如经由查询系统110向索引事件115查询响应于候选片段的事件。如果事件落在历史时期或评估区间内,并匹配由该片段表示的维度和标签的组合,则该事件响应于候选片段。评估区间可以具有评估持续时间。评估持续时间可以与用于识别候选片段的测试区间持续时间相同。评估持续时间可以不同于测试区间持续时间。查询系统110可以执行响应事件的n路合并。n路合并可以合并来自不同叶子服务器114的事件,并且为历史数据中的每个评估持续时间生成聚合值。评估区间可以作为请求185中的参数的一部分来提供,例如通过指定区间或信息来确定评估区间。
39.异常检测器150可以使用历史时序数据的聚合值(例如,针对评估持续时间计算的值)来训练预测模型。异常检测器150可以使用历史数据的第一部分,也称为测试部分,来训练预测模型。异常检测器150可以使用历史数据的其余部分来评估预测模型的质量。其余部分可以被称为保留(holdout)部分,并且不用于训练预测模型。保留部分可以用于计算训练误差,或者换句话说,确定预测模型预测的置信度。
40.示例性训练误差是中位绝对百分比误差(median absolute percentage error,mdape)和相对平均偏差(relative mean deviation,rmd)。这些训练误差测量拟合区间,例如模型有多精确。异常检测器150可以忽略具有高训练误差、或换言之低置信度的预测模型。为了确定预测模型是否具有高训练误差,可以将mdape与mdape阈值进行比较。该阈值可以作为请求185中的参数提供。如果mdape满足或超过mdape阈值,则可以认为该模型具有高训练误差。同样,可以将模型的rmd误差与rmd阈值进行比较。如果rmd误差满足或超过该阈值,则可以认为该模型具有高训练误差。rmd阈值可以作为请求185中的参数来提供。在一些实施方式中,可以使用mdape和rmd误差的组合,或一些其它误差测量。
41.在一些实施方式中,如果训练误差太高,则异常检测器150可停止处理候选。在一些实施方式中,如果训练误差太高,则异常检测器150可以分解片段,或者换言之,在片段中使用更少的维度并重新评估,例如,将不同的维度组合置于候选选择过程中。这可以增加出现的次数并且可以导致更好的模型。在任何情况下,产生具有低置信度的模型的候选片段将不会被进一步评估为异常检测。
42.如果预测模型具有足够的置信度,则异常检测器150可以向事件索引115查询在最近的评估区间中发生的响应事件(匹配候选片段中的维度和标签的事件)。这些事件可以被合并并且产生聚合值。该聚合值表示实际值或actualval。异常检测器150可以将该实际值与由预测模型针对相同区间预测的预测值进行比较。
43.异常检测器150可基于保留部分计算预测模型的置信区间。置信区间可以基于预测模型的性能的测量,例如对数精确度比。对于历史时序的保留部分中的每个评估持续时
间,对数精确度比可以用|ln(holdout
val
)/(forecast
val
)|表示。holdout
val
是来自特定区间的历史时序数据的保留部分的值,且forecast
val
是来自预测模型的区间的预测值。在一些实施方式中,可以添加额外的权重以避免空的时间桶(time bucket)。在这种情况下,对数精确度比可以表示为|ln(holdout
val
+extra_weight)/(forecast
val
+extra_weight)|。extra_weight可以反映对预测值和保留值之间的差异的敏感度。例如,对于对差异敏感的应用,extra_weight可以较小,例如1.0,但对于对发散值(divergent value)较不敏感的应用,extra_weight可以较大,例如100或1000。因此,extra_weight参数的值可以取决于实施方式,并且可以作为参数之一来提供。
44.一旦已知对数精确度比在保留部分上的分布,异常检测器150就可以计算置信区间。在一些实施方式中,置信区间可以是99%的置信区间。在一些实施方式中,置信区间可以是95%的置信区间。所使用的置信区间可以基于预测模型中的置信度。例如,具有低误差(例如,mdape和/或rmd)的预测模型可以使用99%的置信区间,而具有中等误差的预测可以使用较低的置信区间,例如95%。99%置信区间表示模型99%确信真实(实际)值位于其中的值的范围。95%置信区间表示模型95%确信真实(实际)值位于其中的值的范围。每个置信区间具有上限。异常检测器150可以使用上限(即,error_ci)来确定来自事件索引的实际值是否与由训练的预测模型提供的预测值相差预定的量。
45.在一些实施方式中,当以下条件中的任一者为真时,异常检测器150可将候选片段视为异常:1.e^error_ci*(forecast
val
+extra_weight)》(actual
val
+extra_weight)*max_delta2.actual
val
+extra_weight《(e^error_ci*(forecast
val
+extra_weight)/max_delta,其中max_delta是实际值和预测值之间的最大差值,e是欧拉数。max_delta可以作为请求185中的参数提供,或者可以是默认值。max_delta可配置为正在评估的事件类型,并表示异常值的容差水平。如果实际值没有通过任一测试,则异常检测器150认为actual
val
在forecast
val
的预定范围之外,并且认为候选片段是异常的。这些片段作为异常事件160返回。
46.因为训练预测模型在计算上是昂贵且耗时的,所以检测系统100使需要通过候选选择过程训练(或换句话说产生)的预测模型的数目最小化。因此,尽管可能存在数百或甚至数千个潜在片段(例如,表示不同维度的可能标签的交叉乘积),但是仅选择少数片段用于全面预测分析。可以使用具有分布式、倒排索引结构的索引事件115在数百毫秒内完成候选选择过程。用于计算前面片段的资源(ram和cpu)与片段的数量成线性比例,并且几乎与维数无关。例如,计算具有6维的前20k片段可以在小于1秒内完成,而计算具有10维的前100k片段可以在10秒内完成。
47.系统100可以包括其它计算设备(未示出)或与其它计算设备通信。例如,请求过程180可以远离检测系统100但能够与检测系统100通信。同样,查询系统110可以远离检测系统100但能够与检测系统100通信。因此,系统100可以在彼此通信的多个计算设备中实现。因此,检测系统100表示一个示例配置,并且其它配置也是可能的。此外,系统100的组件可以以与所示不同的方式组合或分布。
48.图2是根据所公开的主题的用于从时序中识别所请求维度中的异常的示例性过程的流程图。过程200可以由检测系统执行,比如图1的系统100。过程200可以实时或离线或分批方式执行。检测到异常的速度可以取决于事件储存库(例如,索引事件115)的结构、计算资源(例如,处理器和存储器)、以及所识别的候选片段的数量。过程200可以从接收参数集(205)开始。过程200可以是高度灵活和可定制的。虽然可以提供大量参数,但是如果不提供这些参数,则实施方式可以使用默认值。至少,该参数集包括至少一个维度。一个或多个维度用于选择时序数据以集中在事件储存库中。参数集中的维度可能缺少相应的标签。在这样的实施方式中,该维度的任何标签被认为是对该维度的查询的响应。参数集中的一者或多者维度可以具有所请求的一个或多个标签。在这样的实施方式中,响应于对维度的查询,仅考虑与来自参数集的标签相匹配的维度的标签。在一些实施方式中,该参数集可以包括测试区间或从中计算测试区间的数据。例如,该参数集可以指示测试开始时间。测试开始时间定义了测试区间的开始。该参数集可以包括测试持续时间。在这种实施方式中,测试持续时间定义了在测试开始时间开始的测试区间的持续时间。在一些实施方式中,当在该参数集中没有提供测试持续时间时,使用默认测试持续时间。
49.参数集可以包括从中确定m个(m是一个或多个)参考区间的信息。参考区间都发生在测试区间的开始时间之前。参考区间都具有测试区间的持续时间的倍数(例如,1、2、3等)的持续时间。不是每个参考区间都需要具有相同的持续时间。例如,第一参考区间可以具有与测试区间持续时间匹配的持续时间,而第二区间可以具有两倍于测试区间持续时间的持续时间。在一些实施方式中,可以在该参数集中提供m个参考区间中的每一个的开始时间和持续时间。在一些实施方式中,可以提供m个参考区间中的每一个的年龄,并且可以基于测试区间的开始时间来计算区间的开始时间,例如,测试区间开始时间减去年龄。可以假设参考区间的持续时间与测试区间相同,直到提供不同的持续时间。在一些实施方式中,如果在该参数集中没有提供信息,则可以假设参考区间的年龄和持续时间。
50.该参数集还可以包括其它参数。这种参数的示例可以是除了异常之外是否返回异常候选片段、是否返回具有异常的响应事件片段、用于训练预测模型的历史时序的持续时间、评估区间的持续时间、评估区间上的实际值和预测值之间的最大差、选择候选片段的最小绝对变化、选择候选片段的最小相对变化、预测时序计数偏移、预测额外权重、预测mdape阈值、预测rmd阈值等。不是必须提供所列出的所有参数,如果不提供,则可以使用默认值。该参数集可以作为检测系统的api的一部分提供。
51.系统可以使用该参数集来标识所请求的维度的片段,并分析这些片段以标识异常候选片段(210)。使用参考区间的异常候选识别是粗粒度(coarse-grain)滤波器。该粗粒度过滤器识别感兴趣的片段,或者换言之,更可能表示异常的片段。在使用基于测试区间与参考区间的比较的粗粒度滤波器的实施方式中,系统能够最小化计算密集的异常检测。例如,系统可以首先确定由参数和/或默认值定义的测试区间和m个参考区间。对于每个区间(例如,对于测试区间和m个参考区间中的每一个),系统可以确定区间中的前k个唯一片段(215)。为了找到区间的前k个唯一片段,系统可以向比如索引事件115的事件储存库查询该区间的响应事件(220)。事件储存库查询可以指定维度(以及可选地,用于特定维度的任何标签)和区间。查询返回与查询参数匹配的所有数据点,例如,对于在区间内出现的指定维度(以及可选地,与指定维度标签匹配的标签)。系统可以聚集该区间的数据点,例如,确定
在该区间内出现维度标签的哪些唯一组合。维度标签的每个唯一组合是事件片段,或仅是片段。使用图4的示例事件索引415和图5的请求585(a),区间t1具有一个片段,《温度=37,压力=110》,其表示压力维度和温度维度的唯一组合。相比之下,区间t3具有四个片段;《温度=37,压力=110》,《温度=17,压力=17》,《温度=37,压力=17》和《温度=17,压力=110》。换句话说,片段表示在所需维度的区间中出现的标签的交叉乘积(cross product)。
52.系统计算每个片段的聚合值(225)。该聚合值可以是该时间区间中片段的出现次数,或者换言之,该片段中出现特定组合的次数。可以从存储在索引中的聚合值计算聚合值,例如对平均值求平均。在一些实施方式中,系统可以为每个片段计算多于一个的聚合值,例如计算计数和平均值。在一些实施方式中,在区间是持续时间长于测试持续时间的参考区间的情况下,系统可计算等于测试持续时间的参考区间内的时间段的聚合值,并对这些持续时间的聚合值求平均。例如,如果测试区间是5分钟并且参考区间是1小时,则系统可以计算该小时内每5分钟区间的聚合值(例如,计数),然后对12个计数值求平均。平均值被认为是参考区间的聚合值。在一些实施方式中,系统可以将一小时参考区间视为十二个不同的参考区间。
53.在一些实施方式中,系统选择预定数量的片段用于进一步考虑(230)。例如,系统可以选择前k个片段。如果片段是k个片段中在所有区间上具有最高出现率的片段,则该片段可被认为是前k个片段。使用图5,其中k=2作为示例,《温度=37,压力=110》和《温度=17,选择压力=17》片段,因为它们分别具有出现5次和3次,其中剩余片段每个具有出现1次。类似地,对于单独的请求185(b),选择片段《体积=71》和《体积=77》,因为它们具有比片段《体积=70》更高的发生率。在一些实施方式中,如果片段的数目超过阈值,则系统可选择前k个片段。
54.系统可以分析唯一片段(或前k个唯一片段)以确定片段是否是异常候选(240)。如果片段在m个参考区间中的任何一个中但未出现在测试区间中(245,是),则系统可认为该片段是异常候选。如果片段在参考区间内但不在测试区间内,则系统可将片段选择或标记为异常候选(250)。如果片段确实出现在测试区间中(245,否),则在一些实施方式中,系统可确定片段是否出现在所有参考区间中(255)。如果片段不在所有参考区间中(255,否),则系统可以不将片段视为异常候选。如果片段在所有区间中(255,是),则系统可以确定测试区间和任何一个参考区间之间的相对变化是否超过相对变化阈值(260)。相对变化阈值可以是与原始请求一起提供的参数之一。相对变化可以根据|reference
val

test
val
|/(reference
val
+test
val
)计算,其中reference
val
是m个参考区间之一的聚合值,且test
val
是测试区间的聚合值。如果该相对变化满足或超过相对变化阈值(260,是),则系统可将片段视为异常候选(250)。系统针对m个参考区间中的每一个执行该相对变化测试。
55.在一些实施方式中,除了检查相对变化之外,系统还可以检查绝对变化。例如,如果相对变化满足或超过相对阈值,则系统可以确定测试区间和参考区间之间的绝对差是否满足或超过绝对阈值。绝对差比较可以用于滤除在低发生概率下更可能的噪声。换句话说,绝对阈值比较可以防止候选选择过程选择噪声片段,例如,没有足够数据使相关阈值有意义的片段。
56.在识别异常候选(例如,被确定为具有足够的相对变化或足够的相对变化和足够的绝对变化的那些片段)之后,系统可评估异常候选以识别表示异常的片段(265)。将参照
图3更详细地解释该过程的示例。在一些实施方式中,进一步的评估是可选的,并且系统可以将候选片段返回到请求过程以用于进一步的评估。一旦识别出异常,就可以将这些片段返回到请求过程。请求过程可以选择执行进一步的分析、发送警报、将片段添加到监视列表等。除了异常片段之外,并且取决于请求的参数,系统还可以提供候选片段、被分析以确定异常候选的唯一片段或前k个唯一片段中的一者或多者。然后过程200结束。
57.图3图示了根据所公开的主题的用于评估异常候选的示例性过程300的流程图。过程300可以由异常/趋势检测系统执行,比如图1的系统100。过程300可以作为图2的步骤265的一部分来执行。过程300可以通过向事件储存库查询在指定历史时间段期间出现的异常候选片段所表示的维度标签来开始,以获得该片段的历史时序数据(305)。指定历史时间段的开始时间可以是默认值,或者可以作为原始请求(例如,图1的请求185或在图2的步骤205中提及的参数)的参数的一部分来提供。指定的历史时间段的持续时间可以是默认值或者可以作为原始请求的参数来提供。历史时间段表示足以训练预测模型的时间段。历史时间段的持续时间应该是在过程300的异常分析中使用的评估区间的持续时间的倍数。该评估区间持续时间可以与用于确定异常候选的测试区间持续时间相同或不同。
58.系统可以确定历史时序数据中的每个评估持续时间的聚合值。因此,例如,如果历史时间段是三天并且评估持续时间是一小时,则系统确定三天时间段中72小时中的每一小时的聚合值。具有相应聚合值的72个一小时时期被认为是片段的历史时序数据。在一些实施方式中,历史时间段可以被分解;例如,包括一周总共36小时。系统可以将历史时序数据划分为训练部分(训练数据)和保留部分(保留数据)(310)。因此,训练部分可以表示历史时序数据的第一部分。训练数据可以表示大多数历史时序数据。在一些实施方式中,原始请求的参数可以包括用于确定历史时序数据的什么百分比是保留数据的百分比。训练数据可用于训练预测模型(315)。保留部分可用于评估和引导训练。预测模型可以是任何时序预测模型。预测模型可以是适合于被分析的数据类型的任何模型。预测模型的非排他性示例包括简单移动平均、loess、lowess、回归等。
59.作为评估模型的一部分,系统可以计算一个或多个训练误差。训练误差可以是中值绝对百分比误差(mdape)。训练误差可以是相对平均偏差(rmd)。训练误差可用于确定预测模型的质量。例如,可以将mdape误差与最大mdape阈值进行比较,并且如果mdape误差满足或超过该阈值(320,是),则模型的误差太高。同样,可以将rmd误差与rmd阈值进行比较。在一些实施方式中,系统可以使用两种误差,并且如果两种误差满足或超过相应的阈值(320,是),则预测模型可能过于独立。在一些实施方式中,如果一个误差满足或超过其阈值但另一个误差不满足或未超过其阈值,则模型的误差不会太高(320,否)。在一些实施方式中,误差阈值或阈值可以作为参数与原始请求一起提供。
60.在一些实施方式中,具有高误差的模型被忽略,并且系统继续分析另一异常候选片段。在一些实施方式中,系统可以分解片段中的维数,并再次尝试。例如,如果异常候选片段具有五个维度但所得到的训练模型具有高误差(320,是),则系统可发出新的请求并使用五个维度中的三个。减少维数可导致具有更多出现的候选,这可导致更可靠的模式。然而,这种再处理是可选的。
61.如果模型是充分决定性的(320,否),则系统可以从事件索引条目计算用于评估区间的实际值(325)。在一些实施方式中,这可以是针对由评估持续时间覆盖的最近时间段对
事件储存库的查询。在一些实施方式中,它可以覆盖最近的时间段。在一些实施方式中,返回历史时序的数据的查询还返回用于计算实际值的数据点。实际值还表示聚合值,例如由评估区间表示的时间段上的计数或平均值。
62.系统还从预测模型获得预测值(330)。然后,系统将预测值与实际值进行比较,以确定实际值是否在预测值的预定范围内(335)。如果实际值在预定范围之外(335,否),则候选片段被认为是异常片段,并被提供给请求过程(340)。预定范围可以取决于许多因素。一个因素可以是最大变化或max_delta。最大变化可以是默认值,或者可以由请求过程作为参数。
63.另一个因素是使用预测模型的对数精确度比计算的置信区间。对于历史时序的保留部分中的每个评估区间时间,对数精确度比可以用|ln(holdout
val
)/(forecast
val
)|表示。holdout
val
是来自历史时序数据的保留部分中的评估区间的值,并且forecast
val
是来自预测模型的该区间的预测值。在一些实施方式中,可以添加额外的权重以避免空的时间桶。在这种情况下,对数精确度比可以表示为|ln(holdout
val
+extra_weight)/(forecast
val
+extra_weight)|。extra_weight可以反映被认为是异常的变化的幅度。换句话说,extra_weight参数控制异常检测的灵敏度。例如,当相对较小的变化可被视为异常时,系统可使用(1.0)的extra_weight。当小的变化未被视为异常时,系统可使用较大的额外权重,例如100或1000。可以针对保留数据中的每个评估区间计算该对数精确度比。这提供了对保留数据的分布。
64.对数精确度比分布可用于确定置信区间。置信区间是预测模型具有实际值落入的高置信度百分比(例如,90%、95%或99%)的值的范围。系统可以使用该置信区间的上限(ci_upper)来确定实际值是否落在预测值的预定范围内,或者换言之落在预测值的方差内。在一些实施方式中,当e^ci_upper*forecast
val
》actual
val
*max_delta时,系统可以确定预测值(forecast
val
)在实际值(actual
val
)的预定范围之外。在一些实施方式中,当actual
val
《(e^ci_upper*forecast
val
)/max_delta时,系统可以确定预测值在实际值的预定范围之外。在一些实施方式中,如果任一测试为真,则系统确定预测值在实际值的预定范围之外。在一些实施方式中,额外权重可用于避免空的时间桶,例如,e^ci_upper*(forecast
val
+extra_weight)》(actual
val
+extra_weight)*max_delta或(actual
val
+extra_weight)《(e^ci_upper*(forecast
val
+extra_weight))/max_delta。
65.系统针对每个异常候选片段重复该过程。因为过程300仅针对事件储存库中的可能片段的小子集执行,所以可以针对先前未指定的片段实时地执行过程300。换言之,生成预测模型的计算上昂贵的步骤仅在可以快速执行的较粗粒度的候选选择过程之后执行。过程300还可以作为批处理有效地执行,并且可以在没有候选选择过程(即,在图2的步骤225处标识的所有片段)的情况下执行。在一些实施方式中,过程300是可选的,并且可以使用评估异常候选的其它方法。
66.图4图示了示例事件储存库,而图5图示了示例请求,例如请求585(a)和请求585(b),以及用于请求的候选选择过程。提供图4和5是为了便于讨论和说明,而绝不是限制性的。在图4的示例中,为了简洁起见,示出了三个叶子服务器414。叶子服务器414类似于图1的叶子服务器114,且根服务器410类似于图1的根服务器110。每个叶子服务器存储事件储存库的分片,例如索引事件415。在该示例中,三个维度被记录为可能事件的一部分;压力、
温度和体积。在图4的示例中,索引415中的每个事件数据品脱(pint)420具有维度标签和相关联的时间(例如,t1、t2、t3等)。对于索引中的每个实例假定一(1)的计数。
67.在图5中,请求进程提供三个参数作为请求585(a)的一部分;二个维度和测试区间。请求585(a)可提供其它参数(未示出)。系统可以使用两个维度来从与温度和压力的维度相匹配的索引415中检索事件数据点420。系统可以获得在一个小时持续时间(例如,t1)和八个参考持续时间(例如,t2到t9)的测试区间中发生的事件,例如,事件数据点420。为了便于说明,图4中将事件数据点420的时间示为它们所属的区间而不是时间戳。
68.例如,对于测试区间t1,根410从叶子414(1)和414(2)接收标签为110的压力维度事件。根410还接收测试区间t1的标签为37的温度维度事件。根410(或另一服务器)执行响应的n路合并,并计算测试区间t1的《温度=37,压力=110》的组合的二(2)的聚合值。聚合值表示测试区间t1中片段《温度=37,压力=110》出现的计数。类似地,根。以类似的方式,对于参考区间t3,根410接收压力维度的两个维度标签和温度维度的两个维度标签。这意味n路合并导致维度标签的叉积(cross-product),每个维度标签具有一(1)的总计数。
69.在图4的示例中,在时间区间t2中存在一个压力维度事件,但没有相应的温度维度。由于温度维度不存在标签,因此t2没有有效片段。这被认为是空的参考区间。作为剩余参考区间的n路合并的结果,产生片段505-520。系统可以选择最前面的两个片段。选择片段505和510是因为它们的总体发生率高于片段515和520。该系统将测试区间(t1)的聚合值与前2个片段的每一个的参考区间的聚合值进行比较。例如,系统可以认为片段510是异常候选片段,因为它在测试区间t1中缺少合计。片段505在t1中具有聚合值,但是因为该值与t7中的值相同,所以片段505不被认为是异常候选。因此,只有片段510是异常候选并且被进一步评估(例如,生成预测模型并且将预测值与来自事件索引415的实际值进行比较)。如果进一步的分析指示片段510表示异常,则将片段,即《温度=17,压力=17》提供给请求过程。
70.在图5的第二示例中,请求过程仅提供一个维度作为参数。作为n路合并的结果,提供了片段550、555和560。选择前两个片段导致片段555和560被考虑用于异常候选。仅选择片段560,因为它缺少测试区间t1的值。因此,如本文所述,只有片段560是异常候选片段并被呈现用于进一步分析。
71.图6示出了可以与本文描述的技术一起使用的通用计算机设备600的示例,其可以是图1的系统100。计算设备600旨在表示计算设备的各种示例形式,比如膝上型计算机、台式计算机、工作站、个人数字助理、蜂窝电话、智能电话、平板计算机、服务器和包括可穿戴设备的其它计算设备。本文所示的组件、它们的连接和关系以及它们的功能仅意在作为示例,而不意在限制在本文件中描述和/或要求保护的本发明的实施方式。
72.计算设备600包括经由接口608连接的处理器602、存储器604、存储设备606和扩展端口610。在一些实施方式中,计算设备600可以包括经由接口608连接的收发器646、通信接口644和gps(全球定位系统)接收机模块648以及其它组件。设备600可以通过通信接口644进行无线通信,通信接口644在必要时可以包括数字信号处理电路。组件602、604、606、608、610、640、644、646和648中的每一者可安装在共用母板上或以其它适当方式安装。
73.处理器602可以处理用于在计算设备600内执行的指令,包括存储在存储器604中或存储设备606上的指令,以在外部输入/输出设备(比如显示器616)上显示gui的图形信息。显示器616可以是监视器或平面触摸屏显示器。在一些实施方式中,可以适当地使用多
个处理器和/或多个总线以及多个存储器和存储器类型。而且,可以连接多个计算设备600,其中每个设备提供必要操作的部分(例如,作为服务器库、刀片服务器组或多处理器系统)。
74.存储器604存储计算设备600内的信息。在一种实施方式中,存储器604是易失性存储器单元。在另一种实施方式中,存储器604是非易失性存储器单元。存储器604还可以是另一种形式的计算机可读介质,比如磁盘或光盘。在一些实施方式中,存储器604可以包括通过扩展接口提供的扩展存储器。
75.存储设备606能够为计算设备600提供大体积存储。在一种实施方式中,存储设备606可以是或包括计算机可读介质,比如软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其它类似的固态存储器设备、或设备阵列,包括存储区域网络或其它配置中的设备。计算机程序产品可以有形地包括在这样的计算机可读介质中。计算机程序产品还可以包括在被执行时执行一个或多个方法(比如上述方法)的指令。计算机或机器可读介质是比如存储器604、存储设备606或处理器602上的存储器的存储设备。
76.接口608可以是管理计算设备600的带宽密集操作的高速控制器,或管理较低带宽密集操作的低速控制器,或这些控制器的组合。可以提供外部接口640,以便实现设备600与其它设备的近距离通信。在一些实施方式中,控制器608可以耦合到存储设备606和扩展端口614。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的扩展端口可以例如通过网络适配器耦合到一个或多个输入/输出设备,比如键盘、指示设备、扫描仪或比如交换机或路由器的联网设备。
77.计算设备600可以以多种不同的形式实现,如图所示。例如,它可以被实现为标准服务器630,或者在一组这样的服务器中多次实现。它也可以实现为机架服务器系统的一部分。另外,它可以在比如膝上型计算机622或智能电话636的个人计算机中实现。整个系统可以由彼此通信的多个计算设备600组成。其它配置也是可能的。
78.图7示出了可以与本文描述的技术一起使用的通用计算机设备700的示例,其可以是图1的系统100。计算设备700旨在表示各种示例形式的大规模数据处理设备,比如服务器、刀片服务器、数据中心、大型机和其它大规模计算设备。计算设备700可以是具有多个处理器的分布式系统,可能包括通过一个或多个通信网络互连的网络附连存储节点。本文所示的组件、它们的连接和关系以及它们的功能仅意在作为示例,而不意在限制在本文件中描述和/或要求保护的本发明的实施方式。
79.分布式计算系统700可以包括任意数量的计算设备780。计算设备780可以包括通过局域网或广域网、专用光链路、调制解调器、网桥、路由器、交换机、有线或无线网络等进行通信的服务器或机架服务器、大型机等。
80.在一些实施方式中,每个计算设备可以包括多个机架。例如,计算设备780a包括多个机架758a-758n。每个机架可以包括一个或多个处理器,比如处理器752a-752n和762a-762n。处理器可以包括数据处理器、网络附加存储设备和其它计算机控制的设备。在一些实施方式中,一个处理器可以作为主处理器操作并且控制调度和数据分发任务。处理器可以通过一个或多个机架开关758互连,并且一个或多个机架可以通过开关778连接。交换机778可以处理多个连接的计算设备700之间的通信。
81.每个机架可以包括存储器,比如存储器754和存储器764,以及存储器,比如756和766。存储器756和766可提供大体积存储,并且可包括易失性或非易失性存储,比如网络附
接的盘、软盘、硬盘、光盘、磁带、闪存或其它类似的固态存储器设备,或者设备阵列,包括存储区域网络或其它配置中的设备。存储器756或766可在多个处理器、多个机架或多个计算装置之间共享,且可包含存储可由处理器中的一者或多者执行的指令的计算机可读媒体。存储器754和764可以包括例如一个或多个易失性存储器单元、一个或多个非易失性存储器单元和/或其它形式的计算机可读介质,比如磁盘或光盘、闪存、高速缓存、随机存取存储器(ram)、只读存储器(rom)及其组合。比如存储器754的存储器也可以在处理器752a-752n之间共享。数据结构,比如索引,可以存储在例如存储器756和存储器754中。计算设备700可以包括未示出的其它组件,比如控制器、总线、输入/输出设备、通信模块等。
82.比如系统100的整个系统可以由彼此通信的多个计算设备700组成。例如,设备780a可以与设备780b、780c和780d通信,并且这些设备可以统称为系统100。作为另一示例,图1的系统100可以包括一个或多个计算设备700。一些计算设备可以在地理上彼此靠近,而其它计算设备可以在地理上远离。系统700的布局仅是示例,并且系统可以采用其它布局或配置。
83.根据一个方面,一种用于识别异常事件的方法包括从将时间戳与维度标签和所述时间戳的聚合值相关联的事件索引中获得来自所述索引的数据点集,所述数据点具有与一个或多个查询维度中的查询维度相匹配的维度并且具有在测试区间或多个参考区间中的参考区间内的时间戳,其中,所述一个或多个查询维度定义维度组合。该方法还包括:对于多个参考区间中的每个参考区间和测试区间中的每个唯一片段,计算相应的聚合值。唯一片段可以是来自与查询的维度组合相匹配的数据点集的唯一维度标签组合的组合。该方法还包括通过对于唯一片段中的至少一些唯一片段确定唯一片段出现在至少一个参考区间中但不在测试区间中,或者所述唯一片段出现在所有的所述参考区间和测试区间中,并且测试区间的聚合值与多个参考区间中的人一个的相应聚合值之间的相对变化满足相对变化阈值,来识别异常候选片段。该方法还包括,对于每个异常候选片段,根据从事件索引获得的历史时序生成预测模型,所述历史时序是具有与所述异常候选片段的维度标签匹配的维度标签的索引条目,使用来自所述事件索引的数据确定所述异常候选片段的评估区间的实际值,根据预测模型获得异常候选片段的预测值,以及响应于确定预测值在所述实际值的预定范围之外,将所述异常候选片段报告为异常片段。
84.这些和其它方面可以以单独或组合的方式包括以下中的一者或多者。例如,针对异常候选评估的至少一些唯一片段可以是在测试区间和多个参考区间内出现率最高的预定数量的片段。作为另一示例,可以经由api从请求过程获得所述一个或多个查询维度和所述测试区间,并且将异常候选片段报告为异常片段可以包括报告异常片段的所述维度标签。作为另一示例,对于参考区间,所述测试区间的所述聚合值与所述参考区间的所述相应聚合值之间的相对变化满足相对变化阈值,也可响应于确定测试区间的聚合值与所述参考区间的所述相应聚合值之间的绝对变化满足绝对变化阈值,将所述唯一片段标识为异常候选片段。作为另一示例,所述聚合值可以是计数。在一些实施方式中,所述计数在所述事件索引中被暗示,每个时间戳是每个维度标签中的一个的计数。
85.作为另一实例,测试区间具有测试区间持续时间,且多个参考区间中的每一个具有为所述测试区间持续时间的倍数的相关联的持续时间。在一些实施方式中,对于具有比测试区间持续时间长的持续时间的参考区间,在参考区间的持续时间中的每个测试区间持
续时间来计算所述聚合值的平均值。作为另一示例,所述预测模型可以是线性回归模型、移动平均模型、或局部估计散点图平滑(loess)模型之一。作为另一示例,所述历史时序可以包括训练数据和保留数据,并且生成所述预测模型可以包括使用所述保留数据来评估预测模型的准确性,并且所述预定范围取决于预测模型的准确度。在一些实施方式中,确定所述预测值在所述实际值的预定范围之外可以包括使用对数精确度比来计算在所述保留数据上的误差并且通过从所述误差在所述保留数据上的分布确定置信区间来确定置信阈值c。所述预定范围可以基于置信度阈值c。在一些实施方式中,确定该预测值在该保留数据的预定范围之外包括:获得最大差值阈值d,获得额外权重w;响应于确定c*(forecast
val
+w)>(actual
val
+w)*d,确定预测值在预定范围之外,其中forecast
val
i是预测值而actual
val
是实际值,以及响应于确定actual
val
+w<(c*(forecast
val
+w))/d,确定预测值在预定范围之外。作为另一个示例,获得一个区间的索引条目可以包括根服务器向多个叶子服务器发送标识所述一个或多个查询维度和区间的请求,在多个叶子服务器的每个叶子服务器处搜索事件索引条目,所述事件索引条目具有与所述一个或多个查询维度中的查询维度相匹配的维度并且所述事件索引条目具有在所述区间内的时间戳,以及响应索引条目,所述多个叶子服务器的每个叶子服务器向所述根服务器提供每个响应索引条目,所述每个响应索引条目包括所述匹配维度的标签、所述时间戳和所述聚合值。
86.根据一个方面,一种方法可以包括从请求程序接收至少一个维度、测试持续时间、测试开始时间、参考开始时间和历史持续时间,该测试开始时间和该测试持续时间定义测试区间,基于该参考开始时间和该测试持续时间确定至少一个参考区间,其中每个参考区间的持续时间是该测试持续时间的倍数,以及从事件的索引获得事件,所述事件响应于该至少一个维度并且在所述事件具有在所述测试区间内或在所述至少一个参考区间内的有时间戳。该方法还可以包括:对于所述至少一个参考区间和所述测试区间中的每一个中的每个唯一片段,计算相应的聚合值,唯一片段是来自所述响应事件的唯一维度标签组合;对于所述唯一片段中的至少一些唯一片段中的每个唯一片段,通过将所述测试区间中的所述聚合值与所述至少一个参考区间中的所述聚合值进行比较,来识别异常候选片段;以及对于每个异常候选片段,基于来自历史持续时间发生的事件的索引的事件来构建异常候选片段的预测模型;将从所述预测模型获得的预测值与异常候选片段的实际值进行比较;以及响应于确定比较指示实际值与所述预测值相差至少预定量超出置信区间,将所述异常候选片段报告为异常片段。
87.这些和其它方面可以以单独或组合的方式包括以下中的一者或多者。例如,为异常候选片段构建预测模型可以包括从事件的索引获得历史时序,所述历史时序是具有与异常候选片段的维度标签相匹配的维度标签事件,并且所述事件具有在所述历史持续时间内的时间戳,并且使用所述历史时序的第一部分来训练预测模型。在一些实施方式中,为所述异常候选片段构建预测模型包括基于所述历史时序的其余部分来确定所述置信区间。作为另一示例,可以从请求程序接收所述预定量。作为另一示例,所述参考开始时间是参考年龄,并且还从请求程序接收至少一个参考时期,并且基于参考开始时间和测试持续时间来确定至少一个参考区间包括通过从测试开始时间减去参考年龄来确定至少一个参考区间的开始时间。计算该参考区间的相应聚合值可以包括:对于该至少一个参考时期中的每个测试持续时间,计算区间聚合值;以及将所述各个聚合值计算为所述区间聚合值的平均值。
作为另一示例,从所述请求程序接收参考时期,并且计算至少一个参考区间的相应聚合值可以包括:为所述参考时期中的每个测试持续时间,计算区间聚合值,并且将所述各个聚合值计算为所述区间聚合值的平均值。
88.根据一个方面,一种方法包括从请求过程接收参数,所述参数标识事件的至少一个维度,所述事件在事件储存库、测试开始时间、和测试持续时间中捕获。该方法还可以包括从所述事件存储库识别用于至少一个维度的事件集,所述集包括在由测试开始时间和测试持续时间限定的测试区间内发生的事件并且所述集包括在至少两个参考区间内发生的事件,所述参考区间在测试区间之前发生并且具有相应持续时间,所述相应持续时间是所述测试持续时间的倍数。该方法还可以包括对于所述测试区间和所述至少两个参考区间中的每一个,生成针对在所述区间中发生的事件集中的维度值的每个唯一组合的聚合值,基于所述参考区间和所述测试区间的聚合值的比较来选择所述维度值的唯一组合中的至少一个用于异常检测,以及对所选择的所述维度值的唯一组合的历史时序执行异常检测。该方法可以包括响应于指示所选择的所述维度值的唯一组合具有异常的异常检测,报告所述异常检测的结果异常。
89.这些和其它方面可以以单独或组合的方式包括以下中的一者或多者。例如,所述参数可以标识两个维度,并且生成区间的所述聚合值可以包括,在维度值的唯一组合中包括维度值的交叉乘积,对于所述两个维度中的每一个,所述维度值存在于所述区间内发生的事件集中。在一些实施方式中,所述聚合值是计数,并且具有唯一时间戳的每个维度值作为所述交叉乘积的输入,每个交叉乘积得到1的计数。作为另一示例,该方法还包括选择用于异常检测的维度值的预定数量的唯一组合,其中所选择的所述唯一组合在所述事件内具有最高出现率。作为另一示例,执行异常检测可以包括:使用历史时序来训练预测模型;从预测模型获得预测值;从事件储存库获得所选维度值的唯一组合的实际值;以及响应于确定实际值超过与预测值的方差,指示所选维度值的唯一组合具有异常。
90.根据一个方面,系统包括:至少一个处理器;用于针对在针对指定维度的指定区间中发生的事件查询事件索引的部件;用于针对在该指定区间中发生的事件生成维度标签的唯一组合的部件;用于确定该唯一片段中的任一者是否是异常候选的部件;以及用于使用预测模型来评估该异常候选的部件。
91.根据一个方面,系统包括至少一个处理器和存储指令的存储器,该指令在由至少一个处理器执行时使系统执行本文所公开的任何方法。
92.每个方面的方面和可选特征可以以任何合适的方式组合。例如,一个方面的任选实施例可用于其它方面。
93.除了上述实施方式之外,以下实施方式也具有创新性:
94.实施例1是一种方法,包括从将时间戳与维度标签和时间戳的聚合值相关联的事件索引获得来自索引事件的数据点集,所述数据点集具有与一个或多个查询维度中的查询维度相匹配的维度,并且具有在多个参考区间中的测试区间或参考区间内的时间戳,其中,该一个或多个查询维度定义维度组合。该方法还包括:针对多个参考区间中的每个参考区间中和测试区间中的每个唯一片段,计算相应的聚合值。唯一片段可以是来自与查询的维度组合相匹配的数据点集的唯一维度标签组合的组合。该方法还包括对于所述唯一片段中的至少一些,通过确定以下内容来识别异常候选:所述唯一片段出现在至少一个参考区间
中但不在测试区间中,或者唯一片段出现在所有参考区间中和测试区间中,并且测试区间的聚合值与多个参考区间中的任何参考区间的相应聚合值之间的相对变化满足相对变化阈值,来识别异常候选片段。该方法还包括,针对每个异常候选片段,根据从事件索引获得的历史时序生成预测模型,所述历史时序是具有与异常候选片段的所述维度标签匹配的维度标签的索引条目,使用来自事件索引的数据确定异常候选片段的评估区间的实际值,根据预测模型获得异常候选片段的预测值,以及响应于确定预测值在实际值的预定范围之外,将异常候选片段报告为异常片段。
95.实施例2是根据实施例1的方法,其中,被评估为异常候选的所述至少一些唯一片段是在所述测试区间和所述多个参考区间内出现率最高的预定数量的片段。
96.实施例3是实施例1-2中任一实施例的方法,其中,经由api从请求进程获得一个或多个查询维度和测试区间,并且将异常候选片段报告为异常片段包括报告异常片段的维度标签。
97.实施例4是实施例1、2或3的方法,其中,对于测试区间的聚合值与参考区间的相应聚合值之间的相对变化满足相对变化阈值,响应于同样确定测试区间的所述聚合值与所述参考区间的相应聚合值之间的绝对变化满足绝对变化阈值,将所述唯一片段识别为异常候选片段。
98.实施例5是根据实施例1至4中任一项所述的方法,其中,所述聚合值是计数。
99.实施例6是根据实施例5的方法,其中,计数在事件索引中被暗示,每个时间戳是针对每个维度标签中的一者的计数。
100.实施例7是实施例1-5中任一项的方法,其中,所述测试区间具有测试区间持续时间,且所述多个参考区间中的每一者具有为测试区间持续时间的倍数的相关联持续时间。
101.实施例8是实施例7的方法,其中,对于具有比测试区间持续时间长的持续时间的参考区间,针对参考区间的持续时间中的每个测试区间持续时间来计算聚合值的平均值。
102.实施例9是实施例1-7中任一项的方法,其中,所述预测模型是线性回归模型、移动平均模型,或局部估计散点图平滑(loess)模型之一。
103.实施例10是实施例1-8中任一项的方法,其中,所述历史时序包括训练数据和保留数据,并且生成该预测模型包括使用该保留数据来评估该预测模型的准确性,并且该预定范围取决于该预测模型的所述准确性。
104.实施例11是实施例10的方法,其中,确定所述预测值在该实际值的预定范围之外包括:使用对数准确性比计算在所述保留数据上的误差,并且通过从所述误差在该保留数据上的分布确定置信区间来确定置信阈值c,其中,所述预定范围基于该置信阈值c。
105.实施例12是实施例11的方法,其中,确定所述预测值在所述保留数据的预定范围之外包括:获得最大差值阈值d;获得一个预测额外权重w;响应于确定c*(forecast
val
+w)>(actual
val
+w)*d,确定该预测值在该预定范围之外,其中,forecast
val
是预测值并且actual
val
是实际值,并且响应于确定actual
val
+w<(c*(forecast
val
+w))/d,确定所述预测值在所述预定范围之外。
106.实施例13是实施例1-12中任一项的方法,其中,获得区间的索引条目包括:根服务器向多个叶子服务器发送识别所述一个或多个查询维度和区间的请求,在多个叶子服务器的每个叶子服务器处搜索具有与一个或多个查询维度中的查询维度相匹配的维度并且具
有在区间内的时间戳的事件索引条目,以及多个叶子服务器的每个叶子服务器向根服务器提供响应索引条目,每个响应索引条目包括匹配维度的所述标签、时间戳和所述聚合值。
107.实施例14为一种方法,所述方法包括:从请求过程接收参数,所述参数标识在事件储存库中捕捉的事件的至少一个维度、测试开始时间和测试持续时间;从所述事件储存库识别针对所述至少一个维度的事件集,该集包括在由该测试开始时间和该测试持续时间限定的测试区间内发生的事件并且包括在至少两个参考区间内发生的事件,所述参考区间在所述测试区间之前发生并且具有是所述测试持续时间的倍数的相应持续时间;对于所述测试区间和所述至少两个参考区间中的每一个,生成针对在所述区间中发生的所述事件集中的维度值的每个唯一组合的聚合值;基于参考区间和测试区间的聚合值的比较,选择维度值的唯一组合中的至少一个用于异常检测;以及针对所选择的维度值的唯一组合对历史时序执行异常检测;以及响应于指示所选择的维数值的唯一组合具有异常的异常检测,报告异常检测的结果。
108.实施例15是实施例14的方法,其中,参数标识两个维度,并且生成区间的聚合值可以包括在维度值的唯一组合中包括针对在两个维度中的每一个的区间期间发生的事件集中的事件而存在的维度值的区间。
109.实施例16是实施例15的方法,其中,聚合值是计数,并且具有唯一时间戳的每个维度值作为区间的输入来计数,并且其中,每个区间得到1的计数。
110.实施例17是实施例14、15或16的方法,进一步包括:选择用于异常检测的维度值的预定数量的唯一组合,其中,所选择的唯一组合在所述组事件内具有最高出现率。
111.实施例18是实施例12-17中任一项的方法,其中,执行异常检测包括:使用历史时序来训练预测模型;从预测模型获得预测值;从事件储存库获得所选维度值的唯一组合的实际值;以及响应于确定实际值超过与预测值的方差,指示所选维度值的唯一组合具有异常。
112.各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,该可编程系统包括至少一个可编程处理器、至少一个输入设备和至少一个输出设备,该可编程处理器可以是专用或通用的,被耦合以从存储系统接收数据和指令以及向存储系统发送数据和指令。
113.这些计算机程序(也称为程序、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用的,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何非暂时性计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器(包括读取访问存储器)、可编程逻辑设备(programmable logic device,pld))。
114.本文描述的系统和技术可以在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,通过该图形用户界面或web浏览器,用户可以与本文描述的系统和技术的实现进行交互),或者这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)、广域网(“wan”)和因特网。
115.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通
过通信网络进行交互。客户端和服务器的关系依靠在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生。
116.已经描述了许多实施方式。然而,在不脱离本公开的精神和范围的情况下,可以进行各种修改。另外,附图中描绘的逻辑流程不需要所示的特定顺序或连续顺序来实现期望的结果。另外,可以提供其它步骤,或者可以从所描述的流程中去除步骤,并且可以向所描述的系统添加其它组件,或者从所描述的系统中去除其它组件。因此,其它实施方式在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1