一种用于异常检测的否定选择方法与流程

文档序号:13472755阅读:183来源:国知局
一种用于异常检测的否定选择方法与流程

本发明属于异常检测技术领域,尤其涉及一种用于异常检测的否定选择方法。



背景技术:

异常检测技术在网络安全、数据分析等方面有着广泛的应用。基于免疫的否定选择算法(又称阴性选择算法)是实现异常检测的一种有效方法,并在工程中得到了广泛应用。面向异常检测的否定选择算法中,检测器集的好坏和多少直接影响着检测性能,因此,如何有效的生成检测器是否定选择算法中的关键问题。按照数据表示方式,否定选择算法可以分为字符串(包含二进制)表示和实数值向量表示。由于实值比字符串更适合描述数值型数据在空间的分布和处理高维问题,更符合实际应用,得到了研究者更为广泛的关注。实值否定选择算法中,最为代表性的算法是v-detector算法,后续的很多研究与应用都基于此展开。但这类算法的缺点之一是:没有及时对检测器集合进行更新,仍产生了大量无效的检测器,导致算法的效率降低,影响了在实际问题中的推广应用。

综上所述,现有技术存在的问题是:现有的存在异常检测的否定选择没有及时更新检测器集合,导致了冗余检测器的生成,造成异常检测速度慢,误报率高。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种用于异常检测的否定选择方法。

本发明是这样实现的,一种种用于异常检测的否定选择方法,所述用于异常检测的否定选择方法对具体的异常检测问题进行形式化定义;定义异常检测问题的正常样本和自体集,随机产生检测器,通过自体集训练随机产生的检测器集,与自体不匹配的检测器作为候选检测器;输入要检测的异常数据,如果与检测器匹配,则为异常数据,否则为正常数据。

进一步,检测器生成中采用集成假设检验的生成算法具体包括:

(1)随机生成一个候选检测器;

(2)首先检测随机生成的检测器是否被已有的检测器覆盖;如果被覆盖,则转(1)重新随机生成;否则,进一步判断该检测器是否自体,如果是自体,则转(1)重新随机生成;否则,转(3);

(3)再次判断是否被检测器覆盖;如果被检测器覆盖,则判断是否达到结束条件(4);

(4)结束条件为:通过记录被覆盖的非自体的数量m和没被覆盖的非自体数量m’作为拒绝和接受零假设的条件(m+m’=n),且只要被覆盖的点的数量比其上限值(mmax)要更大,将接受零假设,结束算法,将检测器集自动地进行一次更新;否则,转(5);设m为被覆盖的点的数量,m′为没被覆盖的点的数量,n为样本大小,则m+m′=n。m>mmax表示没被覆盖的点的数量比其上限值要更大;

(5)判断m′>n-mmax是否成立,如果成立,将其作为成熟检测器,否则转(1)。

进一步,所述用于异常检测的否定选择方法具体包括:

第一步,给定已有参数的值:期望覆盖率p,显著性水平a,样本大小n(n>max(5/p,5/(1-p)),自体半径大小rs;初始检测器集合d为空;已知的自体集合为s;

第二步,用t和m分别记录非自体点的数量和已经被检测器覆盖的非自体点的数量,初值均设置为0;

第三步,随机在问题空间采样一个点x;

第四步,计算点x是否被检测器集合d中的已有检测器覆盖;如果被覆盖,转第三步;否则,转第五步;

第五步,判断点x是否为自体;如果是自体,则转第三步;否则,则表明x是非自体,转第六步;

第六步,令t=t+1;判断x是否被检测器覆盖;如果被检测器覆盖,则转第七步;否则,转第八步;

第七步,令m=m+1,计算m>mmax是否成立;如果成立,说明检测器覆盖率已经足够,则转第十步,结束算法;否则,转第九步;

第八步,将x作为候选检测器,对检测器中心和半径进行优化,生成新的检测器;

第九步,判断m′>n-mmax是否成立;如果成立,则候选检测器x成为成熟检测器并放入检测器集合d,转第二步;否则,则转第三步;

第十步,输出检测器集d,算法结束。

进一步,所述第四步和第六步中判断x是否已经被检测器覆盖的方法为:计算x与检测器集合d中已有的检测器di(i=1,2,....n)的欧氏距离如果距离小于任一检测器di的半径r(di),说明点x已经被检测器覆盖,否则,则没有被覆盖。

进一步,所述第八步具体包括:计算点x与自体样本集合s中的自体点si的欧氏距离li=euclidean(si,x)(i=1,2,....n),记录距离最近的两个自体点及其距离,分别记作(s1,l1),(s2,l2),且l1≤l2,并计算r1=l1-rs,r2=l2-rs,rs为自体半径;移动检测器的位置到同时更改检测器的半径为则新的检测器为(x',rx'),将(x',rx')作为新的检测器加入到检测器集合d。

本发明的另一目的在于提供一种应用所述用于异常检测的否定选择方法的检测器生成过程。

本发明的优点及积极效果为:通过二次否定过程生成检测器,并改变接受和拒绝零假设的条件来快速更新检测器集,达到减少无效检测器的生成。本发明保证在有较高的异常检测算法较高的检测率的同时,降低了算法的误报率,减少了所需的检测器的数量,适合于在线异常检测。

附图说明

图1是本发明实施例提供的用于异常检测的否定选择方法流程图。

图2是本发明实施例提供的相关算法检测率随自体半径变化示意图。

图3是本发明实施例提供的误报率变化曲线示意图。

图4是本发明实施例提供的所需的检测器个数示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明的应用原理作详细的描述。

如图1所示,本发明实施例提供的用于异常检测的否定选择方法包括以下步骤:

s101:对具体的异常检测问题进行形式化定义;

s102:定义异常检测问题的正常样本和自体集;使用二次否定选择过程产生检测器;

s103:输入要检测的异常数据,如果与检测器匹配,则为异常数据,否则为正常数据。

在步骤s102的检测器生成中,采用集成假设检验的生成算法,具体如下:

(1)随机生成一个候选检测器;

(2)首先检测随机生成的检测器是否被已有的检测器覆盖;如果被覆盖,则转(1)重新随机生成;否则,进一步判断该检测器是否自体,如果是自体,则转(1)重新随机生成;否则,转(3);

(3)再次判断是否被检测器覆盖;如果被检测器覆盖,则判断是否达到结束条件(4);

(4)结束条件为:通过记录被覆盖的非自体的数量m和没被覆盖的非自体数量m’作为拒绝和接受零假设的条件(m+m’=n),且只要被覆盖的点的数量比其上限值(mmax)要更大,将接受零假设,结束算法,将检测器集自动地进行一次更新;否则,转(5);设m为被覆盖的点的数量,m′为没被覆盖的点的数量,n为样本大小,则m+m′=n。m>mmax表示没被覆盖的点的数量比其上限值要更大;

(5)判断m′>n-mmax是否成立,如果成立,将其作为成熟检测器,否则转(1)。

本发明实施例提供的用于异常检测的否定选择方法具体包括:

第一步,给定已有参数的值:期望覆盖率p,显著性水平a,样本大小n(n>max(5/p,5/(1-p)),自体半径大小rs。初始检测器集合d为空;已知的自体集合为s;

第二步,用t和m分别记录非自体点的数量和已经被检测器覆盖的非自体点的数量,初值均设置为0;

第三步,随机在问题空间采样一个点x;

第四步,计算点x是否被检测器集合d中的已有检测器覆盖;如果被覆盖,转第三步;否则,转第五步;

第五步,判断点x是否为自体;如果是自体,则转第三步;否则,则表明x是非自体,转第六步;

第六步,令t=t+1;判断x是否被检测器覆盖;如果被检测器覆盖,则转第七步;否则,转第八步;

第七步,令m=m+1,计算m>mmax是否成立;如果成立,说明检测器覆盖率已经足够,则转第十步,结束算法;否则,转第九步;

第八步,将x作为候选检测器,对检测器中心和半径进行优化,生成新的检测器;

第九步,判断m′>n-mmax是否成立;如果成立,则候选检测器x成为成熟检测器并放入检测器集合d,转第二步;否则,则转第三步;

第十步,输出检测器集d,算法结束。

第四步和第六步中判断x是否已经被检测器覆盖的方法为:计算x与检测器集合d中已有的检测器di(i=1,2,....n)的欧氏距离如果距离小于任一检测器di的半径r(di),说明点x已经被检测器覆盖,否则,则没有被覆盖。

第八步具体包括:计算点x与自体样本集合s中的自体点si的欧氏距离li=euclidean(si,x)(i=1,2,....n),记录距离最近的两个自体点及其距离,分别记作(s1,l1),(s2,l2),且l1≤l2,并计算r1=l1-rs,r2=l2-rs,rs为自体半径;移动检测器的位置到同时更改检测器的半径为则新的检测器为(x',rx'),将(x',rx')作为新的检测器加入到检测器集合d。

下面对本发明的应用原理作进一步的描述。

1算法关键技术分析

1.1否定选择算法的检测器生成

否定选择算法由两个阶段构成:训练阶段,即检测器生成阶段;检测阶段,即将待测数据进行归类阶段。可见,检测器的生成在否定选择算法中起着非常重要的作用。否定选择算法一般过程如下:在检测器生成阶段,首先定义自体集;通过自体集训练随机产生的检测器集,与自体不匹配的检测器作为候选检测器;在异常数据检测阶段,对输入的数据,如果与检测器匹配,则为异常数据,否则为正常数据。

对于基于否定选择算法的异常检测问题,在理想状态下,希望用最少的检测器检测到最大可能的异常。由于检测阶段是一个遍历所有成熟检测器的过程,检测器数量越少,在检测阶段就能更快得做出判断,提高检测性能。

1.2集成假设检验的检测器生成过程

对于检测器生成,主要就是判断非自体空间的随机采样点是否已经被检测器完全覆盖,进而决定是否还需要生成新的检测器。

随机在非自体空间采样一个点,该点是否已经被检测器覆盖服从二项式分布[9]。非自体空间中的所有点n即是样本总体。假设a表示已经被检测器覆盖的非自体,表示尚未被检测器覆盖的非自体。设p(a)=p(0<p<1),则由于当n充分大的时候,二项式分布计算十分困难;经验法则认为[12]:当np>5,n(1-p)>5,andn>10,可以使用正态分布作为二项式分布的近似。

将假设检验集成到检测器的生成过程,假设已经达到期望的检测器覆盖率,然后判断假设是否正确。由于期望的检测器覆盖率有一个最低值pmin,并且越大越好,因此,使用右边单边检验。

针对检测器生成过程,更关心检测器对非自体空间的覆盖率,因此,设定假设检验为:

h0:p≤pmin,h1:p>pmin;

h0表示检测器对非自体空间的覆盖率p低于期望值,h1表示检测器对非自体空间的覆盖率p大于期望值。在假设检验中,选择h0和h1的一个原则就是要求犯第1类错误比犯第2类错误代价更大。

在样本容量给定的情况下,总是控制犯第1类错误的概率,使它不大于α(显著性水平)。

由于p是要估计的检测器对非自体空间的覆盖率,设是根据已有样本得到的检测器覆盖率估计值,根据中心极限定理有[12](σ为标准方差)。因此,检验统计量在检测器生成过程中,如果已经有m个点被覆盖,则因此,

当已采样的非自体点数t=n时,才对检测器集进行一次更新,在z>zα时,拒绝原假设,则认为检测器的覆盖率已经足够,算法结束。

2算法的思路与实现

2.1通过记录被覆盖的非自体的数量和没被覆盖的非自体数量作为拒绝和接受零假设的条件,且只要没被覆盖的点的数量比其上限值要更大,将接受零假设,将检测器集自动地进行一次更新。

其上限值的设定如下所述:

设m为被覆盖的点的数量,m′为没被覆盖的点的数量,n为样本大小,则m+m′=n。由已有算法可知:

则拒绝零假设的条件为m>mmax,接受零假设的条件为m′>n-mmax。

由于n-mma小于n,因此算法对于检测器集合的更新要更加快速,且生成检测器的数量和随机采样的点的总数n之间没有直接的关系,减少了无效检测器的生成数量。

2.2算法步骤

本发明提出的检测器生成算法如下:

步骤1:给定已有参数的值:期望覆盖率p,显著性水平a,样本大小n(n>max(5/p,5/(1-p)),自体半径大小rs。初始检测器集合d为空;已知的自体集合为s;

步骤2:用t和m分别记录非自体点的数量和已经被检测器覆盖的非自体点的数量,初值均设置为0;

步骤3:随机在问题空间采样一个点x;

步骤4:计算点x是否被检测器集合d中的已有检测器覆盖;如果被覆盖,转步骤3;否则,转步骤5(一次否定选择);

步骤5:判断点x是否为自体;如果是自体,则转步骤3;否则,则表明x是非自体,转步骤6;

步骤6:令t=t+1;判断x是否被检测器覆盖;如果被检测器覆盖,则转步骤7;否则,转步骤8(二次否定选择)。

步骤7:令m=m+1,计算m>mmax是否成立。如果成立,说明检测器覆盖率已经足够,则转步骤10,结束算法;否则,转步骤9;

步骤8:将x作为候选检测器,对检测器中心和半径进行优化,生成新的检测器。

步骤9:判断m′>n-mmax是否成立;如果成立,则候选检测器x成为成熟检测器并放入检测器集合d,转步骤2;否则,则转步骤3;

步骤10:输出检测器集d,算法结束。

本发明增加了第一次否定选择过程。第一次否定选择过程先将候选检测器与成熟检测器集进行耐受,只对未被己有成熟检测器集覆盖的候选检测器进行自体耐受,从而避免了大量不必要的候选检测器的自体耐受,减少了检测器的生成数量,并提高了效率。

步骤4和步骤6中,判断x是否已经被检测器覆盖的方法为:计算x与检测器集合d中已有的检测器di(i=1,2,....n)的欧氏距离如果距离小于任一检测器di的半径r(di),说明点x已经被检测器覆盖,否则,则没有被覆盖。

步骤8具体过程为:计算点x与自体样本集合s中的自体点si的欧氏距离li=euclidean(si,x)(i=1,2,....n),记录距离最近的两个自体点及其距离,分别记作(s1,l1),(s2,l2),且l1≤l2,并计算r1=l1-rs,r2=l2-rs,rs为自体半径。移动检测器的位置到同时更改检测器的半径为则新的检测器为(x',rx'),将(x',rx')作为新的检测器加入到检测器集合d。

下面结合实验对本发明的应用效果作详细的描述。

1、实验结果及分析

在windows环境下,用java语言编程对算法进行实现。在人工合成数据集2dsyntheticdata和真实数据集iris进行实验,并与文献(xiaoxin,litao,zhangruirui.animmuneoptimizationbasedreal-valuednegativeselectionalgorithm[j].appliedintelligence,v42,n2,p289-302,2015)文献进行对比分析(文献是同类算法中性能最优)。与已有算法类似,实验结果采用检测率、误警率及所需的检测器数量来衡量。

2.1合成数据上的实验及分析

2.2.1实验数据及参数设置

影响实验结果的参数主要有:从数据方面,自体样本点(训练数据)的数量,自体区域的形状;从算法方面,目标覆盖率p、显著性水平a、自体半径rs。

具体参数选择如下:自体区域形状对检测结果影响不大,为了便于比较,与文献采用相同的自体区域形状cross(十字型),期望覆盖率为99%,显著性水平a取0.1。由于数据样本的多少和自体半径对检测结果影响较大,因此,分别采用10%、50%、100%选取的自体样本进行实验,测试数据是1000个随机分布的数据点(包括自体与非自体);自体半径取典型值0.05和0.1。

2.2.2算法对比分析

表1给出了在其它参数给定,使用不同的自体数据训练,自体半径分别取值0.05和0.1时,本发明与文献算法的性能比较。实验结果是100次重复实验的结果以减少随机性。

从表1可以看出:(1)在同样的参数设置下,与文献原算法相比,误警率较低,但检测率略有下降,所需的检测器数量有了较明显的下降。检测器的二次否定过程和快速更新减少了冗余检测器的产生,因此,所需的检测器数量较少,此外,由于检测器数量的减少,导致了部分非自体区域没有被覆盖,因此,检测率也略有下降。由于检测率和误警率本身是相互制约的,因此,综合来看,本发明检测性能较优。(2)当训练用的正常数据越多,误警率越低,检测率稍微会降低,所需检测器数量变化不大。说明更多的自体样本有利于降低误警率,这是合理的。(3)算法的检测效率随着。

表1相关算法检测性能比较(合成数据集)

自体半径值的变化也会随之发生变化,若自体半径值太大,检测率就会下降,误报率也会变小;若自体半径值太小,检测率会提高,误报率也会随之提高。自体半径值的大小对检测结果有明显的影响,是平衡检测率和误警率的主要参数。因此,必须根据实际情况,选择合适的自体半径:如果为了更高的检测率,自体半径可以适当减小;如果为了尽量避免误警率,半径可以适当大一些。

在实际应用中,由于自体的不完备性,希望使用较少的训练数据得到较好的检测性能,则说明算法性能更优。图2-图4所示是使用10%训练数据,自体区域为cross,显著性水平a取0.1时,随着自体半径的变化,本发明与原算法(文献)在不同的期望覆盖率(95%和99%)下,算法的性能变化。比较指标为检测率,误报率以及检测器的数量。

从图2中可以得出,检测率的值随着自体半径值的增大,开始不断减少,且当rs=0.3时检测率开始急剧减少。主要原因是:自体半径的值太大,导致了自体覆盖了部分非自体区域,造成一些非自体的数据点无法被检测器检测出来,引起了检测率的下降。与原算法相比较,改进后的算法检测率有所降低,这主要是因为检测器数量的减少导致了检出率略有降低。此外,期望覆盖率越高,检测率越高,理论分析与实验结果是一致的。

从图3中可以得出,随着目标覆盖率p的增长,误报率的值也会随之有所升高。这是因为:由于自体样本难以完全覆盖自体区域,随着期望覆盖率p的增长,检测器集合可能会覆盖部分自体区域,从而导致误报率的值随之增加。改进后算法的误报率的值与原算法误报率的值相比有较为显著的减少,说明了算法的有效性。

从图4中可以得出,改进后的算法生成的检测器数量和原算法相比较,有明显的降低。随着覆盖率p的增长,原算法的检测器数量会随之显著的增加,而改进后的算法的检测器数量则变化不大。

2.3真实数据集上的实验结果

使用真实的fisher'siris数据集进一步验证此算法的性能。该数据集包括3个类(setosa、versicolour、virginica),每类包含50个样本。实验时,一类数据被作为正常数据,其它两类作为异常数据。正常数据用来训练系统。其中,setosa50%表示:setosa被认为正常数据,其他两种类型被当作异常数据,并且50%的setosa数据被当作训练数据,所有三种类型的数据(包括已经作为训练数据)作为测试数据,其他表示的含义类似。实验中所需参数的设置与文献相同,实验结果如表2所示。

从实验结果可以看出,本发明与文献相比,所需的检测器数量减少,检测率有所降低,误警率降低,与合成数据上的表现一致。此实验结果说明算法有效避免了冗余检测器的产生,提高了检测效率。

综上所述,改进后的算法与原算法相比较,检测率有所降低,误报率也有所降低,检测器生成的数量有明显地减少。由于检测率和误报率本身是相互制约的,总体来看,本发明有一定的优越性。

表2相关算法检测性能比较(iris数据集)

本发明针对已有检测器生成算法检测器更新速度慢的问题,通过改变零假设的接受和拒绝条件,加速了检测器集的更新,减少了无效检测器的生成,提高了检测器效率,适合在线快速检测。由于随着检测器数量的大幅度减少,检测器难以完全的覆盖所有的异常区域,导致最终生成的检测器对异常区域的覆盖率降低,导致了最终的检测率有所降低。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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