本发明涉及计算机网络领域,尤其涉及一种用于评估基线模型的方法及系统。
背景技术:
流量基线(也称“基线”)是一种网络流量监测技术中的常用参数。当实际的网络流量高于预设的基线时,网络流量监测系统将生成对应的告警以提醒用户发生网络流量异常波动。对于用于预测基线的基线模型而言,当预测出的基线与实际数据出现较大偏差时,且实际数据的变化是正常变动时,沿用当前的模型是不可行的,因此需要判断是否需要重新训练模型。
一种现有的方案是基于专家经验或历史数据统计,人工配置一个静态不变的基线上限或基线下限,当实际流量高于预设的基线上限或低于预设的基线下限时,则生成告警。由于该方案依赖于人的主观判断,难以适配不同时间点(例如忙时和闲时)的流量正常波动的情况,容易产生误报或漏报警告的事件。
另一种现有的方案是通过历史数据统计方法、机器学习(如回归算法、时间序列预测算法等)或深度学习(如神经网络等)等多种方式,针对不同时间点建立对应的预测基线。该方案能针对忙时闲时的流量峰值生成动态基线。然而,当流量发生正常变动,则需要人工干预以重新训练预测基线的模型。因此,该方案仍需专业人员采用人工方式持续地优化模型。
技术实现要素:
在本发明的一个方面,提出了一种用于评估基线模型的方法,包括如下步骤:提取在预定历史时间段内的每个时间点处的、由所述基线模型预测的第一基线和历史流量;基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化;在所述流量变化是所述正常流量变化的情况下,基于所述第一基线的值和所述历史流量的值确定评估参数;以及基于所述评估参数确定是否需要训练所述基线模型。
在本发明的另一个方面,提出了一种用于评估基线模型的系统,包括:用于提取在预定历史时间段内的每个时间点处的、由所述基线模型预测的第一基线和历史流量的模块;用于基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化的模块;用于在所述流量变化是所述正常流量变化的情况下,基于所述第一基线的值和所述历史流量的值确定评估参数的模块;以及用于基于所述评估参数确定是否需要训练所述基线模型的模块。
在本发明的又一个方面,提出了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令被计算机执行时能够执行根据本发明的实施例所述的方法。
本发明的实施例能够评估当前预测的基线是否适用,并根据评估结果决定是否重新训练新的预测基线的模型。因此,本发明的实施例能够基于正常的流量波动自动获得适当的基线,从而具有较高的适用性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1示出了根据本发明实施例的流程的示意图。
图2示出了根据现有技术的在业务网络流量出现正常波动的情况下、当前预测基线的模型所生成的基线的示意图。
图3示出了根据本发明实施例的在业务网络流量出现正常波动的情况下新的预测基线的模型所生成的基线的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
下面将结合附图对本发明的具体实施方式进行详细描述。
在监测网络流量的场景中,通常会由于一些因素而导致网络流量发生一些变化。由这些因素导致的网络流量的变化可以被认为是正常的网络流量变化。在一些实施例中,这些因素可以包括但不限于:预测基线的模型在监控全网ip、监控单独ip和监控单独网口等操作之间进行切换;预测基线的模型增加了配置规则(例如检测项);由网络流量体现的业务承载量发生了变化等。
本发明提出了一种评估基线模型的方法。该方法可以对当前的预测基线的模型进行评估。例如,在达到预定的自检周期时,该方法能够判断在网络流量中出现的变化是否为正常的网络流量变化,因此无需人工干预就能决定是否重新训练预测基线的模型。具体而言,该方法包括以下步骤:
(1)读取最近存在的预测的基线与历史数据。
在本步骤中,可以在达到预先设定的自检周期时读取最近预测的基线和在过去的预定时间段内存储的历史数据。在一些实施例中,历史数据是在预定时间段内的历史网络流量。
(2)在历史数据中检测并删除具有异常值。
在本步骤中,可以利用各类异常值检测算法(如lof、孤立森林等)在历史数据中查找异常极值并将其删除。
(3)根据异常点数量判断当前的流量异常是否为正常的流量变化。
在本步骤中,可以对预定时间段内的异常点数量进行统计,并判断当前流量是否出现异常情况。在本文中,如果在某一时间点的流量值高于基线那么将该时间点视为异常点。在检测到异常点时,用于监控流量的系统会发出与异常点对应的告警信息。在一些实施例中,若异常点数量在所有历史数据中的占比大于设定阈值(如50%),则判断当前的流量变化是上述外部因素导致的正常流量变化。
(4)基于预测的基线与历史数据确定评估参数。
在确定是正常流量变化以后,可以基于预测的基线与历史数据确定评估参数。
例如,上述预定时间段可以包括一天,在一天中采集了1440个时间点,其对应于每天所包含的1440分钟。可以将历史数据记录在名为raw_value的列表中,并且将预测基线记录在名为pre_value的列表中。可以计算与每个时间点对应的数据(即预测的基线的值)与实际的历史数据的差值,将其记录在名为delta_value的列表中。
然后,可以排除delta_value列表中的由非正常波动带来的偏差极值。由于实际的历史数据当中存在随机波动,因此需要排除由于随机波动导致的偏差极值。例如,将delta_value中的数据从大到小进行排序,按一定比例(例如5%)排除首尾两端的极值,并计算剩余数据的平均值与标准差。在本文中,将平均值与标准差作为评估参数。
在一些实施例中,还可以将平均绝对百分误差(mape,meanabsolutepercenterror)作为评估参数。mape的计算公式如下:
其中,obervedt表示某一时间点处的流量的实际值,predictedt表示某一时间点处的流量的预测值,n表示时间点(这里可设定为对应于当天的第1至第1440分钟的时间点)
(5)基于评估参数判断是否需要重新训练预测基线的模型
基于各种评估参数,可以判断是否需要重新训练预测基线的模型。若平均值的绝对值高于指定平均值阈值,则说明预测的基线整体偏大或偏小,需要重新训练模型。若标准差高于指定标准差阈值,则说明模型的预测结果波动较大,预测趋势与实际结果有较大偏差,也需要重新训练模型。若mape高于指定mape阈值,则说明预测误差过大,因此也需要重新训练模型。
当各个评估参数都小于对应的指定阈值时,说明基线的预测结果与实际的历史数据较为符合,无需重新训练模型。在一些实施例中,可以采用这些评估参数中的一个或多个来判断是否需要重新训练预测基线的模型。
(6)确定训练样本的范围
若任意一个评估参数高于对应的指定阈值,则需要重新确定训练模型的样本的范围。
在一些实施例中,可以对历史数据按时间进行排序并在原始的样本范围中去除旧样本(即,旧的历史数据),并确保在保留的历史数据中、异常点在所有时间点中的占比大于预设比例(如75%以上)。然后。可以将保留的历史数据作为新的样本。
(7)重新模型训练进行并对原模型进行替换。
在获得新的样本后,可以用新的样本训练预测基线的模型。训练完毕后,将使用新的模型来预测基线。
图1示出了根据本发明实施例的流程的示意图。该流程示出了上述方法的一个实施例。该流程仅采用差值的平均值和标准差作为评估参数。在平均值和标准差中的一者超出指定阈值,则确定需要重新训练模型。
图2示出了根据现有技术的在业务网络流量出现正常波动的情况下、当前预测基线的模型所生成的基线(虚线)的示意图,并且图3示出了根据本发明实施例的在业务网络流量出现正常波动的情况下新的预测基线的模型所生成的基线(虚线)的示意图。图2体现了原有模型所预测的基线已经不能够符合实际的流量的范围。图3体现了在应用本发明的上述方法后、新的模型所预测的基线能够符合实际的流量的范围。
本发明还提出了一种评估基线模型的系统,其包括能够执行上述方法中的各个步骤的模块。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在用户计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
应当注意,尽管在上文的详细描述中提及了实现上述方法的若干软件装置/模块及子装置/模块,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置/模块中具体化。反之,上文描述的一个装置/模块的特征和功能可以进一步划分为由多个装置/模块来具体化。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
1.一种用于评估基线模型的方法,包括如下步骤:
提取在预定历史时间段内的每个时间点处的、由所述基线模型预测的第一基线和历史流量;
基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化;
在所述流量变化是所述正常流量变化的情况下,基于所述第一基线的值和所述历史流量的值确定评估参数;和
基于所述评估参数确定是否需要训练所述基线模型。
2.根据权利要求1所述的方法,还包括:
基于预定检测方法检测所述历史流量中的异常极值,并将检测出的所述异常极值删除。
3.根据权利要求1所述的方法,还包括:
在确定需要训练所述基线模型的情况下确定样本范围;和
利用所确定的样本范围训练所述基线模型,并预测出第二基线。
4.根据权利要求3所述的方法,所述在确定需要训练所述基线模型的情况下确定样本范围的步骤包括:按时间顺序删除原始样本范围中的旧的历史流量,以确保在所述样本范围中流量异常时间点的数量与所述时间点的数量的比例高于第一预定比例。
5.根据权利要求1所述的方法,其中,所述基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化的步骤包括:
根据所述第一基线的值和所述历史流量的值确定在所述预定历史时间段内的流量异常时间点的数量,如果所述流量异常时间点的数量与所述时间点的数量的比例高于第二预定比例,则判断当前的流量变化是为正常流量变化。
6.根据权利要求1所述的方法,其中,所述评估参数是通过在所述时间点的每一个处的所述第一基线的值和所述历史流量的值的差值计算出的差值平均值和差值标准差,以及通过在所述时间点的每一个处的所述第一基线的值和所述历史流量的值计算出的平均绝对百分误差中的至少一个。
7.根据权利要求1所述的方法,其中,所述基于所述评估参数确定是否需要训练所述基线模型的步骤包括:如果所述评估参数高于预定阈值,则确定需要训练所述基线模型。
8.一种用于评估基线模型的系统,包括:
用于提取在预定历史时间段内的每个时间点处的、由所述基线模型预测的第一基线和历史流量的模块;
用于基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化的模块;
用于在所述流量变化是所述正常流量变化的情况下,基于所述第一基线的值和所述历史流量的值确定评估参数的模块;和
用于基于所述评估参数确定是否需要训练所述基线模型的模块。
9.根据权利要求1所述的系统,还包括:
用于基于预定检测方法检测所述历史流量中的异常极值,并将检测出的所述异常极值删除的模块。
10.根据权利要求1所述的系统,还包括:
用于在确定需要训练所述基线模型的情况下确定样本范围的模块;和
用于利用所确定的样本范围训练所述基线模型,并预测出第二基线的模块。
11.根据权利要求10所述的系统,所述用于在确定需要训练所述基线模型的情况下确定样本范围的模块还包括:用于按时间顺序删除原始样本范围中的旧的历史流量,以确保在所述样本范围中流量异常时间点与所述时间点的比例高于第一预定比例的模块。
12.根据权利要求1所述的系统,其中,所述用于基于所述第一基线的值和所述历史流量的值判断在所述预定历史时间段内的流量变化是否为正常流量变化的模块还包括:
用于根据所述第一基线的值和所述历史流量的值确定在所述预定历史时间段内的流量异常时间点的数量,如果所述流量异常时间点的数量与所述时间点的数量的比例高于第二预定比例,则判断当前的流量变化是为正常流量变化的模块。
13.根据权利要求8所述的系统,其中,所述评估参数是通过在所述时间点的每一个处的所述第一基线的值和所述历史流量的值的差值计算出的差值平均值和差值标准差,以及通过在所述时间点的每一个处的所述第一基线的值和所述历史流量的值计算出的平均绝对百分误差中的至少一个。
14.根据权利要求8所述的系统,其中,所述用于基于所述评估参数确定是否需要训练所述基线模型的模块包括:用于在所述评估参数高于预定阈值的情况下,确定需要训练所述基线模型的模块。
15.一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令被计算机执行时能够执行如权利要求1-7中任意之一所述的方法。
技术总结