异常数据检测

2024-07-11

异常数据检测(精选12篇)

异常数据检测 篇1

0 引 言

电子商务的蓬勃发展离不开互联网技术的进步,而在众多的互联网技术中,网上支付技术又成为了支撑电子商务的关键技术。2006年,网上支付在我国所有的电子支付交易中所占比例为96%[1]。随着智能终端的普及和运营商网络设施的完善,移动支付作为一种新兴的网上支付方式也有了一定的发展。可以预见,技术的完善和人们消费模式的转变会使得网上支付越来越普及。

另一方面,网上支付所带来的便利性和信用卡用户的不断增加,也为犯罪分子进行金融欺诈等犯罪提供了更多的机会[3]。由于网上支付使得用户的敏感信息越来越多地在公用的互联网上传输和存储,用户账户信息的机密性面临更大的威胁。如2005年美国信用卡信息泄露事件中,约4000万用户账户信息被盗;而2011年索尼PlayStation Network遭受攻击,涉及大约7700万用户隐私泄露,其中有些PSN账号还绑定了信用卡信息。这些因素结合在一起就构成了巨大的金融风险,需要银行等金融机构采取一定的措施来予以控制。

异常交易大致可以分为两类:一类是不满足交易系统对于正常交易的流程、格式等规定的交易,比如重复交易或者被篡改的交易;另一类是满足系统对于正常交易的规定,但其本质具有一定的欺诈特性,比如攻击者利用盗取的合法用户信息进行的交易,或者合法用户进行的恶意透支行为等。

一般来说,根据一个支付系统具体的实现机制,其自身具有能力检测第一种异常交易,并阻止这种交易的执行。第二种异常交易由于其流程和提供的认证信息一般都符合支付系统的规定,因此支付系统自身难以对这类异常交易进行检测。而允许第二种异常交易的执行无疑会给用户和金融机构带来巨大的风险,因此就需要额外的机制来对这种异常交易进行检测。下文中我们所描述的异常交易也主要针对这一类交易。

1 异常交易检测技术

异常交易检测通常基于以下两个假设:一是异常交易与正常交易存在较大的差别;另一个是异常交易在所有交易中所占的比例很小。按照检测原理的不同,异常交易检测技术主要包括:基于统计的方法、基于偏差的方法、基于距离的方法和基于密度的方法。

基于统计的方法首先用某个分布(如正态分布、泊松分布等)对数据点进行建模,然后用不一致检验确定异常。这种方法的局限性在于现实中的数据分布往往不符合任何一种已知的理想分布;另外大多数测试都是针对单个属性的,对于多维数据中的异常检测效果并不理想。

基于偏差的方法通过对一组对象特征进行检查来识别异常数据,与给出的描述偏离的对象就被定义为异常。采用这种方法的技术主要是序列异常技术,模仿人类的思维模式,从一组连续序列中发现与大多数数据不同的元素。

基于距离的方法将孤立的(没有足够多邻居)数据作为异常,比如文献[2]中的Knorr算法规定,与点p的距离小于d的点的个数不超过k,则p是相对于dk的异常。基于距离的方法只能检测出全局的异常数据,不适合具有多种密度的数据集,因此不能很好地检测出局部的异常。

基于密度的方法引入了局部异常因子LOF(Local Outlier Factor)的概念,度量一个对象关于周围邻居的异常程度,能够检测出局部异常的数据。

2 基于数据挖掘的异常交易检测方法

2.1 设计原理

我们认为一个正常用户的消费行为以及操作行为在一段较长的时间内会维持某种固定的特征,而恶意用户,比如窃取了他人信用卡信息的攻击者,一般需要在尽可能短的时间内充分利用非法获取的信息来谋求利益,因此无论在业务层面还是操作层面都会与正常用户的行为存在较大的差异。我们的方法就是结合了业务和操作这两个层面检测消费交易中的异常,以期在提高检测准确率的同时降低对正常交易的误报。

用户的消费行为会受到其工作种类、收入情况、消费习惯、生活环境等因素的影响,呈现出某种模式,虽然由于突发事件或者习惯的改变会出现一定的波动,但是总体来说不会是一种随机的行为[3]。比如,一个中低收入的用户的消费行为可能大多发生在每个月的最后一个星期(可能由于工资发放或者定期的房租等因素),而每笔的交易金额也可能比较小,在这种情况下,如果该用户的账户在一个月的中旬连续出现大额交易就可以被认为是一种异常。

此外,每个人在进行消费时,也会保持一定的操作习惯。比如某些人习惯在消费之前或者之后进行余额查询的操作,某些人在进行消费之前可能会再次确认商品信息等,或者某些用户在使用信用卡消费后会马上进行相应的还款操作等。另外,操作行为还能在一定程度上用来检测交易流程是否符合系统规定,比如在一个支付系统中用户需要向商户请求订单后才会提交支付请求,因此对于用户操作记录的检查就能判断是否符合系统的规定。最后,操作行为检测还能发现某些已知的异常行为,这些异常的行为很少会出现在正常用户的操作记录中,比如连续的登录操作可能代表了口令猜测的攻击。

2.2 设计架构

我们提出的方法对于异常交易的检测主要是通过将当前交易与用户以往交易记录的对比而进行的,主要思路是通过用户当前提交的消费交易以及其近期的操作记录来综合判断用户的交易是否出现了异常。这个方法主要包括两个阶段:部署和检测。部署阶段主要是对用户以往交易和操作情况的分析,以及分类器的学习等过程;而检测阶段则是当检测到一笔消费交易后,启动分类器和序列比对器对该交易进行异常检测的过程,该部分最后会分别给出当前交易在业务层面和操作层面的可信因子,并综合这两个因素判断交易是否出现了异常。我们选择消费交易来触发异常检测功能主要是因为消费交易是一个用户涉及到资金流动的交易中最频繁的交易,相对于其他交易而言也更加重要,而如果对于所有的交易都进行异常检测无疑会导致整个支付系统性能的降低。

在业务层面的异常检测中,我们采用了贝叶斯信念网络BBN(Bayesian Belief Network)来对当前交易进行分类,对于某个用户的每一笔交易,我们选取交易时间、交易位置、交易金额以及商户类型作为特征向量。另外为了便于实现,我们还采用了k-means算法对交易位置和交易金额的取值进行了离散化。在部署阶段,假定数据库中已经保存了每个用户正常的消费交易记录和常见的异常消费交易记录,我们提取每一个用户的消费交易记录以及异常交易记录构建贝叶斯信念网络并对网络进行训练;在检测阶段,当前消费交易的用户ID以及交易的特征值作为输入提交给BBN分类器,分类器根据用户ID查找到相应的网络结构并对当前交易进行分类,最终BBN分类器得到当前交易属于正常交易的概率,这个概率即为当前用户业务层面的可信因子TS。当TS低于某个阈值时,我们就认为当前交易在业务层面出现了异常。

在操作层面的异常检测中,我们采用了BLAST-SSAHA算法,将用户当前的消费操作,以及之前的N-1次操作构造成一个长度为N的操作序列,并将这个序列作为BLAST-SSAHA算法的查询序列,与数据库中用户以往的正常操作序列进行比对,再与数据库中已知异常操作序列进行比对,判断其与这些序列的相似度。为了简便,每一次操作仅由其操作类型代表。最终BLAST-SSAHA算法得到查询序列与正常序列和异常序列的相似度,这两个相似度的差即为当前用户在操作层面的可信因子OS。当OS低于某一阈值时,就认为检测到一段异常操作,该用户在操作层面出现了异常。

最终一笔交易是否异常需要综合考虑TSOS来决定,以上算法及其实现细节我们会在下文中详细介绍。图1展示了我们异常交易检测方法的架构图。

3 业务层面的异常检测

3.1 k-means聚类算法

在我们提出的方法中,k-means算法用来将每笔交易中交易位置和交易金额的取值离散化,以便于贝叶斯信念网络分类器使用。

k-means算法可以根据数据集中样本之间的距离将所有样本划分成k个分类,k的值由用户事先指定。该算法的核心思想是使得所有分类中的点到所属分类中心点的距离之和最小。设p表示某个分类中的一个点,Ci表示第i个分类,mi表示Ci的中心点,函数D(p,m_i)表示点p与点mi之间的距离,这个距离通常使用欧氏距离来计算。则k-means算法将找到一种划分方式,使得平方误差E最小:

E=∑i=1kpciD(p,mi)2 (1)

算法开始时随机选取k个点分别作为每个分类的中心点,然后开始迭代,每一次迭代由以下两步组成:

① 对每个非中心点进行聚类,每个点将被划分到与其距离最近的中心点所代表的分类中。

② 对分好的k个分类重新计算中心点,一般采用计算平均值的方法,选取与平均值距离最近的点作为新的中心点。

当在一次迭代中没有任何一个非中心点所属的分类发生改变,或者达到了预先设定的次数,迭代过程结束。这时,数据集就被划分成了k个分类。

3.2 贝叶斯信念网络分类器

在我们提出的方法中,BBN算法被用来对用户当前消费交易进行分类,计算其属于正常交易的后验概率。

BBN分类算法的原理是在给定一个观测值后,计算当前样本在该观测值的条件下属于每一个分类的后验概率,并选择得到最大后验概率的类别作为当前样本的分类结果,可以看作是对朴素贝叶斯分类算法的改进。

设一个样本S可以由〈F,C〉表示,其中F是一个由n个随机变量构成的特征向量(F1,F2,…,Fn),C是S所属的类别,这样一个样本就可以表示成一个n+1维的向量。一个样本的观测值,就是特征向量F的取值。那么,在出现某一观测值(f1,f2,…,fn)的条件下,当前样本属于分类ci的概率为:

P(C=ci|F1=f1,F2=f2,…,Fn=fn) (2)

对于每种分类,分别计算上述概率,使得结果最大的分类就作为当前样本的分类。而根据贝叶斯定理:

Ρ(C=ci|F1=f1,F2=f2,,Fn=fn)=Ρ(F1=f1,F2=f2,,Fn=fnC=ci)Ρ(F1=f1,F2=f2,,Fn=fn)=Ρ(F1=f1,F2=f2,,Fn=fn|C=ci)Ρ(C=ci)Ρ(F1=f1,F2=f2,,Fn=fn)(3)

在式(3)中,P(F1=f1,F2=f2,…,Fn=fn)是一个常量,因此问题就转化为找出使得P(F1=f1,F2=f2,…,Fn=fn|C=ci)P(C=ci)最大化的ci。其中P(C=ci)可以用训练数据集中属于ci的样本出现的频率来表示,而对于P(F1=f1,F2=f2,…,Fn=fn|C=ci)的计算,朴素贝叶斯算法假定所有特征之间相互独立,因此:

Ρ(F1=f1,F2=f2,,Fn=fn|C=ci)=Πt=1nΡ(Ft=ft|C=ci)(4)

P(Ft=ft|C=ci)可以事先由训练数据集中统计得出,这虽然简化了计算,但是所有特征之间相互独立的假设太强,现实情况中很难满足,因此无法体现出各个特征之间的依赖关系。

贝叶斯信念网络利用随机变量的条件独立性对朴素贝叶斯算法进行了改进。给定三个随机变量X,YZ,当XYZ满足以下等式时,就称XY关于Z条件独立:

P(X|Y,Z)=P(X|Z) (5)

贝叶斯信念网络由两部分组成,第一部分是一个有向无环图G(V,E),其中G的每个点代表特征向量中的一个随机变量;一条从点X到点Y的边表示Y的取值依赖于X,且X称为Y的父节点,Y的所有父节点构成的集合记为parent(Y)。BBN假定每个随机变量在给定了所有父节点后条件独立于其他节点。另一部分是每个随机变量的条件概率表CPT(Conditional Probability Table),CPT给出了相应随机变量关于其所有父节点的条件概率,对于没有父节点的变量,条件概率就退化为先验概率。给定了BBN的网络结构和相应的CPT,则任意一个样本出现的概率可以表示为:

Ρ(F1=f1,F2=f2,,Fn=fn,C=ci)=Ρ(ci|parent(C))Πt=1nΡ(ft|parent(Ft))(6)

这样,对于BBN分类器,能使得以下后验概率最大的分类就是当前样本的分类:

Ρ(C=ci|F1=f1,F2=f2,,Fn=fn)=Ρ(C=ci|parent(C))Πt=1nΡ(Ft=ft|parent(Ft))Ρ(F1=f1,F2=f2,,Fn=fn)(7)

也就是找到使得P(C=ci|parent(C))Πt=1nP(Ft=ft|parent(Ft))最大的ci即可,其中每个随机变量的条件概率可通过查询相应的CPT得到。

通过训练数据构造一个贝叶斯信念网络主要包含两个步骤,一是确定网络结构,也就是各个随机变量之间的依赖关系;二是计算每个随机变量的CPT。网络结构可以由经验给出,也可以通过一定的算法来确定;当不存在隐藏变量的时候,CPT的值可以通过统计训练数据中相应样本出现的频率得到,当存在隐藏变量时,CPT的值可以通过梯度训练或者EM等算法得到。在我们设计的检测方法中,我们假设训练数据中不存在缺失数据,因此CPT的计算就较为简单了,下面我们着重介绍如何确定BBN的网络结构。

确定BBN网络结构可以利用依赖性分析或者全局最优等算法进行,比如文献[4]中提出的STAGE算法就是一种全局最优的算法。在我们的实现中,我们将使用文献[5]中描述的依赖性分析算法来确定BBN网络的结构。

我们使用该算法的简化版本来计算BBN网络的结构:假定所有随机变量的顺序已经确定。所谓随机变量的顺序就是这样一个序列,在这个序列中较晚出现的变量不能先于其之前的变量发生,也不能是其之前变量发生的原因。这个序列是由经验知识给出的。

下面给出几个关键的定义。

定义1 通路 在不考虑有向无环图中各边方向的情况下,如果两个节点之间存在一条连通的路径,就称该路径为这两个节点之间的一条通路。

定义2 碰撞点 在一条通路上,如果有两条边的方向指向同一个节点,则该节点就称为对于该通路的碰撞点。一个节点对于一条通路可能是碰撞点,而对于另一条通路可能是非碰撞点。

定义3 开放通路 当一条通路上不存在碰撞点,就称之为开放通路。

定义4 d分隔 给定有向无环图G中的两个点X,Y,以及一个不包含XY的点集C;如果XY之间不存在这样一条通路P,使得P上所有的碰撞点或者碰撞点的子节点都在C中,而P上其他节点都不在C中,则称给定C,XYG中是d分隔的,C称为一个割集。反之,则称XYd连通的。

定义5 互信息 两个随机变量XY的互信息I(X,Y)反映出一个随机变量能提供的关于另一个随机变量的信息,即两个变量的依赖程度,可由以下公式得到:

Ι(X,Y)=x,yΡ(x,y)logΡ(x,y)Ρ(x)Ρ(y)(8)

定义6 给定点集C,随机变量XY的条件互信息I(X,Y|C)定义为:

Ι(X,Y|C)=x,y,cΡ(x,y,c)logΡ(x,y|c)Ρ(x|c)Ρ(y|c)(9)

I(X,Y|C)小于某一阈值,就可以认为XY关于C条件独立。

给定训练数据集以及特征向量中各随机变量的顺序,依赖性分析算法通过以下三个步骤来确定BBN网络的结构:

① 初始状态下,G(V,E)中仅包含了代表各随机变量的点,E为空集。对任意两个不相同的随机变量XY,计算其互信息I(X,Y),记录所有互信息超过给定阈值ε的随机变量对,并按照其互信息从大到小进行排序,排好序的随机变量对被保存在链表L中。遍历链表L,先从中取出第一对随机变量,在E中添加一条相应的边连接这两个变量,边的方向则由变量的顺序决定,从先出现的变量指向后出现的变量,然后在L中删除该变量对。继续从L中取出下一对随机变量,如果当前这对随机变量之间不存在一条开放通路,则在它们之间添加一条相应的边,并从L中删除这对变量。如此直到遍历完L中所有的随机变量对。这一步结束以后,相对于实际情况而言,G中可能存在缺失的边,也可能存在多余的边,即可能两个相互依赖的变量之间没有边,也可能两个条件独立的变量之间出现了一条边。

② 从头开始遍历L中剩下的变量对,对于每一对随机变量,在当前的G中寻找其最小割集,并计算这对随机变量在给定割集下的条件互信息。如果这两个随机变量关于给定的割集条件独立,则继续遍历L中的下一对变量,否则,在E中添加一条连接这两个变量的边。如此直到遍历完L中所有的随机变量对。这一步结束以后,G中不存在缺失的边,但仍有可能存在多余的边。

③ 对于E中的每一条边e,如果e连接的两个节点除了e之外还有其他的通路,则暂时从E中将e删除,并在G中寻找这两个节点的一个最小割集,如果这两个节点关于割集条件独立,则将e永久删除,否则,将e重新添加到E中。

至此,贝叶斯信念网络的结构就已经确定。关于此算法的证明过程比较复杂,而且超出了本文的讨论范围,因此在这里就不再介绍了。当得出了BBN的网络结构后,每个随机变量的父节点就已经确定,之后就可以通过训练数据计算每个节点的CPT。完成CPT的计算后,我们就得到了一个训练好的BBN分类器。

3.3 特征选取

假定支付系统的数据库中保存了每个用户的消费交易记录,以及常见的异常消费交易记录。对于每条消费记录,我们选取以下四个特征来构成特征向量:

1) 交易时间 当前消费交易的提交时间。

2) 交易位置 提交当前消费交易时用户所在的位置。

3) 交易金额 当前消费涉及的金额。

4) 商户类型 当前消费涉及的商户类型。

这样,一笔消费交易就由一个特征向量和一个分类标签构成的5维向量表示。下面我们解释一下选择这些特征的依据。

首先,由于每个用户消费习惯的不同,交易时间与相应的交易金额会呈现特定的模式[6];而当给定交易时间,交易位置的取值也会存在一定的规律,比如对于一个在异地上学的学生来说,寒暑假时间的交易通常会在家中进行,而其余时间的交易大多应该在学校所在城市进行。随着移动支付技术的发展与普及,交易位置的获取会更加精确,比如移动支付系统的客户端可以通过GPS或基站定位的方式,获取用户在进行交易时所处的位置。而且对于移动支付交易来说,交易位置信息也更加能体现用户的消费习惯,比如移动支付的用户可能会更多的选择在没有计算机或者有线网络的地方使用移动支付系统。同时,交易金额对于反映一个用户的消费习惯也非常重要,因为交易金额一般会受到用户收入、消费理念等因素的影响,而这些因素一般不会轻易改变。比如对于信用卡用户来说,信用额度会被限制在一定的范围内,而且正常用户平时的交易金额一般都会远小于自己总的额度。最后,用户对于品牌的偏好、消费习惯的不同以及生活环境的限制等因素也在一定程度上决定了用户对于商户的选择。比如电子商务还不普及的地区的用户一般会选择与实体卖家进行交易等。此外,给定了交易所涉及的商户,交易金额也会有一定的规律可循,比如销售数码产品的商户与销售食品的商户所涉及的交易金额一般会有较大的不同。综上所述,我们选取了这四个特征,以期较为完整地体现用户的消费习惯。下面介绍一下每个特征的取值。

对于交易时间,为了全面体现用户的习惯,我们将取值范围设定在一年以内,同时为了缩小向量空间和提高算法的效率,我们将交易时间的具体取值进行划分,每个交易时间由三个部分组成。首先是其所在的季度,在我们的方法中一年被平均划分为4个季度;其次是其所在月份的星期编号,我们把一个月划分为4个星期,每个月从1号到21号按照每周7天划分为3个星期,而从22号开始均算作第4个星期;最后是所在日期的属性,每个日期有工作日和周末2种可能的属性。这样交易时间随机变量就一共有4×4×2=32种可能的取值。

对于交易位置,如果是移动支付系统,那么系统可以获取用户比较精确的地理位置;而如果是传统的网上支付系统,则可以用IP地址所属区域等信息表示。我们选取一个参照位置,交易位置的取值用发生消费的地点与参照位置的距离来表示。根据不同的支付系统对于用户位置信息的掌握程度,这个参照位置可能是用户的居住地点、手机号码的归属城市,或者用户常住城市等。对于每个用户的训练数据集,我们使用k-means算法将发生消费的位置与参照位置的距离离散化为4个可能的等级:Local、Near、Remote以及Global,以此作为交易位置的取值。

对于交易金额,与交易位置类似的,对于每个用户的训练数据集,我们同样使用k-means算法将其离散化为3个等级:Low、Medium以及High,以此作为交易金额的取值。

对于商户类型这个特征,主要希望通过它来反映用户当前购买的商品类别。这里不能直接使用商品类别,因为在很多支付系统中,订单信息并不包含商品的详情,即系统可能并不知道用户所买的商品是什么。但要完成支付,支付系统必须了解所涉及的商户编号或者名称等。因此就可以通过商户类型反映商品的种类。在异常交易检测时,将商户划分为:生活品、电器、娱乐、出行、混杂这5种类型。

3.4 部署阶段

在部署阶段,读取数据库中用户的消费记录和常见异常交易记录来构建贝叶斯信念网络。将用户已有的消费记录标记为正常,而将常见的异常交易记录标记为异常。对于每个用户,k-means算法被用来将交易位置和交易金额的取值离散化。

如前文所述,构造BBN网络包括确定网络结构和计算每个变量的CPT。由于网络结构反映的是各随机变量之间的依赖关系,因此为了便于实现,假定对于所有用户的消费交易,其各个随机变量的依赖关系是相同的。这样,我们的依赖性分析算法只要运行一次,针对所有消费交易记录构造一个统一的网络结构就可以了。比如,根据经验知识给定以下的随机变量顺序:分类、交易时间、交易位置、商户类别、交易金额,图2表示了一种可能的依赖关系。

在确定了网络结构以后,就可以分别为每个用户计算各个随机变量的CPT,完成之后,就为每个用户建好了一个结构相同、而CPT的值反映了其自身消费习惯的贝叶斯信念网络。

3.5 检测阶段

当检测到一笔消费交易,就提取该交易的用户ID以及特征向量提交给BBN分类器,分类器根据用户ID查询相应的CPT,并计算当前交易属于正常交易的后验概率。这个后验概率即为该交易业务层面可信因子TS,若TS小于某一阈值,则标记当前交易在业务层面出现异常。

4 操作层面的异常检测

4.1 BLAST-SSAHA算法

操作层面的异常检测我们以用户近期的操作序列作为查询序列,与数据库中保存的该用户正常操作序列记录进行比对,再与常见的异常操作序列进行比对,如果查询序列与正常序列相似度较小而与异常序列相似度较高,就可以认为查询序列出现了异常。可以看出,通过增加查询序列与异常操作序列的比对,降低了由于突发事件或者用户操作模式短时间内改变引起的误报。

使用文献[7]中提出的BLAST-SSAHA算法(或称之为BLAH算法)做序列比对,该算法是BLAST[8]和SSAHA[9]算法的结合。下面给出几个关键的定义。

定义7 k元组 给定一个长度为n的序列S=〈s1,s2,…,sn〉,S中任意连续的k个元素构成S的一个k元组。则S中k元组的个数为n-k+1,每个元组被赋予一定的权重。

定义8 元组偏移 在序列S中,某个k元组开始的位置称为元组偏移。

定义9 序列基数 序列S中每个位置可能的取值个数称为S的序列基数。

用从0到Sequence Base-1的整数来表示S中所有可能出现的元素,若序列基数为ω,一个k元组〈t1,t2,…,tk〉的权重W记为:

W=i=1kω(k-1)×ti(10)

假定数据库D中有若干个序列,SSAHA算法将每一个长度为n的序列划分成n-k+1个k元组,并在内存中生成一张k元组表KT。KT中的每一条记录对应D中的一个k元组,并由以下元素组成:<元组权重,所在序列编号,元组偏移>。其中元组权重用来在KT上建立一个聚类索引,由W的计算可知,对于给定的kω,一共有ωk种权重,每种权重对应一种k元组。而通过所在序列编号和元组偏移就可以确定当前的k元组在D中的位置。

得到KT之后,对于一个查询序列,我们现在就可以通过BLAST算法将其与D中的序列进行比对了。具体过程为:

① 将查询序列也划分为若干个k元组。

② 依次将查询序列中的k元组与KT进行比较,若KT中也存在一个相同的k元组,则称为发生了一次命中,记录下该k元组在D中的位置,即其所在序列编号和元组偏移。若某个k元组在KT中不存在,则称为发生了一次偏离。

③ 利用②中的记录,将D中的序列按照其包含查询序列不同k元组的个数进行排序,可以看出,包含查询序列中不同k元组越多的序列,与查询序列的相似程度就越大。

通过一定的阈值,在D中选取前n个与查询序列最相似的序列。将查询序列与D中序列发生命中的片段双向扩展,进一步比较查询序列与该序列的相似程度,并最终确定与查询序列最为相似的序列。

4.2 序列构成

理论上,用户每一次操作的多种属性都可以用来构成一条序列,并反映出用户的某种固定习惯,比如消费交易中的交易时间、交易金额等。但由于我们在业务层面的异常交易检测中已经对这些主要的属性进行了分析,也为了便于实现,因此在这里只使用用户操作的类型来构成我们的操作序列。

如我们之前所分析的,用户的操作序列记录可以反映出其特有的使用习惯,而且可以用来判断是否出现了某些已知的异常操作以及是否满足系统对于交易流程的规定。根据一个支付系统实现方式、以及所提供的功能的不同,一个用户可以执行的操作可能有不同的类别。如比较常见的有:登录、余额查询、消费、转账、还款等等。因此在我们的方法中不需要对用户可能的操作类别事先进行限定,只要针对需要保护的支付系统进行一定的配置就可以了。

4.3 部署阶段

假设数据库中已经保存了每个用户正常的操作序列的记录,而且保存了已知异常操作序列的记录。对于每个用户的操作序列,可以按照时间划分成多个子序列,比如每条序列代表了用户在一个月内的操作记录。而对于已知异常操作序列,则可以按照异常的不同类型划分成多个子序列。

在部署阶段,我们使用SSAHA算法为异常操作序列构建k元组表AKT,并为每个用户分别构造k元组表NKT。对于k的选择,由于我们的方法主要是针对消费交易进行异常检测,因此k至少应该等于用户完成一次消费交易所需的操作次数。

4.4 检测阶段

在检测阶段,当用户提交一笔消费交易后,我们提取用户ID,并在数据库中查询其之前的N-1次操作,连同当前的消费操作,组成一个长度为N的查询序列,将该查询序列以及用户ID一起作为输入提交给BLAST算法。BLAST算法根据用户ID查找相应的NKT,并与查询序列进行比对。在此,我们对BLAST算法进行一定的简化。定义出现一次命中的得分为δ,出现一次偏离的得分为γ。假定查询序列中出现了L次命中,那么其与用户正常操作序列的相似度HS为:

HS=L×δ-(N-Lγ (11)

然后,我们将查询序列中出现偏离的片段按顺序组合成一条偏离序列,其长度为N-L。将偏离序列与AKT进行比对,假设在比对过程中出现了M次命中,那么类似的,可以得到偏离序列与异常操作序列的相似度DS为:

DS=M×δ-(N-L-Mγ (12)

最终,通过计算HS-DS得到操作层面的可信因子OS。当OS低于某一阈值时,就表示用户在操作层面出现了异常。

5 最终判断

根据TSOS来综合判断当前交易的异常情况,表1列出了我们的判断方法。

首先值得注意的是,业务层面的异常检测是针对当前单笔交易的,而操作层面的异常检测会涉及多次的操作,因此操作层面的异常与当前交易是否异常可能相关也可能不相关。下面简要说明一下我们最终判断异常交易的依据。

对于业务层面和操作层面都正常或者都异常的情况的处理比较简单,只需将相应的交易标记为正常或异常即可。对于业务层面异常但操作层面正常的交易,通过TS+OS的值来决定交易是否异常。这样做的依据是,当一笔交易在业务层面异常时,其TS值较小,但如果当前操作序列与正常操作序列非常吻合(OS较大),那么当前交易很可能是由于用户遇到突发事件或者消费习惯短期改变导致的,这时该交易仍然可能被归为正常交易。可以看出这种方法减小了检测方法的误报率。

对于业务层面正常但操作层面异常的交易,我们认为需要额外的人工审计来决定是否为异常交易。因为导致操作序列异常的操作可能与本次交易相关,也可能与本次交易无关。如果与本次交易相关,则应该认为本次交易异常;否则,就应该认为本次交易正常,但检测到了其他的异常情况。可以看出这种方法减小了检测方法的漏报率。

6 结 语

本文中,我们提出了一种用于银行等金融机构的异常交易检测方法。我们的方法主要针对用户的消费交易进行异常检测,并通过数据挖掘在业务层面和操作层面分别对当前交易进行分析,最终综合考虑业务层面和操作层面的分析结果来决定当前交易是否出现了异常。通过我们的分析可以看出,结合两个层面的分析方法能够更加全面的发现支付系统中的异常情况,有利于降低检测的误报率和漏报率,提高对于异常交易检测的准确性。

在后续的工作中,我们将研究在训练数据集中存在一定异常交易情况下的检测方法,这种训练数据不纯净的情况在现实中经常出现。此外,我们还将研究在没有标准的异常交易记录的情况下,如何对异常交易进行检测。这种情况可能是因为某些异常交易并没有固定的模式,或者标准异常交易记录并不适合与所有用户的正常交易记录一起作为训练集对分类器进行训练。

参考文献

[1] Zhang Yifei. Research on Online Payment Pattern and Security Strategy of E-commerce[J].IEEE Internet Technology and Applications,2010.

[2] Knorr E M, NG R T. Algorithms for Mining Distance-based Outliers in Large Datasets[C]//Proceedings of 24th International Conference on Very Large Data Bases, 1998.

[3]Sherly K K,Nedunchezhian R.BOAT Adaptive Credit Card Fraud De-tection System[C]//IEEE International Conference on ComputationalIntelligence and Computing Research,2010.

[4]Boyan J A.Learning Evaluation Functions for Global Optimization andBoolean Satisfiability[C]//The Association for the Advancement of Ar-tificial Intelligence,1998.

[5]Cheng Jie,David Bell,Liu Weiru.Learning Bayesian Networks fromData:An Efficient Approach Based on Information Theory[C]//Pro-ceedings of ACM CIKM,1997.

[6]Wheat R,Morrison D G.Estimating Purchase Regularity with Two In-terpurchase Times[J].Marketing Research,1990,27(1):87-93.

[7] Amlan Kundu, Suvasini Panigrahi, Shamik Sural, et al. Majumdar. BLAST-SSAHA Hybridization for Credit Card Fraud Detection[J].IEEE Transactions on Dependable and Secure Computing,2009,6(4).

[8] Altschul S F, Gish W, Miller W, et al. Basic local alignment search tool[J].Mol. Biol,1990,215:403-410.

[9] Ning Zemin, Anthony J Cox, James C Mullikin. SSAHA: A Fast Search Method for Large DNA Databases[J].Genome Research,2001,11(10):1725.

异常数据检测 篇2

文中对存储装置采集的异常冲击波信号进行峰值压力提取.数据通过频谱分析后,采用凯泽窗滤波和平移压力基线的方法进行处理,有效滤除了自激振荡和高频噪声,对比同距测试点冲击波压力峰值,两者一致,有效提取了异常超压的.峰值压力.

作 者:尤文斌 丁永红 王宇龙 YOU Wenbin DING Yonghong WANG Yulong  作者单位:尤文斌,丁永红,YOU Wenbin,DING Yonghong(中北大学仪器科学与动态测试教育部重点实验室,太原,030051)

王宇龙,WANG Yulong(中国兵器工业软件工程及评测中心,北京,100089)

刊 名:弹箭与制导学报  PKU英文刊名:JOURNAL OF PROJECTILES, ROCKETS, MISSILES AND GUIDANCE 年,卷(期): 29(6) 分类号:O384 关键词:冲击波   存储测试   CPLD   blast wave   stored testing and measuring   CPLD  

异常数据检测 篇3

关键词自动气象站;月报表;异常数据;预审;处理

中图分类号P4文献标识码A文章编号1673-9671-(2010)081-0124-01

随着自动气象站和地面测报业务系统软件的使用,地面气象数据文件审核方法发生了重大变化。南乐县气象局从2005年1日1日自动气象站投入业务运行以来,对全局测报质量的提高起到了一定的作用,我根据近几年在地面资料审核工作中积累的经验,对本台站出现的、疑误数据处理问题进行了归纳总结,并提出了相应的处理方法。

1异常数据与处理

1.1降水量上下连接值的输入

《地面气象观测数据文件和记录薄表格式》规定,降水量上下连接值由3段组成:即下月1日20—8时降水量和跨月连续降水(或无降水)开始日期和上跨连续降水量。有些站往往没有将下跨的降水量输入或是输错。如有微量降水0.0应输为“,,,,”,误为“0000”。月末最后一日,应该人工录入、校对降水量上下连接值,确保B文件数据正确。

1.2分钟降水量与天气现象矛盾的处理

由于OSSMO 2004软件没有把J文件降水量及降水起止时间与A文件天气现象的降水起止时间对比,所以J文件经常出现降水量与天气现象矛盾的现象,值班员和预审人员必须人工校对分钟降水量与降水的起止时间是否一致。

操作说明:J文件分钟降水量取自B文件,因此要求每日20时值班员要按照《地面测报业务软件操作手册》和系统“帮助”文件,对“小时、分钟降水量”进行校对,方能确保小时降水量合计值和分钟降水量累积值相一致,分钟降水量记录和降水起止时间相一致。

1.3日照时数全天缺测

应该在日出到日落的各小时都应该录入“—”,不能自己认为从有日照的小时开始输“—”。日出、日落时的日照时数如果大于日出、日落时计算的最大值,OSSM0 2004审核提示为错误,应该利用软件提供的计算功能,算出本站该年每日日出日落时间,并查找引起矛盾的原因,确保观测未记录的准确性。

1.4对自动气象站大风记录的开始与结束时间应该认真校对

1)大风数据文件为FJ.TXT,由于FJ文件中的数据是自动气象站采集监控软件(SAWSS)从每分钟采集的数据中判断写入的,若SAWSS因故关闭或采集不正常,都会造成FJ.txt记录不正常,所以FJ.txt文件不能作为大风天气现象的唯一依据。

2)若自动站日极大风速≥17.0m/s,FJ.txt中无大风记录,可从Z文件中的时极大风速尽可能的判断记录,或通过随OSSMO 2004一并下发的自动气象站数据质量控制软件中的“大风现象查询”功能获取。

3)部分厂家的自动站,有时会出现从采集器读取的每分钟数据中的出现时间与实际时间有偏差,若写入FJ.txt文件中的时间与正点写入Z文件中的出现时间有时相差1分钟,则以Z文件的极大风速时间为大风的开始时间。

2对机审疑误信息要认真判断分析

分别使用地面气象测报业务软件和自动气象站数据质量控制软件对A文件、J文件和Z文件进行审核。对软件提示的疑误信息要逐条进行排查处理。提示为“错误”的信息必须维护正确,提示为“可疑”的信息要根据气象要素进行人工确认。如海平面气压、水汽压、露点温度与反查计算值相差>0.3℃,有错误,就应该利用地面气象测报业务软件的工具菜单进行查算;连续变化的要素,相邻时次变化异常。如地温、草温传感器安装不当,就会造成变化异常。一般认为,深层地温(80、160、320cm)相邻时次变化超过0.3℃属于异常。值班人员要按照有关业务文件的要求,加强自动站数据监控和人工与自动对比观测,及时发现问题,解决问题。

3自动站定时记录缺测的处理方法

按照《地面观测规范》和技术问题综合解答(第一号)的规定,自动站记录缺测的处理方法具体有:

1)自动气象站定时观测记录缺测。要优先使用正点前后接近正点的10分钟记录代替。监控软件从3.0.8版本增加了全要素分钟数据文件即RTD文件的备份。可以使用“质量控制软件”查找正点前后接近正点的分钟数据,并用来代替自动站缺测的正点值。

2)人工观测和自动观测记录的同类观测记录可相互代替。

3)在没有任何数据可代替的情况下,采取内插法或缺测处理。内插法是级别最低的。内插法不适用于风向风速、降水量缺测记录的处理。

4)缺测和不完整记录的处理方法要进行备注。

5)分钟数据缺测寻找方法。为了最大限度地减少缺测记录,用自动气象站数据质量控制软件的“数据导入”功能,从RTD文件中恢复。具体方法是:利用质量控制软件中的文件菜单—打开—文件类型—逐分钟地面数据文件—找到相应时间的数据。

4文件的审核

4.1J文件的审核

J文件处理方法。根据有关技术文件,J文件的分钟记录缺测或异常,不再按内插处理。J文件的分钟数据必须是自动站原始采集数据,因此,60分记录用A文件记录代替时,不能用A文件中内插或人工站代替的正点记录代替。需注意:J文件风速是一分钟风速,不能用A文件定时风速代替。

4.2Y文件的审核

制作年报表的A文件月份选择。制作年报表必须在Y文件维护中同时加载当年1-12月的A、J文件和上年度7-12月的A文件,这样才能制作正确的Y文件。

5结束语

自动站报表数据文件内容多、数据量大,要求审核员必须熟练掌握《地面气象观测规范》中各项技术规定及数据文件格式规定,对机审提出的疑误信息进行判断和推敲,不断总结经验,提高自动站报表数据文件的审核质量。台站的报表预审宜采取初审-复审-终审的流程。通过上述流程的上报报表可最大限度地减少错情;要尽量为每个班次排主班、副班并明确责任。当主班在观测、操作、发报时副班应负责校对和配合,发现不正常记录要及时处理,

参考文献

[1]中国气象局监测网络司,地面气象测报业务系统软件操作手册[M].北京:气象出版社,2005,1(37).

[2]地面气象观测规范[M].北京:气象出版社,2003,11(107).

作者简介

异常数据检测 篇4

关键词:概要数据结构,金字塔时间模型,奇异熵,异常检测

0 引言

检测网络攻击和排除安全威胁事件,对于计算机网络的飞速发展具有重要的意义。计算机网络规模和速度的迅速增加,对网络异常检测算法提出了新的要求,即网络异常检测算法要在无保留状态或者少保留状态下对G比特级的海量网络业务量数据进行实时在线分析。

许多学者对此进行了相关研究,Krishnamurthy等人首次将sketch用于异常检测并提出一种启发式方法自动设置sketch的参数;Schweller等人采用IP地址分块hash和IP扰乱两种方法来解决sketch可溯源性的性能问题;Dewaele等人在sketch的基础上应用非高斯边缘分布的多时间尺度特性,可以多种攻击,包括检测低强度持续时间长的攻击和持续时间短的端口扫描攻击。

国内学者中,文献[1]设计了面向异常发现的网络流量概要数据结构和突发高频事件检测算法,并且提出了基于安全异常检测策略定制的预查询方法来进行多数据流的关联异常检测,但是并未制定明确的检测方法和标准,依赖于检测人员的知识和经验。

文献[2]的基于概要数据结构的网络异常检测方法采用EWMA模型预测每一周期的预测值,计算观测值与预测值之间的差异sketch,然后基于差异sketch建立网络流量变化参考。但是对于sketch数组的确定没有进行深入的研究。

针对上述问题,本文采用金字塔时间模型对高速网络数据流进行分析,并基于奇异熵提取概要数据结构。在此基础上统计一定周期内该数据结构的特征值变化趋势,计算出均值和梯度值,以及相应的报警区间。当告警出现时,该方法能分析出现异常的IP地址,有效地对网络进行异常检测。

1 网络异常检测方法

1.1 金字塔时间模型

本文采用金字塔时间模型对数据流进行描述。该模型将数据排列成金字塔状,既可以实现快速、单遍扫描整个数据流,又可以提取分析数据流的整体特征值。金字塔时间模型的基本元素是k个3维向量(aggi,addi,ti),本文中模型描述的数据流为骨干链路上的网络流,3维向量定义为元素为IP报文,其中aggi是特征值,定义为报文数目,addi是目的IP地址,ti为该IP报文到达的时间。这k个3维向量按时间点划分成logαT+1个互不相交的集合,其中T表示从数据流的起始时刻到系统当前时刻所耗费的时间。这logαT+1个互不相交的集合简称为层。

采用金字塔时间模型维护的聚集序列可以计算(tpast,tnow)时间窗口上的复杂聚集查询的聚集值。当保存的聚集值是COUNT或SUM,则时间窗口(tpast,tnow)上的聚集值近似为aggnowaggs。在制定界限值时,希望获得AVG的聚集值,则时间窗口(tpast,tnow)上的聚集值近似时间窗口(tpast,tnow)上的聚集查询的绝对误差为(aggnow-aggpast)-(aggnow-aggs)=aggs-aggpast。每一层维护的3维向量越多,则时间点就越多,那么时间窗口上的近似查询就越准确。如果内存最多能保存的3维向量的数目为S,则有(αl+1)×33<S。

1.2 Sketch数据结构

Sketch用来记录数据流的概要信息,包括hash计算和sketch数据结构两部分。

1.2.1 最小完美哈希函数

进行hash计算采用的最小完美哈希函数是根据中国古典的余数定理发展出来的演算法,它既能保证占用最少哈希地址数、完全无冲突,同时又能保证在数据增加或减少的时候不需要更换哈希函数。

在实际的最小完美哈希函数的构建过程中,首先需要为数据项目集I中的每一项Ii分配一个质数mi。要求对每个Ii,mi+1>mi。对这组质数显然有mi>i。则构建后的最小完美哈希函数为:

式中d(Ix)表示第一次Ix出现的位址-1。

需要先对子项目集进行分组,并确定第一次出现的位置。其中子项目{A}和{B}第一次出现位置为d(A)=1-1=0,而d(B)=4-1=3。

式中:Mi=m1,m2,…,mn;bi是使得mi能被Mibi-1整除的最小正整数。最小完美哈希函数算法流程图如图1所示。

1.2.2 sketch结构

sketch用一个二维数组S[H][X]进行存储。数组的每一行对应一个hash函数,一行中的所有列表示hash函数进行分类的桶。这个二维数组对应着一个数目相同的计数器数组C[H][X],记录着经过分析的数据流元素的特征值统计量。

从sketch构造的基本原理来看,关键的一步是如何确定二维数组的大小。如果选择的数组阶次过低,建立的sketch包含的信息不完整,不能对网络流量进行准确的反映。数组阶次过高,会增加计算的复杂程度,无法满足在线分析的要求。

数组阶次的确定一般采用试凑法或阈值法,这两种方法依赖使用者的经验,对有效数组阶次的选取缺乏依据,构造的sketch不理想。本文通过网络流量特征值的奇异熵确定有效数组阶次。特征值的奇异熵定义为:

其中:k为奇异熵阶次;ΔRi为阶次i处的奇异熵增量,可通过下式计算得到:

其中:对二维数组S进行奇异值分解得到S=UΛVH,λi是矩阵Λ的主对角线元素。

特征值的奇异熵是信息熵的一种改进形式,能够反映特征值包含信息量的多少。当特征值受到网络噪声干扰,特征值的奇异熵随着阶次升高一直增大。在较低阶次时,在特征值与噪声的共同作用下,奇异熵增长速度较快。当达到一定阶次后,奇异熵增长速度放缓。这时特征值的有效特征信息量已经趋于饱和,之后的增量是由于噪声所致。因此,选择奇异熵达到饱和阶次作为数组阶次,能够保留网络流量信息的同时去除噪声。

建立一个链表结构List来存储每个计数器的key,即每一个计数器对应一个key链表结构,用于网络异常检测过程中查找异常的IP地址。

2 网络异常检测流程

2.1 数据记录

数据记录的流程如图2所示。

(1)按照单遍扫描的方法,建立金字塔时间模型,并计算H个哈希函数值得到H个计数器以及相应的值;

(2)更新计数器和标识的值;

(3)根据奇异熵理论,建立3维的sketch;

(4)计算每个计算器的均值和梯度值:

其中K表示对数据流的观测次数;

(5)建立每个计数器值的置信区间,并设立报警阈值。

每个计数器值的置信区间和报警阈值作为sketch的特征值存储起来,并且根据数据的积累,随时进行更新。

2.2 网络异常检测

本文通过检测到达同一个目的IP地址的报文数目,来发现DDo S等报文数目有急剧变化的攻击行为,其检测流程如图3所示。

(1)对于一定周期的sketch进行分析,得到每个计数器的值。

(2)判断每个计数器的值是否超出均值,如果大于设置的阈值,则说明该计数器异常,并取出该异常计数器所对应的链表结构中存储的IP地址集合;如果未超出阈值,则进入下一步。

(3)判断每个计数器的梯度值是否超出阈值,如果大于设置的阈值,则说明该计数器异常,并取出该异常计数器所对应的链表结构中存储的IP地址集合。

(4)对于既超过均值又超过梯度值阈值的情况,则要进行IP地址集合的合并。

对得到的IP地址集合进行分析,得到受到攻击的主机。对于具体攻击类型的确定,则需要重点检测这些IP地址的报文,与事先已经建立好的脆弱性库进行对比得到。

3 算法性能测试

3.1 测试数据

采用本实验室所搭建的“××网络质量评估”测试平台,对某段骨干网络进行流量监测,时间为2010年8月20日9时到10时40分和2010年8月20日17时到18时40分,每10分钟为一个周期统计IP报文数值进行分析,实验时间为每次10个周期。

3.2 测试结果

计算该数据集的奇异熵,构建12×1014的sketch数据结构。

因为金字塔时间模型可以提取分析数据流的整体特征值,因此,将单独运用金字塔模型描述的网络运行情况与基于sketch的网络异常检测方法得到的结果进行对比。2010年8月20日9时到10时40分这段时间内网络正常运行,基于sketch的网络异常检测方法得到的各计算器的值与金字塔模型反映的网络运行情况保持一致,如图4所示。对两条曲线进行相关分析,得到相关系数为0.867,表明基于sketch的网络异常检测方法在网络正常运行的情况下与需要复杂计算的整体数据流保持一致。

基于sketch的异常检测方法的优点在于能够发现淹没在快速消逝的数据流中的攻击威胁。在整个周期内,通过金字塔时间模型得到的网络流量整体上变化平稳,看不出异常状况。而采用基于sketch的异常检测方法发现:在2010年8月20日17时40分到18时20分这段时间周期内,包括S(2,3)在内的15个计数器均值越过的警告线,且包括S(2,3)在内的26个计数器的梯度值也超出了置信区间,图5显示了S(2,3)计数器特征值和梯度值变化情况。这种突增反映了网络中的流量异常,对Key进行分析,即可得到疑似受到攻击的IP地址。在此基础上,对于报文信息和连接情况进一步分析,可以得到更加准确的攻击信息。

4 结论

本文基于奇异熵建立了能够反映网络运行情况的sketch,对按照金字塔时间模型分布的数据流进行分析,得到sketch特征值的均值和梯度值,完善了基于sketch的网络异常检测方法,该方法能够检测DDOS、扫描等多种攻击行为,并且能定位出可疑的IP地址,节省检测开支。通过与金字塔模型进行对比,验证了该方法在准确反映网络的实际运行情况的基础上,能够检测出被高速数据流淹没的攻击威胁。

参考文献

[1]杨平,王平.计算机研究与发展.各类参考文献的著录格式及示例.2004(1):88-89.http://www.cajcd.edc.cn/pub/wml.txt/980810-2.html.

异常数据检测 篇5

因为海况、仪器噪声、海水中浮游生物等因素存在,测深数据中含有大量的异常数据和噪声,由于数据量大,如何有效定位异常数据和噪声是目前国际上的.研究热点.本文详细介绍了手工交互式编辑和常用的几种自动编辑方法,并重点介绍了基于测点密度的图像滤波方法,阐述了多波束测深数据编辑软件的实现,对多波束测深数据的快速编辑有一定的参考意义.

作 者:阳凡林 郑作亚 郭金运 刘智敏 YANG Fan-lin ZHENG Zuo-ya GUO Jin-yun LIU Zhi-min 作者单位:阳凡林,郑作亚,郭金运,YANG Fan-lin,ZHENG Zuo-ya,GUO Jin-yun(海岛(礁)测绘技术国家测绘局重点实验室,山东,青岛,266510;山东科技大学测绘科学与工程学院,山东,青岛,266510)

刘智敏,LIU Zhi-min(山东科技大学测绘科学与工程学院,山东,青岛,266510)

异常数据检测 篇6

据了解,2016年2月,长安区监测站回迁至西安邮电大学南区动力楼楼顶时,时任西安市环保局长安区环境空气自动监测站站长李某,利用协助监测站搬迁、调试的机会,私自截留监测站钥匙并偷偷记下监测站监控电脑密码。随后一段时间,工作人员多次潜入长安区监测站内,利用棉纱堵塞采样器的方法,干扰监测站内环境空气质量自动监测系统的数据采集功能,造成该站自动监测数据多次出现异常,影响了国家环境空气质量自动监测系统正常运行。

知情人介绍说,本来空气采样器暴露在空中,探头通过吸入自然的空气进行监测,用棉纱堵塞采样器,就好比给采样器戴上了“口罩”。长安区监测站为全市两个国家直管监测子站之一,其监测数据国家环境监测总站会直接收集到,如果数据存在造假影響比较大。

其实,2015年4月,针对空气质量监测中存在的突出问题,环保部就决定用两年时间,开展全国空气质量监测数据专项检查。但即使在这种从中央到省、市严格要求、交叉检查的情况下,长安区监测站依然进行数据造假。据了解,目前涉案的李某等人,被羁押在西安市看守所。

点评:过去一些企业为了欺瞒监管,给污染处理设备和监测系统做手脚,制造出“漂亮数据”,如今就连环保部门也敢给空气采样器戴“口罩”,弄虚作假。显然,如此滤掉的不仅是污染的空气,还有环保监管的公信力。这样的监管部门该要好好反思一下,你们这样做,还能对得起你们的使命吗?还能对得起与你们一起生活在雾霾中的亲人吗?

异常数据检测 篇7

一、异常客户检测

客户关系管理即为吸引并保持有经济价值的客户,驱逐并消除缺乏经济价值的客户。识别异常客户,一方面可有效地驱逐和消除风险,另一方面可以避免将正常客户误判为异常客户,吸引并保持有经济价值潜力的客户。

目前,异常客户检测技术主要还是基于数据特征匹配的方法。目前存在两个缺点。首先,总结异常客户特征主要靠专家手工完成,耗费人力物力;其次,所需时间较长,错过最佳挽留时机,异常客户造成的危害就无法减少。

异常客户反映在数据上,就是异常数据。Hawkins给出了异常的本质性定义:异常是在数据集中与众不同的数据,使人怀疑这些数据并非随机偏差,而是产生于完全不同的机制;Knor和Ng给出了基于距离的异常定义:数据集S中的一个对象O,如果它满足下列性质:数据集S中至少有p*100%的对象与0的距离大于距离D,则对象O称为DB(p,D)-异常。

二、孤立点检测

发现异常数据,孤立点检测是个行之有效的方法。孤立点(outlier)是数据集中的小部分数据对象,这一小部分对象和数据中的一般行为或数据模型有着明显的不同。孤立点挖掘分为两个子问题:在给定的数据集中定义什么数据可以认为是不一致的;找到一个有效的方法来挖掘孤立点。

孤立点在某种尺度下与其他点不同或不一致。孤立点可能是由于度量或执行错误导致的。许多数据挖掘算法试图使孤立点的影响最小化,或者排除它们。然而,一个人的噪声可能是另一个人的信号。这样的点通常包含了一些重要的隐藏信息。例如,在欺诈探测中,孤立点可能预示着欺诈行为。

目前孤立点挖掘算法主要有四种:统计学方法、基于距离、基于偏离和基于密度的方法。

基于统计的方法主要应用于科研计算,这主要是因为这种方法必须事先知道数据的分布特征,

从Knorr和Ng开始开始研究采用无需任何参数的方法,并提出使用数据点到其最近邻居的距离和的方法作为异常的量度标准。虽然距离是一种发现孤立点的有效的无参数方法,但需要耗费时间来计算距离。

A.Arning和P.Raghavan提出了基于偏离的孤立点探测的线性方法,但基于偏离的方法中的序列异常的概念并没有得到普遍的认同。这是因为序列异常在概念上仍然有一定的缺陷,遗漏了不少的异常数据。

基于密度的方法只关注对象周围临近的密度(最近邻居数)。关于它周围的邻居具有高密度邻居的数据点不是孤立点,具有低密度邻居的数据对象可能是孤立点。

上文中介绍了当前各种孤立点检测算法面临的种种缺陷,并对其进行了比较,发现基于距离的孤立点检测方法在许多方面都优于其他方法,在思路上也是正确的。基于距离的方法与基于统计的方法相比,不需要用户拥有任何领域知识。与“序列异常”相比,在概念上更加直观。

三、基于距离的k-medoids聚类算法与遗传算法

本文将基于距离的k-medoids聚类算法与遗传算法相结合,既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,还可以加快遗传算法的收敛速度,节约时间成本。

k-medoids算法与k均值算法相似,但与k均值不同的是k-medoids算法不采用均值作为聚类中心,而是采用数据集中任意一个数据作为聚类中心,因此,可以很好地解决k均值对孤立点敏感的问题,极大地提高聚类的精度。但该方法同样受初始值影响很大,通常不能得到全局最优解。

遗传算法是一种建立在自然选择原理和自然遗传机制上的迭代式自适应概率性搜索方法,具有鲁棒性强、需要的领域知识少等优点,用于孤立点检测理论上是可行的。

本文提出的基于k-medoids算法和遗传算法结合的孤立点检测算法,继承了遗传算法的优点,在一定程度上克服了现有算法的弱点和不足。随机产生遗传算法的第一代并开始选择,然后在每代进化中,都用k-medoids算法对每个被选择的个体进行进一步的优化。也就是说,在每一代都要对所有被选中的个体计算以其为初始值的k-medoids算法的局部最优结果,并以这些局部最优结果替换掉原来的个体并继续进化,直到达到最大代数或者结果符合要求为止。

该算法的步骤将在以下部分详细介绍。

1. 对个体进行编码和初始种群的生成

本文采用实数编码。染色体中实数的数量代表需要聚类的数量。初始种群采用随机函数生成,形成一个初始种群矩阵,其中每一行代表一个个体,每一行中的每个元素代表一个聚类中心。矩阵的行数代表种群中个体的数目,列数代表需要聚类的数目。

2. 适应度函数的确定

本文采用均方差作为适应度函数,定义如下:

其中,E为所有数据对象与相应聚类中心的均方差之和,p为代表对象空间中的一个点,mi为聚类Ci的中心对象,n为Ci中点的个数。

3. 选择算子的实现

遗传算法使用选择运算(或称复制运算)来实现对群体中的个体进行优胜劣汰操作。本文采用锦标赛选择法。

4. 用k-medoids算法进行优化

用k-medoids算法对选择出来的个体进行优化,并用优化后的个体代替原来的个体。用k-medoids算法进行聚类一般只能得到局部最优解,但用其优化后的个体来代替原来的个体便可大大加速遗传算法的收敛速度,节约时间成本。

5. 交叉算子的实现

交叉运算是产生新个体的主要方法。交叉率一般取值0.4-0.9。单点交叉中,交叉点的范围为[1,Nvar-1],Nvar为个体变量数目,以该交叉点为分界相互交换变量。

6. 变异算子的实现

遗传算法中的变异运算是产生新个体的辅助方法,它是必不可少的一个运算步骤。变异率一般取值0.001-0.1。

四、实验分析

本文的数据来自美国加州大学Irvine分校的机器学习库(the UCI Irvine Machine Learning Repository),选择德国信用数据集为研究对象,该数据集包含20个属性,本研究截取前100条数据,采用k均值算法、k-medoids算法和本文研究的新算法分别对数据集进行了聚类分析,实验结果见表1 (本结果只显示包含孤立点的类,其中的数字代表数据对象的序号)。

从表可以看出,在聚类时k均值算法无法把孤立点分离出来,而k-medoids算法和本文所研究的算法都可以把孤立点分离出来。从衡量聚类效果的重要指标均方差值的大小来看,在存在孤立点的时候,k-medoids算法比k均值算法要好,而新算法显然优于前面两个算法。

五、结论

本文比较了四种孤立点检测方法,通过分析发现基于距离的孤立点检测方法在许多方面都优于其他方法,在思路上也是正确的。基于距离的k-medoids算法可有效检测孤立点,但容易陷入局部最优。将k-medoids算法与遗传算法相结合,既可以很好地解决局部最优的问题,也可以很好地解决孤立点的问题,还可以加快遗传算法的收敛速度,节约时间成本。应用该算法可以有效地检测孤立点,即商业银行的异常客户,对风险进行有效地预警。

参考文献

[1]Hawkins DM.Identification of Outliers.Chapman and Hall. London.1980

[2]蒙肖莲,商业银行客户识别与保持模型研究.博士论文,华中科技大学,2005

异常数据检测 篇8

目前, IPv6网络已经逐步走向实际商用, 正在快速普及和发展[1]。虽然IPv6网络在一定程度上改善了安全问题, 但是仍然存在脆弱性与技术漏洞, 新型攻击事件不断出现, 信息安全问题日益突出[2]。如何保证IPv6网络信息安全已经成为当前十分紧迫的任务。

入侵检测 (Intrusion Detection) 是用于检测任何损害或企图损害系统的保密性、完整性或可用性行为的一种网络主动防御的核心技术。从技术上, 入侵检测分为误用检测 (Misused Detection) 和异常检测 (Anomaly Detection) 。由于IPv6网络中传输的数据格式具有新特点, 网络中的数据流量以惊人的速度剧增, 传统基于特征的误用检测系统难以胜任IPv6网络环境, 无法准确、及时检测针对IPv6网络的攻击事件, 检测性能不高[3]。因此, 支持IPv6网络的入侵检测技术研究具有十分重要的理论指导意义和实际应用价值, 已经列入国家“十二五”规划下一代互联网信息安全专项中的一项支持重点, 成为当前我国信息安全领域研究的热点之一。

研究表明, 异常检测技术通用性强, 可以动态检测新型未知攻击[4]。为此, 本文根据异常数据包与正常数据包的差异显著特点, 采用异常检测技术, 借鉴数据挖掘的技术思路, 从IPv6网络数据中提取网络行为模式, 合理设置阈值, 保证入侵检测自适应性与准确性。

1、传统入侵检测的主要问题

入侵检测是继防火墙之后的第二道安全防线, 发挥着主动的防御作用。然而, IPv6网络不是对传统网络的简单升级, 网络中传输的数据报文有其自身的格式, 导致目前已有入侵检测技术未能适应IPv6网络高带宽环境, 难以有效分析报文内容, 已经暴露了以下主要问题。

1.1 不支持IPv6协议

由于IPv6网络引入了IPSec等一系列安全协议与技术, 传输的数据报文结构格式不同于IPv4协议, 传统基于IPv4协议的入侵检测系统不支持IPv6协议, 无法有效分析IPv6数据报文内容。IPv6协议本身支持加密和认证的特点, 也极大地增加了入侵检测系统监听网络数据内容的难度。因而, 支持IPv6协议是当前入侵检测系统亟需达到的首要目标。

1.2 难以检测未知的新型攻击

目前基于特征的误用检测通常根据攻击特征规则库进行入侵分析、判决, 而这个规则库是通过收集已知的攻击行为、系统脆弱性信息而提炼形成, 这对于检测新型的攻击就显得无能为力。因此, 入侵检测亟需引入一种通用的检测技术思路与机制, 及时检测IPv6网络环境中未知的新型攻击。

1.3 漏报和误报问题突出

IPv6网速是IPv4网速的1000倍以上, 网上传输的海量数据剧增。这种情况下, 入侵检测分析计算量非常庞大, 使传统入侵系统的数据处理和分析力不从心, 造成漏报率和误报率居高不下, 已经影响检测系统的准确性和有效性。显然, 降低漏报和误报是IPv6网络高带宽环境异常检测尤需解决性能瓶颈问题。

2、相关研究

入侵检测可以视为一个分类问题, 即对给定的审计数据进行分类:正常数据和异常数据。同时, 网络中异常数据包与正常数据包的差异较大, 正常数据包的数量远远多于异常数据包。

Co Iumbia University的Wenke Lee较早提出了将数据挖掘 (Data Mining) 技术应用到入侵检测领域中, 从海量的审计数据或数据流中, 发掘出事先未知并感兴趣的有用知识[5], 并将提取的知识表示为概念、规则、规律、模式等形式, 用这些知识去检测异常入侵和未知入侵。同时, 清华大学用数据挖掘方法建立协同入侵检测框架;胡华平教授提出了使用数据融合技术和数据挖掘技术的入侵检测和报警系统框架[6];胡敏等人对基于数据挖掘技术的入侵检测技术进行了探讨[7]。

以上, 国内外学者将数据挖掘技术应用于入侵检测做了大量工作, 取得了显著效果, 但是这些研究绝大部分都是基于IPv4协议, 相关技术不能完全满足IPv6网络传输的需求。为此, 本文对IPv6网络中基于数据挖掘的异常检测系统进行研究。

3、基于数据挖掘的IPv6异常检测

异常检测试图用定量方式描述可接受的行为特征, 以区分正常行为和潜在的入侵行为。异常检测的前提在于正常行为模式库的建立。数据挖掘本身是一项通用的知识发现技术, 其目的是要从海量数据中提取出我们所感兴趣的知识。由此基于数据挖掘的IPv6异常检测, 在假设网络中异常行为与正常行为有比较显著差别的前提下, 引入数据挖掘技术, 将IPv6网络数据集划分为不同的类别, 识别出正常和异常行为, 挖掘网络行为模式, 以此进行检测入侵。

基于数据挖掘的IPv6异常检测系统主要由四个部件组成:聚类分析器、数据采集器、预处理器、异常检测引擎和响应中心。异常检测工作过程分为两个阶段:网络正常模式库构建和异常检测。

3.1 网络正常模式库构建

异常检测的关键问题在于正常行为模式的提取与模式库的建立。正常行为模式库是异常检测分析引擎进行入侵判决的依据, 其模式提取的准确性与入侵检测判决结果息息相关。

如图1所示, 在网络正常行为模式库构建阶段, 根据数据挖掘的原理, 从已知的正常审计数据和入侵审计数据数据集中挑选有代表性、对入侵检测系统影响较大的属性 (源IP地址、目的IP地址、端口号等) , 提取特征或特征变换;然后, 标注数据子集, 产生一个健壮的聚类分析器, 据此按时间序列对剩余的数据分类, 区分正常和异常行为, 提取正常行为模式, 形成模式规则, 实时添加到网络正常行为模式库, 作为异常检测的判决依据。

3.2 异常检测

在异常检测阶段, 主要有以下几个步骤: (1) 数据采集器从高速地址翻译算法入手, 挖掘网卡的硬件性能, 快速采集IPv6网络数据, 包括系统、网络、用户活动的状态和行为, 这些数据是入侵检测的第一手资料。 (2) 预处理器根据预先设置的过滤规则, 过滤掉噪声数据, 剔除相关错误, 接着对数据进行二进制的日志格式归一化处理, 提炼重要的敏感数据。这样既不漏过重要的攻击事件, 也不出现大量冗余的无用记录, 使进入协议分析部件的数据得到有效精简, 从而在一定程度上减轻IPv6协议分析和入侵引擎的工作量。 (3) 聚类分析器对经过预处理的数据进行聚类分析, 自动提取网络当前行为模式, 并提交异常检测引擎。 (4) 异常检测引擎是整个异常测系统功能的核心, 在保证准确性的前提下, 高效性是衡量分析引擎性能的关键指标。通过引入相似度 (Simi Iarity) 概念, 计算网络正常行为模式和当前模式的相似度, 结合预先设定的阈值进行比较, 快速判定当前用户是否入侵, 一旦发现入侵, 马上报告响应中心, 由响应中心来决定应对措施。

4、实验结果与分析

为了测试异常检测系统的可行性和效率, 开发了基于IPv6异常检测的原型系统ADSv6 (Anomaly Detection System for IPv6, 简称ADSv6) , 进行仿真实验测试, 并与Snort 2.8.0入侵检测系统进行比较, 其检测结果如表1所示。入侵检测相关的 (下转第45页) 统计量定义如下:检测率为被检测出的入侵样本占入侵样本总数的百分比;误报率为正常样本被识别为入侵样本数目占正常样本总数的百分比。实验测试表明, 原型系统ADSv6能够有效地检测出各种IPv6攻击或异常行为, 检测率高于Snort系统, 而误报率明显更低。

5、结束语

保障IPv6网络信息安全已经成为当前十分紧迫的任务。基于数据采掘的异常检测方法优点是可适应处理大量数据的情况, 将数据挖掘技术应用于入侵检测系统已经成为了一个重要的研究方向。本文针对传统基于IPv4协议的入侵检测系统难以适应IPv6网络的问题, 在假设网络中异常行为与正常行为有比较显著差别的前提下, 借鉴数据挖掘方法, 构建IPv6网络异常检测原型系统, 支持IPv6协议, 自动挖掘网络行为模式, 保证异常检测的自适应性。实验结果表明, 原型系统适应IPv6环境, 可有效检测出各种攻击或异常行为, 有助提高入侵检测性能。

摘要:保障IPv6网络安全已经成为当前十分紧迫的任务。针对传统基于IPv4协议的入侵检测系统难以适应IPv6网络高带宽环境问题, 借鉴数据挖掘方法, 构建IPv6网络异常检测原型系统, 支持IPv6协议, 自动挖掘网络行为模式, 保证异常检测的自适应性。实验结果表明, 该原型系统基本适应IPv6环境, 可有效检测出各种攻击或异常行为。

关键词:IPv6网络,异常检测,数据挖掘

参考文献

[1]吴建平, 林嵩, 徐恪, 等.可演进的新一代互联网体系结构研究进展[J].计算机学报, 2012, 35 (6) :1094-1108.

[2]Jun C, Xiaowei C.Intrusion Detection System Research Based on Data Mining for IPv6[C]//Information Technology and Applications (IFITA) , 2010 International Forum on.IEEE, 2010, 1:384-388.

[3]纪祥敏, 陈秋妹, 景林.面向下一代互联网的异常检测模型研究[J].福建电脑, 2013 (1) :7-10.

[4]Altaher A, Ramadass S, Almomani A.Real time network anomaly detection using relative entropy[C]//High Capacity Optical Networks and Enabling Technologies (HONET) , 2011.IEEE, 2011:258-260.

[5]Lee W, Stolfo S J, Mok K W.A data mining framework for building intrusion detection models[C]//Security and Privacy, 1999.Proceedings of the 1999 IEEE Symposium on.IEEE, 1999:120-132.

[6]胡华平, 张怡, 陈海涛等, 面向大规模网络的入侵检测与预警系统研究[J].国防科技大学学报, 2003, 25 (1) , 21-25

异常数据检测 篇9

近年来,随着传感器测量技术、通信技术和计算机技术等在智能电网中的广泛使用,相量测量单元(PMU)、智能电表采集、数据采集与监控(SCADA)系统等产生了以指数级增长的数据,渐渐呈现出数据量巨大、速度快等大数据的特点,如何快速处理这些数据,是智能电网所面临的重大挑战[1,2,3]。

大数据技术在智能电网中的应用主要集中在海量数据的采集存储、分析挖掘、可视化等领域[4,5]。目前,大数据处理技术可以分为批处理与流处理两种模式。批处理系统具有先存储后计算、数据的准确性和全面性要求高等特点。流处理系统往往不要求结果绝对精确,而注重对动态产生的数据进行实时计算并及时反馈结果[6]。

Hadoop是当前最流行的大数据技术架构,包括Hadoop分布式文件系统(HDFS)、数据分析框架MapReduce、数据挖掘工具Mahout等,目前很多大数据处理都是基于Hadoop平台之上。Hadoop技术在智能电网中也已开始研究与应用,例如文献[7]结合Hadoop云计算技术,为智能电网状态监测信息的可靠处理提供了一种解决方案。文献[8]根据用户侧大数据特点,设计开发了基于Hadoop的负荷预测原型系统,并在此系统上用不同规模的数据集进行测试分析。文献[9]在基于Hadoop的云计算平台上利用数据挖掘算法对海量广域测量系统数据进行了高效处理。但是上述Hadoop的研究只是针对离线数据分析,而在流式数据的实时处理上,Hadoop响应速度慢,实时计算处理能力不足。

数据流处理在电力行业中的成果相对较少,大部分集中在数据流管理系统框架的设计上。例如,文献[10]提出新型的能量管理系统(EMS)数据流管理系统框架,弥补了现有关系型数据库管理系统在EMS实时应用中存在的缺陷,并建立了相应的数据流模型。针对电能质量参数的实时采集,文献[11]提出PQStream数据流管理系统来监测电能质量数据,并准备进行数据挖掘分析。文献[12,13]论述了滑动窗口技术、概要数据结构、近似技术等数据流技术在电力信息处理中的应用研究。

数据流处理的特殊性以及大数据处理的时效性等各种限制使得传统的实时处理技术已不能够满足需求,因此,大数据的流式处理成为了研究学者和工业界的关注热点。当前,流式数据处理的计算框架主要有Storm,Spark Streaming,Samza,并且在互联网行业得到了一定的应用,但在电力系统中研究很少并鲜有应用。

国内外在智能电网大数据技术研究和应用方面已有成效,但仍处于起步探索阶段。电网设备状态数据具有持续不断、数据量大、规模及顺序无法预知及时效性高等特点,形成了大规模数据流。而数据流的价值会随着时间的流逝而减少,如何快速地从数据流中发现异常数据,为设备的运行与维护提供重要依据具有重要意义,因此可以将大数据技术引入到设备异常检测中。目前在设备异常检测中应用的大数据技术有时间序列分析、马尔可夫模型、遗传规划算法、分类算法等[14],但这些研究处于探索阶段,尚未形成完善成熟的方法。

智能电网状态监测设备与电能计量等监测数据逐渐构成了大规模数据流,数据流具有实时性、易失性、无序性、无限性等特征,数据流的价值会随时间的流逝而减少。目前电网中针对流式数据的处理,主要集中在数据库环境中开展数据计算的流式化。本文给出一种智能电网大数据实时流处理框架,用流式计算系统处理海量数据,通过采集系统节点监听数据源变化并实时收集数据,利用消息订阅模式对数据进行缓冲与计算,满足状态监测异常检测与异常用电分析等业务应用对数据流快速分析的需要。流式数据的实时处理是一个连续计算的处理过程,本质上是一种连续微批处理技术,可以将批计算的处理窗口设置为小时级、分钟级以及秒级。以状态监测数据流的异常检测为例,在流式计算框架下实现滑动窗口处理拓扑,对时序流数据进行阈值判断,提高数据处理的实时性,为大数据处理技术在电网中应用提供了一种思路。

1 智能电网大数据流式处理分析

对智能电网信息的实时处理,数据流技术可以提供有效的支持,具有很重要的研究价值。针对PMU数据、SCADA系统测量值、电能质量数据等的处理,研究人员提出了相应的流管理系统[12]。随着智能电网自动化的建设,文献[13]利用数据流滑动窗口技术对实时数据库数据进行在线分析,并未给出具体的数据流系统实现方案。因此,本文为大规模数据流的快速处理提供一种新的思路。

根据智能电网数据流具有实时性、易失性、无序性等特征,利用大数据处理技术,基于流式计算系统设计框架如图1所示,主要包括数据采集、数据接入、流式计算、数据存储4个过程。此框架基于日志处理方式,首先由采集系统对数据源进行监听,然后把数据汇总转发给缓冲系统。缓冲系统为数据传输到计算系统起到缓冲作用,协调采集数据的速率和计算系统处理数据的速率。流式计算系统应具有高性能、低延迟等特点,使数据得到快速有效的处理。同时可以使用内存数据库来交换数据。各个过程分析如下。

1)数据采集。电网中流式数据主要来自智能电表、PMU以及各种传感器的采集,这些数据规模大,结构类型繁多,速度快。例如,为了准确获取用户各项不同用电设备的用电数据,电力公司安装了大量的智能电表,这些电表每隔5 min就会向电网发送实时用电信息。对流数据的实时采集,需要有采集速度快、可靠性高、能实时监听数据变化、对数据进行简单处理等特点。因此理想的采集系统应是一个分布式、可靠的、高可用的海量日志聚合的系统,可以从客户端监听接收数据并将其发送出去,节点故障时,日志文件被传送至其他节点而不会丢失,保证数据的完整性。

2)数据接入。考虑到采集数据的速度和数据处理的速度不一定同步等问题,需要对数据进行缓冲处理,并且要有较低的延迟性。为达到这种效果,可以采用分布式发布订阅系统,其中包括若干消息生产者以及消息订阅者。消息生产者用于收集数据,多个服务器进行缓冲,而消息订阅者(一些业务需要)可以对数据订阅。该缓冲有利于控制和优化数据流经系统的速度,也保证了数据的不丢失。

3)流式计算。流式计算与批量计算的不同,主要体现在实时性要求高、持续计算、数据产生速率不定等[15]。状态监测等产生的流式数据速率快,需要计算系统能实时计算,有足够的低延迟性,结果反馈也能保证时效性。同时,流式计算环境中大多数的流式数据是不被保存的,并且一般只使用一次、易丢失,这就要求计算系统有一定的容错能力。由于数据的产生是动态的,速率在前后时刻可能发生变化,因此计算系统要有良好的伸缩性,有效利用资源。然而数据元素受时间和环境的影响,可能导致数据流间或者内部顺序不一致,而且电网数据种类繁多,需要计算系统具有发现规律和数据分析能力。此外,这些流式数据是持续不断的,数据能得到及时有效的处理,并且稳定运行,需要故障恢复、负载均衡等功能的支持。

通过分析流式计算的特点,编程模型、系统架构、容错机制等都是流式计算系统设计应优化的技术。例如,系统架构可以是对称式架构或者主从式结构,当前典型的流式计算系统有Storm,Spark Streaming,S4等,其中Storm是主从式结构,而S4是对称式结构。在实时场景中,为了提高数据交换效率,可以引入内存数据库。并且选择的计算系统不能实现负载均衡,可引入分布式应用程序协调服务器,即尽量保证流式计算有很好的处理效果。

4)数据输出/存储。根据电网中监测数据异常检测、异常用电分析、用电行为分析、短期负荷预测等业务不同的需求,对结果进行不同方式的存储处理。

2 基于流计算的状态监测异常检测

2.1 状态监测的异常检测

在电网设备实际运行中会受到自然环境、内部绝缘老化、过电压等异常事件影响,而这些可能导致设备故障的发生[16,17],所以对设备的状态监测数据进行异常检测具有重要意义。

状态监测的异常检测,就是从设备运行状态的数据中找出不符合正常数据模式的数据。通常设备运行状态数据的异常包括两种[18]:(1)缺失值和噪声点;(2)设备运行状态受到干扰而导致的数据异常。目前异常检测主要使用基于聚类、统计、密度、距离等方法。

状态监测系统包括变压器油色谱、局部放电、绝缘子泄漏电流、线路覆冰、电站图像监测等,电力设备类型多样,数量多。对于一个省级的电网公司,按照10 000套终端,按每套终端每5min采集一次数据计算,每天产生数据总量约430GB,每年产生数据接近150TB[19]。状态监测数据采集频率短、规模大,以数据流的形式传输,需要很高的处理效率,快速地检测出异常。时序数据的处理需要连续的计算,可以看做是连续批处理,而滑动窗口机制主要是控制接收的数据量,适应流数据的更新。简单的阈值判断是设备实际运行维护中异常检测的常用技术,虽然设备信息利用率和状态评价正确率都偏低,并且难以检测出故障类别,但是可以再从其中挖掘潜在的故障。

本文将在流式计算系统Storm中,通过滑动窗口设计技巧,利用阈值判断方法进行智能电网状态监测时序流数据的异常检测。

2.2 流式计算框架Storm

Storm是开源的分布式实时计算系统,被称作是“实时的Hadoop”。Storm是比较典型的流式计算框架,主要应用于实时分析、持续计算、在线机器学习等领域[20]。Storm集群的工作原理如图2所示。

Storm是主从式系统架构,有一个主控节点和多个工作节点。主控节点负责在集群里面分发代码,分配计算任务给机器,并且监控集群状态。而工作节点负责监听主控节点分配给其机器中的若干个工作进程,根据需要启动或关闭。工作进程由若干个执行器组成,每个执行器对应一个或者多个任务。为了保障Storm系统的稳定性,引入Zookeeper来协调主控节点和工作节点间的任务调度与分配。

Storm的计算任务封装在任务拓扑(Topology)里,由不同的数据源组件(Spout)和逻辑处理组件(Bolt)构成有向无环图。数据源组件负责从外部读取数据,逻辑处理组件负责数据处理。智能电网中状态监测数据呈现出流式数据的特征,将其抽象为Storm拓扑中的连续元组。数据源组件从外部接口(数据文件形式等)不断读取数据,然后将数据装配为元组发射给对应的数据逻辑处理组件。数据逻辑处理组件对接收到的监测数据执行过滤、聚合、计算、函数等操作,也可以将操作得到的新元组发送给下一个数据逻辑处理组件。当任务拓扑提交后,Storm集群会一直对监测数据进行处理。

2.3 时间滑动窗口原理

滑动窗口一般分为两种类型:基于计数和基于时间。状态监测的异常检测目的就是处理最新到达的数据,快速地找出不正常模式的数据,对监测数据的实时处理是一个连续计算的过程,其实质可以分解为短小的批处理作业,而时间滑动窗口模型能够很好地满足这样的应用需求。

定义1:时间基本窗口。给定时刻点t和跨度d,在[t-d,t]时间段内到达的数据流组成一个时间基本窗口W,记Wj为数据流的第j个时间基本窗口,时间跨度为Wj.span=d。

定义2:时间滑动窗口。如图3所示,一个连续的时间相关基本窗口序列构成一个时间相关滑动窗口WS,记WSi=Wi-n+j,Wi-n+j+1,…,Wi为第i个基本窗口到达后的时间相关滑动窗口。其中,n表示一个时间滑动窗口容纳基本窗口的数目。时间跨度为WSi.span=nd。

虽然状态监测数据在现场中采集周期多为分钟级甚至小时级,但本文处理的是网省公司下多个厂站中多个设备在不同时间点的所有监测信息数据,这样网省侧汇集的状态监测数据构成了大数据流,包括变压器的局部放电、油中溶解气体、绕组光纤测温等,开关设备的局部放电、操作机构特性与储能电机工作状态等,容性设备的介质损耗因数、电容量与泄漏电流等,避雷器的全电流、三次谐波、容性电流与阻性电流等。

现每秒统计最近1min监测数据的异常值出现次数,为降低状态监测大量数据流在滑动窗口中的内存占用,设计滑动窗口处理模型,如图4所示。

滑动窗口模型的滑动距离为1s,滑动窗口大小为1min,则滑动窗口分为60个基本时间窗口。属性集代表各个变电站状态监测量的集合。各个基本窗口并行判断数据的异常值,仅缓存各基本窗口阈值判断后的60个结果元组,而不需要对原窗口中的每个元组进行逐一缓存。经基本窗口计算后合并统计最近60个基本窗口异常值出现的次数,即每隔1s输出最近1min中数据异常值出现次数。

2.4 Storm框架下滑动窗口的拓扑实现

滑动窗口的拓扑实现包括任务拓扑的编程和集群处理。在提交集群处理前,需要利用Storm并行编程模型设计滑动窗口的结构,可以使用各种编程语言来开发,各组件通过数据流连通形成任务实体,在规定时间内分批处理流式数据,而保证数据的连续计算。以状态监测数据流的阈值判断为例,其实现过程如图5所示。

在Storm中,数据源组件Spout和逻辑处理组件Bolt通过数据流构成拓扑Topology。根据业务需求,本文设计如下:Spout组件是整个框架的数据源头,用户通过实现IRichSpout接口接入数据。DataSpout监测数据源信息元组流,设置喷嘴组件的执行器并发数,将数据读入Storm里面。RollingBolt(m,d)定义滑动窗口时间为m,单位滑动距离为d,窗格数为m/d的滑动窗口接收数据源所发射的数据元组。SplitBolt按照所需字段将窗格发射的数据元组字段进行分割,然后将所需字段消息发送给ThresholdBolt,该Bolt负责将相应的字段进行阈值判断,处理结束后把结果进行存储。这样可以实现快速统计异常值出现的次数。

Storm框架本身不负责计算结果的保存,可以定义不同的逻辑处理组件Bolt来完成计算结果的多样化存储,可以直接写入数据文件,可以持久化存储到数据库,也可以通过Redis等缓存实现结果的快速存储,也可以保存到云平台HDFS中等。

3 实验与测试

3.1 实验测试环境

本文选用8台配置相同的PC机搭建Storm分布式集群环境,每台PC机上部署一个Centos虚拟机,其中一台同时运行主控节点Nimbus守护进程和工作节点Supervisor守护进程,其余7台只运行Supervisor,并在虚拟机上配置相应的软件环境。在分布式集群无其他任务运行的条件下进行实验,分析运行结果。

3.2 实验测试数据

以某省电网变电站中110kV变压器为例,取2014年4月、5月、6月的监测数据为实验数据。实验中在主控节点上模拟实时数据流,滑动窗口设置为1min,基本时间窗口为1s,在不同节点数、并行度等情况下,对数据流元组进行滑动窗口处理的测试。本文在实验测试中直接采用空值判断方法对缺失值进行检测,并按照状态监测设备标准规范来检测状态监测值是否在阈值范围内。对于没有阈值标准的状态监测数据,超过正常值的1.2倍时认为存在异常。

3.3 Storm集群与单机对比测试

Storm集群工作节点数为8,设置数据源组件和逻辑处理组件的个数分别为6和7。由于实验数据有限,人为地不断增加任务执行的数据量,分别在集群和单机下对测试数据进行异常检测。对比实验结果如图6所示。

从图6可以看出,当数据规模增大到一定程度后,随着数据量的增加,基于Storm集群的处理效率要优于单机,实时性较高。当数据量为1万条时,算法在单机运行环境下执行时间短,是由于在Storm集群中任务分发等额外的工作部署需要消耗部分时间。

数据量较少时,数据异常检测准确度在Storm集群和单机两种情况下基本保持一致。当数据量达到一定的规模后,Storm集群体现了较好的优势,异常检测准确度高于单机的测试结果。Storm集群通过分布式集群将大数据进行切分,部署在不同的计算节点上,提高了数据并行计算的能力,能够对大数据流进行高效处理。

3.4 不同集群节点数的元组吞吐量测试

通过改变集群节点的个数,对滑动窗口元组吞吐量进行测试。设置4个全局工作进程Worker及Spout组件和Bolt组件的个数分别为6和7。保持工作进程数以及Spout组件和Bolt组件不变,设置集群节点数分别为2,5,8,分析滑动窗口处理计算输出的结果,统计元组吞吐量。实验的结果如表1所示。

从表1可以看出,节点数一定的情况下,数据规模的变化基本不影响集群的吞吐量。吞吐量在一定的范围内波动是由于机器的配置、集群扩展使任务的分发、数据的传输耗费部分系统资源,使拓扑模型处理数据有一定的不稳定性。随着集群节点数的增加,Storm集群的数据处理能力逐渐显现,吞吐量呈现出上升趋势。说明Storm流式计算框架有良好的可扩展性,当集群的节点数改变,能够很好地提高流数据的处理能力。

3.5 不同工作进程数的元组吞吐量测试

在集群节点数一定的条件下,改变全局工作进程数,进行滑动窗口的处理测试。实验中保持拓扑使用的数据源组件和逻辑处理组件的个数不变,分别向8个节点的Storm集群提交4组数据任务(10万条、50万条、100万条、500万条),然后分别统计输入不同的数据量时,其工作进程个数分别为2,3,5,8时得到的元组吞吐量。实验中可以使用Storm rebalance命令来改变工作进程的数量,而不需要重新提交拓扑任务。实验结果如表2所示。

从表2可以看出,随着工作进程数目的增多,状态监测数据处理的吞吐量呈先上升后下降趋势,这表明通过增加工作进程的数量能够在一定程度上提高Storm的并行处理能力。如监测数据量为100万条,在工作进程数为2时,滑动窗口的吞吐量为0.86万条/s,当工作进程数增大到3时,吞吐量提高到1.01万条/s,然而工作进程数再增大到5和8时,吞吐量反而降低。这主要是因为工作进程的数量与节点数量有关,有一定的制约性。

3.6 不同组件数的元组吞吐量测试

在集群节点以及工作进程数不变的情况下,改变数据源组件和逻辑处理组件的个数,即改变执行器线程的并行度,对元组吞吐量进行测试。分2种情况对数据源组件(Spout)和逻辑处理组件(Bolt)进行设置。第1种情况:数据源组件个数保持不变,增加逻辑处理组件,设置为(5,5),(5,6),(5,7)这3组。第2种情况:逻辑处理组件个数不变,增加数据源组件,设置为(5,5),(6,5),(7,5)这3组,对这6组拓扑进行实例测试,统计不同情况下的元组吞吐量。实验结果如表3所示。

从表3可以看出:改变逻辑处理组件和数据源组件并发数,吞吐量表现出不同的特性。在表3的1,2,3组比较中,数据源组件个数固定,随着逻辑处理组件的增加,可以加速状态监测数据元组的处理,提高了集群数据处理的吞吐量。在表3的1,4,5组比较中,逻辑组件个数固定,当数据源组件个数超过逻辑处理组件时,逻辑处理组件处理数据的速率小于数据源组件的发射速率,导致待处理的状态监测数据堆积,反而降低了集群数据处理的吞吐量。因此,合理设置组件的并发数可以更有效地处理数据。

4 结语

结合大数据处理技术,针对智能电网流式数据处理进行了研究,提出了一种实时流处理框架,并从数据的实时采集、数据缓冲、流计算等方面来进行详细分析。以状态监测数据流为研究对象,在流式计算Storm平台上实现了滑动窗口计算方法。利用历史数据模拟数据流形式进行异常检测实验,结果说明了Storm集群环境下滑动窗口处理延时较低,验证了该方法的可行性和有效性。在不同的Storm集群节点数以及进程并行度等情况下进行测试,表明了合理设置工作节点数以及任务拓扑的并行度,可以优化Storm性能,增加了流计算的吞吐量,进而提高了大规模监测数据流的实时处理性。

异常数据检测 篇10

关键词:电力机车,运行数据,聚类

引言

随着我国交通运输的迅猛发展, 电力机车的功率也越来越大[1]。大功率电力机车具有复杂的结构和恶劣的工作条件, 很容易发生故障。一旦发生故障, 就会影响电力机车运行的稳定性, 甚至由此引发交通事故, 造成重大的经济损失和人员伤亡[2]。因此, 及时发现故障就显得十分必要。事实上, 故障在发生前往往会产生一些异常的运行数据, 而对这些异常的运行数据进行准确检测, 往往能够提前判断和排除故障, 从而消除电力机车的安全隐患, 使电力机车能够安全稳定地运行。因此, 如何对大功率电力机车的异常运行数据进行检测, 已经成为当前交通领域中的一个热点研究课题。

现阶段, 主要的异常运行数据的检测方法包括基于小波变换的异常运行数据检测方法、基于卡尔曼滤波的异常运行数据检测方法和基于数据挖掘的异常运行数据检测方法等。然而, 上述方法主要是依据测量数据进行检测的, 当异常运行数据的类型比较复杂时, 不但要增加检测手段, 同时还要增加运算量和检测时间, 从而降低异常运行数据的检测效率, 难以满足电力机车对异常运行数据进行实时性检测的要求。为此, 本文提出一种基于聚类-规则的大功率电力机车异常运行数据的检测方法。

1 异常运行数据的分类

在进行大功率电力机车异常运行数据的检测中, 为了实现异常运行数据的准确检测, 首先需要获得准确的规则。

具体的方法如下:设置电力机车的运行数据样本为{X1, X2, …XN}, 其中为运行数据样本的数目。为了避免数据样本的较大值和较小值的影响, 需要对样本进行归一化处理, 使数据样本的值在[0, 1]的范围内。在电力机车的异常运行数据中, 由于每一个异常运行数据都可能是一个类型, 因此将每一个运行数据都作为一个潜在的聚类中心, 则对于运行数据, 其成为聚类中心的概率能够用下述公式进行计算。

其中, 为欧氏距离, ra为非负数, 表示其邻域为ra。由此可见, 若一个运行数据存在若干相邻的数据, 则该运行数据成为聚类中心的概率较大。ra以外的运行数据对该运行数据的影响较少。Di表示Xi与其他运行数据之间的欧氏距离。根据上述公式的计算能够获得每一个运行数据成为聚类中心的概率, 并选择概率最大的运行数据作为一个聚类中心。设置Y1为异常运行数据的第一个类型, 其概率为D1, 则利用下述公式能够重新计算其余运行数据成为聚类中心的概率:

其中, Yk表示第k个聚类中心, 即第k个异常数据的类型, Dk为其概率。对运行数据的概率设置一个阀值, 当上述迭代过程小于此阀值时, 一般设置Dk<0.15D1, 即停止聚类, 从而获得异常运行数据的所有类型, 完成异常运行数据的分类。

2 异常运行数据的检测

2.1 构建异常运行数据的检测规则库

通过上节获得的聚类中心的集合, 能够产生用于异常运行数据检测的规则。设置聚类中心Ck对应的异常运行数据的类型为c1, 则能够得到下述检测规则:

其中, , 为运行数据向量的维度, yk为对应的模糊规则, ak为一个常数。

检测规则的触发强度能够用下述公式进行计算:

其中, k=1, 2, ..., n, ra为聚类的半径。因此, 上a述规则能够写成下述形式:

其中, xij为第j个运行数据的特征, Akj为第k条检测规则的第j个数据特征的隶属函数, 可选用高斯函数作为隶属函数, 公式为:

其中, ckj为聚类中心是ck的第j个运行数据, σkj为聚类中心的扩展度, uk为检测规则的触发强度。按照相同的方法, 可以对其余的聚类中心建立对应的检测规则, 从而构建用于异常运行数据检测的规则库。构建好异常运行数据检测的规则库后, 能够得到该规则库下的异常运行数据的检测模型:

其中, yk表示第k条检测规则的检测结果, N为检测规则的总数目。

2.2 对异常运行数据检测规则进行优化

能够根据上述方法, 能够获得异常运行数据的检测模型。但是, 为了获得更准确的检测结果, 还需要对检测模型中的参数ak、σkj和cki进行优化。此处, 用BP神经网络对模型中的参数、和进行优化, 从而获得更精确的检测结果。设置输入的异常运行数据为Xi, 若其类型为c1, 则检测模型的理想输出为1;反之, 检测模型的理想输出为0。异常运行数据检测模型的检测误差由两部分构成, 第一部分为ei1, 计算公式为:

其中, μc1, max为检测模型输出结果为类型对应对检测规则的最大触发强度, μc1→max为检测模型输出结果不为c1类型对应对检测规则的最大触发强度。

从上述公式能够得知, 当某一条检测规则能正确检测出异常运行数据且其触发强度为1, 剩余检测规则不能检测异常运行数据且触发强度为0时, 检测模型的检测误差ei1=0。

异常运行数据检测模型的检测误差的第二部分ei2的计算公式为:

其中, y为检测模型的检测结果。同样可知, 当检测模型的输出为1时, 其误差ei2=0。

对于全部的电力机车运行数据样本来说, 它们的训练误差能够用下述公式进行计算:

其中, nc为训练样本的总数目。

检测模型中的参数ak、σkj和cki的学习方法如下:

大功率电力机车异常运行数据检测的具体步骤:

(1) 对电力机车的运行数据进行聚类, 获得异常运行数据的聚类中心;

(2) 根据聚类中心建立检测异常运行数据的规则;

(3) 根据检测规则构建异常运行数据的检测模型;

(4) 利用BP算法对异常运行数据检测模型中的参数进行优化;

(5) 通过优化后的模型进行异常运行数据的检测。

3 结束语

本文提出了一种基于聚类-规则的大功率电力机车异常运行数据的检测方法, 能够为大功率电力机车安全、稳定的运行提供可靠保障。

参考文献

[1]许丽.交直电力机车运行状态实时监视与故障诊断系统的总体设计及应用现状[J].湖南铁路科技职业技术学院学报, 2015, (2) :64-68.

异常数据检测 篇11

用电监察工作中需要工作人员不断注意用户用电情况的监督监察工作,通过有效的工作方式来检测用户用电量的数据是否异常,并采取有效的解决方式来良好的完成用电监察工作。只有这样才能有效的确保我国电力事业的发展,提高我国用户用电稳定性,让我国的国民经济获得良好的发展环境。在我国电力事业不断发展的如今,用电监察工作随着电力事业的深入也在不断扩大优势,将传统电力事业的长处尽可能的发挥,不断解决电力事业的当前问题,但是在用电监察方面依旧存在着许多难以解决的问题,电力事业的专业人才没有得到很好的利用,管理手段不够科学,这些问题都需要相关工作人员不断努力解决,只有这样才能有效促进用电监察工作的效率,解决用电监察中用户电量数据异常问题,保障我国用户用电的环境。

一、用电监察中用户电量数据异常的原因分析

1、违章用电问题

在我国目前的用电监察工作中,工作人员发现违章用电的情况仍然在加剧,这种违章用电的情况如果不能有效解决,就会成为用电监察工作中安全用电的主要阻碍问题。随着我国经济的不断发展,社会中的诸多企业都有了很大的改善,我国的科学技术水平也随着时代的进步不断提高,在这样的时代背景下,违章用电情况没有得到有效解决,反而呈现多样化的发展趋势,并且违章用电还在一定程度上更新了技术层面的内容。这样的紧张局势对于用电监察工作来说是非常危险的,目前我国的监察队伍整体处于专业化水平不足的现状,在处理用户违章用电的过程中所采取的监察方法不够科学,正因如此,违章用电的情况一直不能从根本上解决,对于我国目前许多隐蔽性比较高的违章用电情况完全找不到合适的解决办法。这样的情况就导致我国的违章用电情况仍在不断加剧,为我国电力企业的发展埋下了隐患,也在一定程度上造成了电力资源的浪费,使得电力事业的发展在无形之中产生了巨大的经济损失。

2、用电监察工作不够完善

我国目前的用电检查工作仍处于发展状态中,安全用电检查的工作不完善是急需要进行研究克服的一个内容。我国目前的用电监察工作应该有效的进行内容形式上的区分,简单可以分为定期的监察工作和专项的监察工作环节,在用电监察工作不同的监察环节中所要涉及的工作重点是不同的。首先依照上文提到的两个内容来进行简要的分析:对于定期的监察工作来说,其主要的工作内容包括对用电客户的基本信息监察工作、对用电企业的设备运行安全状况监察工作、对用电企业的操作电源系统完整性的监察工作以及对电力企业中电气设备的安全性监察等等,而专项的监察工作主要包括营业类的普查工作、用电企业经营的监察工作、用电企业工程的监察工作、用户用电事故性的监察工作和保电监察等环节。但是,我国目前的用电监察工作对于这两方面的分工仍处于起步阶段,不能有针对性地展开这两方面的监察工作,在工作中也缺乏重点。

二、用电监察中用户电量数据异常的改进方式

1、对用电监察工作岗位的规范化

为了促进我国电力企业切实的做好用电监察工作,必须对用电监察工作的岗位进行严格的筛选和要求,并且不断加强岗位的标准。只有不断得亏强调用电监察工作岗位的责任,把握好用电监察工作岗位的权限,才能有效做好用电监察工作。在对用电监察工作岗位进行规范化时,首先要依照我国传统的用电监察工作制度建立起更加完善的工作负责制度,尽可能的将用电监察工作责任细化到个人,并不断完善与岗位要求相对应的奖罚机制,这样就能使得每一位用电监察工作人员可以将自身的工作责任明确,在工作的过程中切实做好自身的本职工作。其次,还要严格贯彻落实我国对用电监察管理工作制定的相关办法规定,并且还要严格按照此规定进行对用电监察工作的完善。在实际的用电监察工作中要根据用电监察工作的周期和工作突发性情况进行针对性地工作。我国的用电监察工作要在实践过程中依法有序进行,对所管辖区域内的客户用电安全和电工进网作业状况等进行有效的监督。

2、加强用电监察工作的技术性确保用户用电数据异常状况的减少

用电监察工作是在我国的电力企业发展中有着非常重要的地位,也是电能营销过程中至关重要的一个工作环节,而我国要想从根本上提高用电监察工作,减少用户用电数据异常状况的发生,就必须提高工作团队的技术性。从我国目前的用户用电数据异常情况来看,违章用电和窃电情况仍旧频繁发生,而且违章用电和窃电行为本身的技术性还在不断提高,这样不仅加大了我国用电监察工作人员的工作量,还提升了工作难度。为了提高我国用电监察的工作效率和工作力度,就需要增强工作团队本身的技术性,以此为发展的根基。并且不断提升用电监察工作的科学性和能动性,对用户用电情况进行良好有效的监察,不断解决工作中存在的问题,对尚未发生的问题进行及时有效的预防。最后,还要在此基础上进一步加强用电监察工作的整体队伍建设程度,依照国际水平不断提高用电监察工作队伍的专业化水平,使得每一位用电监察技术工作人员都有实际的工作能力,从根本上提高用电监察工作的效率,保证我国用电监察工作的质量。

三、总结

我国用户用电数据异常状况一直存在,而且得不到有效的解决,希望通过本文可以对广大工作人员有所帮助,保障我国用电情况的安全,通过不断发展用电监察工作的技术性和科学性来提高用电监察工作的质量。在用电监察工作的过程中提升安全用电的基础,强化用电监察工作团队的技术根本,只有不断增强我国用电监察工作的根本水平,才能有效确保我国电力事业的良好发展。

参考文献

[1]朱雪,刘光明.探讨用电监察在经营管理中的作用[J].电源技术应用.2014(02).

[2]盛守才.在当前形势下做好用电监察工作的思考[J].企业改革与管理.2014(04).

[3]刘国庆,田言林.浅谈用电监察在经营管理中的作用[J].电子制作.2014(01).

[4]廖仁章.用电检查工作中的反窃电重大意义[J].中小企业管理与科技(下旬刊).2010(09).

[5]张照国,张斌.用电监察中的反窃电研究[J].电子制作.2014(02).

异常数据检测 篇12

目前关于使用孤立点分析进行入侵检测的研究还比较少。已有基于孤立点检测的入侵检测方法基本上都采用离线训练与在线检测相结合的方式,而互联网上入侵、异常等对时间是非常敏感的,需要进行联机的分析,因此,这些检测模型不能及对数据流中的动态变化特性做出及时反应。

1 时间序列分析

网络通信中的自相似性表现在较长一段时间内,单位时间网络流量的统计特性不会有所变化,但如果有入侵的行为发生,则可以通过监测网络流量,发现在某一时间点上的流量会发生突变,统计数据会出现孤立点,从而发现网络中出现的入侵前兆。

网络数据流由报头信息和包负载组成。报头包含了大量的信息,如到达时间、数据报长度、负载长度、协议、源地址端口、位标志等等[3]。这些信息从某种程度上可以反映网络状态的变化特征。

假设从网络监测到的IP数据流P,数据按照其属性(实际上就是时间)的顺序前来,由连续的数据项a1,a2…组成,按下标的递增顺序依次到达,每个数据项ai等于p[i],按照时间i增加的顺序出现,称此数据流为时间序列数据流,如图1,可以表述为:P=(,a1,…,an)。

2 数据流多窗口模型

数据流具有高速、动态变化特性,不易被保存,而我们的目的是实时的对不断到达的数据流的元素连续查询其是否属于孤立点,需要在容量有限的内存中进行动态孤立点挖掘,这就需要采用滑动窗口技术。对数据流的数据挖掘通常基于某种特定的时间区间(称为窗口)进行,常用的窗口模型有:界标窗口模型、滑动窗口模型和倾斜时间框架模型。由于很多应用要求在不同的时间粒度层上进行分析和挖掘。比如,用户通常对细粒度层上的当前变化感兴趣,而在粗粒度层上对长期变化感兴趣。

为此,我们可以构建不同层次的时间粒度窗口,最近的数据在最细的粒度层上记录和运算,较远的数据在较粗的粒度层上记录和运算。这样,我们不仅可以满足需求,且不会占用太多的存储空间。更重要的是,我们可以构建适合应用需要和当前存储条件的粒度层,这样的时间维模型被称为“倾斜时间框架”。[4]这种模型可以把数据流快照按照不同的时间粒度存储在不同的时间粒度层上,每一个时间粒度层所获得的数据流快照被划分为多个固定长度的段,每个段形成一个窗口,当内存中的窗口数达到一定数目时,就将这多个窗口合并,形成一个概要层次的窗口。随着数据流的流入,就形成了一个由多个窗口组成的层次结构,实际上是构造了一个概要层次多窗口结构。此时,每个窗口相当于数据流上两个预先定义的时间戳之间的一个数据快照。

假设T为自数据流开始以来监测的时间,快照分类到不同的框架编号中,编号从0变化到max_frame,每个快照用时间戳来表示,快照t插入快照框架表的规则如下:

2)每个窗口都设有一个max_capacity。

3)当把t插入到框架frame_noi的同时,把新的数据快照和已有的数据快照进行比较,如果其特征没有发生明显的变化,则不插入到框架frame_noi,,如果窗口已经达到max_capacity,则删除框架中最老的快照,并插入新的快照。

对按时间粒度存储在不同的时间粒度层的数据流快照窗口(Snapshot Windows,SW)进行分段[5,6],那么,随着数据流连续的到达,SW中包含数据流上最近两个数据流的快照,称其中正在接收流数据的数据窗口为活动数据快照滑动窗口(Active Data SnapshotWindow,ADSW),而在ADSW之前的已经填满流数据的数据窗口为历史数据快照窗口(HistoricalData Snapshot Window,HDSW)。我们设定两个窗口和,为参照窗口,为比较窗口。如果则称此时刻t数据流S发生长度为W的变化趋势。其中,dist是距离函数,ζ是阈值。如图2所示。

这是一种建立在滑动窗口模型的基础之上的滑动多窗口,比单一滑动窗口模型更为灵活,不需要积累太多过时的数据样例,积累的数据样例也达到了自动分类的目的。

3 基于数据流的自动调整孤立点动态增量挖掘[7,8,9,10]

以往的孤立点发现算法可以分为基于统计、基于距离、基于偏差的算法等。Breuning和Kriegel提出了基于密度的局部异常孤立点发现算法。他们给每个对象赋予了一个局部异常因子LOF(Local outlierFactor),作为异常程度的度量,然后选取前ζ个异常因子最大的对象为孤立点,这样检测的结果更贴近有关孤立点的定义。

3.1 静态局部异常孤立点检测算法描述

对任意的自然数k,定义对象p的k-距离(k-distance(p)),为p和某个对象o之间的距离,这里的o满足两个条件:1)至少存在k个对象o’∈D{p},使得d(p,o’)≤d(p,o);2)至多存在k-1个对象o’∈D{p},使得d(p,o’)

1)给定对象p的k-距离k-distance(p),p的k-距离邻域包含所有与p的距离不超过k-distance(p)的对象。

2)对象p相对于对象o的可达距离给定自然数k,对象p相对于对象o的可达距离为

也就是o的k-距离和对象p以及对象o的距离中较大的那个。

3)对象p的局部异常因子(Local outlier factor)

此式有两个参数:一是MinPts,即最小的对象数;另一个是表明一种度量,结合两者为基于密度的算法的阈值ζ。

上述第(3)式是计算出数据对象p的第k距离邻域内的所有数据对象的局部区域密度的平均值,该数值反映了在数据对象p的第k距离范围之内的空间点的平均分布密度,即表示的是对象p的异常程度。如果p本身由于是偏离程度较大的数据对象,则其lrd数值则较小,最终导致LOF数值较大就认为它更可能异常;反之,若数据对象p处于某一个群组之中,则其第k距离邻域内的数据对象与其属于同一个群组的可能性较大,所得出的平均分布密度与该数据对象的lrd数值差异不会很大,其LOF数值接近于1。这就成功地把不同群组之间的密度差异所带来的影响进行分离。

从上述可以看出,LOF算法中ζ阈值是做常量处理的。然而在网络入侵检测领域,很多数据流中的孤立点分布是不稳定的,大多数时候没有或者极少发生入侵行为,然而在某些个别时间段入侵行为数目又会明显增多,如果保持ζ值不变就不能真实体现孤立点分布状况的变化,必然会影响孤立点的检测效果。本文针对此问题提出了面向数据流的根据滑动窗口中孤立点数目的变化而自动调整ζ阈值的局部异常孤立点动态挖掘算法ζ-Lof。

其基本思想是:由于LOF本身的特性,对象的更新只会影响个别对象的LOF值,采用增量算法只对受影响的对象的LOF值更新而不需要重新计算所有对象的LOF值,依据对象的密度近邻序列和其k-距离邻域的平均密度近邻序列,计算出受影响对象的增量异常因子(LOF)来表征对象的孤立程度,从而提高增量孤立点发现的效果。该算法达到两个目标:检测结果和静态算法一样;算法的时间复杂度低于静态算法。

3.2 算法实现

由于采取当前滑动窗口LOF标准差与窗口中其他数据点分别加入滑动窗口时的LOF标准差的均值进行比较,ζ阈值调整函数能很好的体现滑动窗口中孤立点数目的变化,并且随着窗口朝前滑动,具有很好的自适应和容错能力。由于ζ阈值在给定的初始阈值上下波动调整,便于用户通过设定初始阈值来控制总体的检测率和误报率。

我们用SW表示滑动窗口里的数据集,设置三个参数,knnupdatelist:存放p点的修改后改变k-近邻序列;lrdupdatevalue:lrd值,lofupdatelist:LOF值发生变化的点。另外设一个长度为N的数组stdlist,用来存储每次更新数据点以后当前滑动窗口内的数据点的LOF值的标准差。以下是算法的具体描述:

输入:滑动窗口大小N;滑动窗口里的数据集SW;新插入的对象p(参考窗口的原始数据点);ζ的初始阈值ζinitial;正整数k;

输出:判断p点修改以后的(即新加入的那条数据点)pnew是否为孤立点;

Updateknn(sw,p,pnew,knnupdatelist);负责窗口朝前滑动一次,找出由于p点修改与k-近邻发生变化的点(包括p点),更新这些点的k-近邻和k-距离;

第一步:计算插入p以后的值pnew;

第二步:计算p与SW中对象之间的距离,得到p的k-距离、k-距离邻域、k-密度

第三步:确定SW中k-密度发生变化的对象的数据集knupdatelist

第四步:if K-distance(o)≥p-distance,then对象o的k-密度在对象p加入后将发生变化,则更新数据集knupdatelist的K-密度。

Updatelrd(sw,knnupdatelist,lrdupdatevalue);负责寻找除了k-近邻发生变化的点外的其他lrd发生变化的点,也就是与k-近邻发生变化的点互为k-近邻的那些点,并对所有lrd值发生变化的点进行lrd值更新;

Updatelof(sw,lrdupdatevalue,lofupdatevalue):判断LOF值发生变化的对象,形成lofupdatelist列表。负责找到LOF值发生变化的点,即所有lrd值发生变化的点以及这些点的反向k-近邻,并对其LOF值进行更新;

Outlierquery(pnew,stdlist,ζinitial);负责根据ζ阈值调整函数得出当前ζ的动态调整值,对滑动窗口内的数据点的LOF值进行降序排序,如果p点序位小于等于此时ζ阈值的动态调整值,则认为这条更新后的数据点为孤立点。

4 实验及结果分析

采用对KDD CUP1999数据流的进行异常检测实验。我们采用总数为6000的子集来模拟连续到达的数据流,如表1所示。从中,我们可以看出入侵行为的次数在数据流中的分布是不稳定的。

由于动态孤立点检测算法开始时需要一次静态孤立点检测结果为基础,我们首先将数据集中的前一千条记录做静态LOF算法检测,然后将数据集中的连接记录依次输入到检测引擎中来模拟连续到达的数据流:每输入一个连接记录,窗口朝前滑动一次并进行一次ζ-LOF算法检测。由于我们的目的是对最新加入的每一条数据记录连续查询是否属于孤立点,因此ζ-LOF算法根据ζ阈值调整函数得出ζ的动态调整值ζ(pnew),然后对滑动窗口内数据点的LOF值进行降序排序,如果pnew的序位m小于等于此时ζ阈值的动态调整值ζ(pnew),则认为这条新加入的连接记录pnew为入侵行为。

根据实验结果表明数据流中正常数据点的LOF值等于或略大于1,位于最底部,而孤立点的LOF值要远高于正常点,并且孤立点数目在数据流的分布中是不稳定的。

摘要:该文针对目前孤立点异常的检测方法只适应于静态环境,对于数据流的动态特性的反应不够及时,提出了一种基于时间序列流数据特点的动态自适应孤立点挖掘方法。该方法在基于密度的局部异常检测算法LOF的基础上,利用多窗口滑动技术分析数据流的局部异常来判断时间序列数据流中的孤立点,通过改进局部异常因子的计算方法,用户能通过设定初始阈值来控制总体的检测率和误报率。实验表明该方法的有效性。

关键词:时间序列数据流,局部异常孤立点,自适应,动态调整

参考文献

[1]罗敏,阴晓光,张焕国,等.基于孤立点检测的入侵检测方法研究[J].计算机工程与应用,2007,43(13).

[2]李更生.基于时间序列分析的Web服务器DDoS攻击检测[J].计算机工程与应用,2007,43(7).

[3]罗华,胡光岷,姚兴苗.基于网络全局流量异常特征的DDoS攻击检测[J].计算机应用,2007(2).

[4]单世民,邓贵仕,何英昊.数据流中孤立点识别方法[J].计算机工程,2007(8).

[5]李循律,何钦铭.基于密度的异常检测算法在入侵检测系统中的应用[J],江南大学学报:自然科学版,2006(5).

[6]黄光球,彭绪友,靳峰.基于密度的异常挖掘方法研究与应用[J].微电子学与计算机,2005(3).

[7]翁小清,沈钧毅.基于滑动窗口的多变量时间序列异常数据的挖掘[J].计算机工程,2010(6).

[8]陈辉,邓庆山,杨兵.挖掘数据流最近时间窗口内频繁模式[J].小型微型计算机系统,2009(12).

[9]胡彩平,秦小麟.一种基于密度的局部离群点检测算法DLOF[J].计算机研究与发展,2010(7).

上一篇:急诊输液流程下一篇:配置和应用