计算机专业毕业论文BP神经网络的异常点检测应用可行性研究.docx
《计算机专业毕业论文BP神经网络的异常点检测应用可行性研究.docx》由会员分享,可在线阅读,更多相关《计算机专业毕业论文BP神经网络的异常点检测应用可行性研究.docx(39页珍藏版)》请在冰豆网上搜索。
计算机专业毕业论文BP神经网络的异常点检测应用可行性研究
摘要
异常点数据是指数据集中与众不同数据。
这部分数据的量小,但是对于我们的日常生产生活的影响极大。
因此,异常点检测被广泛应用于网络入侵检测,金融保险,天气预报以及新药研制等领域。
相对于大量的正常数据挖掘而言,异常点检测被称作小模式数据挖掘。
BP算法是一种常用的数据挖掘算法。
但是BP算法进行实际数据的异常点数据挖掘过程中存在:
实际数据的维数较高,存在冗余特征的干扰,以及在高维特征下,数据量不充分的问题。
因此,本文分析BP神经网络处理各种数据的情况,并得到以下结果。
(1)BP神经网络能够较好的分离特征单一的仿真数据;但是
(2)特征相似性较大的数据集,难以分离判断;(3)正常数据不充分或者不具有代表性,因此正常数据类学习不充分,从而导致异常无法判断。
针对以上问题,本文提出了以下的改进措施:
(1)BP算法前进行特征约简(映射)从中选取有益于异常检测的特征
(2)多神经网络融合,不同神经网络识别不同的特征,相互取长补短,融合后得到最终的结果。
关键字:
异常,BP,异常点检测,神经网络
Abstract
Outlierdataisthedatasetdifferentdata.Thispartofthesmallamountofdata,butforourdailyproductionandlifeofgreat.Therefore,theanomalydetectioniswidelyusedinnetworkintrusiondetection,finance,insurance,weather,andnewdrugdevelopmentandotherfields.Relativetothelargenumberofnormaldatamining,theanomalydetectionmodeliscalleddataminingsmall.BPalgorithmisacommonlyuseddataminingalgorithm.ButtheBPalgorithmtorealdataoutliersexistinthedataminingprocess:
thehigherthedimensionoftheactualdata,thereareredundantfeaturesoftheinterference,andhigh-dimensionalfeature,theissueofinadequatedata.Therefore,thispaperanalyzesavarietyofBPneuralnetworkprocessingofdata,andtogetthefollowingresults.
(1)BPneuralnetworkcanbetterseparationcharacteristicsofasinglesimulationdata;but
(2)thecharacteristicsofsimilarlargedatasets,separationisdifficulttojudge;(3)normaldataisnotsufficientornotrepresentative,sothenormaldataclasslearningisnotsufficient,leadingtoabnormalcannotjudge.Tosolvetheaboveproblem,thispaperproposesthefollowingimprovements:
(1)BPalgorithmbeforefeaturereduction(map)benefitfromanomalydetectionfeaturesselected
(2)integrationofmultipleneuralnetworks,differentneuralnetworktorecognizethedifferentcharacteristicsofeacheachother,thefinalfusionresult.
KeyWords:
Outliers-Data,BP,Algorithms,NeuralNetworks
目录
1引言1
1.1背景1
1.2传统已有异常点算法介绍1
1.2.1基于统计学的异常点检测算法1
1.2.2基于距离的异常点检测算法2
1.2.3基于密度的算法3
1.2.4基于偏差的异常点检测5
1.2.5基于聚类的异常点检测算法6
2基于属性特征在异常点检测中的研究7
3BP神经网络介绍9
3.1模型简介9
3.2计算各层节点输出9
3.3修正权值10
4异常检测中BP神经网络的设计13
4.1可微阈值单元13
4.2单个BP网络结构设计13
4.3BP神经网络学习过程的基本步骤14
5实验研究17
5.1研究使用的数据库介绍17
5.2训练方案一实验:
把bp神经网络相似性代替距离算法相似度量17
5.3训练方案二实验:
用单个神经网络对训练数据库整体特性进行学习18
5.4训练方案三实验:
多神经网络各种形式训练及其决策19
5.4.1实验设计思路19
5.4.2实验方案及步骤20
5.4.3实验分析22
5.4.4实验失败原因分析23
5.5BP调参实验25
5.5.1对实验一调整隐层实验25
5.5.2对实验二调整隐层实验26
5.5.3对实验三调整隐层实验29
5.6数据仿真实验31
5.6.1实验思路31
5.6.2实验步骤31
5.6.3实验结果32
5.6.4结果分析33
5.7实验整体分析33
总结与展望35
致谢39
1引言
1.1背景
异常点(离群点或者孤立点)检测是数据挖掘中一个重要方面,Hawkins[1]最早给出了异常点的本质定义:
异常点是数据集中与众不同地数据,以至于使人怀疑这些数据并非随机偏差,而是产生与完全不同的机制。
异常点可能由于度量或执行错误产生,也可能是由于固有数据可变性的结果。
例如,一个公司首席执行官的工资自然远远高于公司其他雇员的工资,成为一个异常点。
许多数据挖掘算法试图减少异常点的对挖掘结果的影响,或者在挖掘过程中排除异常点。
然而异常点可能隐藏着重要的信息,也许比一般的数据更有价值。
因此人们开始逐渐研究异常点挖掘算法。
目前异常点检测已经开始用于信用卡欺诈、网络入侵检测以及金融申请和交易欺诈等领域[2],近年来异常点检测已成为数据挖掘研究中的一个热点问题。
传统数据挖掘主要有以下几类:
基于统计的方法,基于距离的方法,基于偏移方法,基于聚类方法,基于密度方法。
本文从特征与异常检测的关系出发进行研究。
BP神经网络适用于储存和描述这种复杂的关系。
但是异常检测过程,通常数据的位数较高,在高维特征存在冗余特征干扰,以及高维特征下数据不充分的问题,因此,本文研究了BP神经网络应用于不同情况。
1.2传统已有异常点算法介绍
1.2.1基于统计学的异常点检测算法
早期的异常点检测算法大多数是基于统计学实现的,通常可以分为基于分布的检测算法和基于深度的检测算法两类。
前者一般通过先构造一个标准概率分布来拟合数据集,然后根据概率分布来确定异常点,例如Rosner提出的单样本多个异常检测算法ESD算法,和Yamnishi等使用混合高斯模型的异常点检测算法。
此类算法估计多维分布的概率模型的难度较大,且准确性低。
基于深度方法主要以计算几何为基础,通过计算不同层的K-D凸包将外层的对象判定为异常点。
但当数据集较大,此类方法在维数上的伸缩性不好。
基于统计的异常点检测方法易于理解,实现方便,但此方法检测出来的异常点很可能被不同的分布模型检测出来,解释异常点意义时经常发生多义性。
其次,此方法在很大程度上依赖于待挖掘的数据集是否满足某种概率分布模型、模型的参数、异常点的数目等对基于统计的方法都有非常重要的意义,而确定这些参数通常比较困难;另外,此方法大多适合于挖掘单变量的数值型数据,然而许多数据挖掘问题要求在多维空间中发现异常点,目前几乎没有多元的不一致检验,当没有特定的检验时,或观察到的分布不能恰当地用任何标准的分布建模时,此类方法不能确保所有的异常点被发现。
1.2.2基于距离的异常点检测算法
基于距离的异常点检测算法的基本思想是把数据点看作空间中的点,异常点被定义为与大多数数据距离较远的点。
通常这类异常被描述为
。
当且仅当数据集
中至少有
个数据点与
点的距离大于
时,数据对象
点称为异常点。
这类方法与基于密度的检测算法有很大的相似之处,不需要事先知道数据集的分布模型,对于任意分布模型均有效。
基于距离方法最早是由Knorr和Ng在1998年提出的。
他们用DB(p,d)来表示数据集中的异常点,采用不同的参数
与
,
可以表示所有的异常点。
与此定义相应的算法有三种,它们是基于索引(Index-based)的算法,嵌套循环(Nest-Loop,NL)算法,基于单元或划分(cell-based)的算法等。
基于索引的方法依赖多维索引结构(R-trees,X-trees,KD-tress等)的性能。
随着维数的增加,所有的索引结构的性能迅速下降,使得算法性能不佳。
NL算法可以避免构建索引结构,减少了算法的
次数。
以上两方法的算法时间复杂度为
,当遇到大量数据集时它们还有待改进。
基于单元的方法是把数据集划分为单元,逐个单元的检测,而非逐个对象的检测。
它的时间复杂度为
,其中
取决于单元的个数和维数
。
Knorr和Ng通过试验证明,当
时此算法优于NL算法。
相对前两者,基于单元的算法无论是在数据量还是在维数增加时,性能都是最好的。
此算法需要将数据空间分隔成彼此独立的单元结构,经过多次选择来判断离群数据。
对于参数的每个变化都需要调整单元结构,因此会影响了算法的结果。
后来,Rastogi和Ramaswamy提出了一个新的基于距离的异常点定义,即基于距离的第
最近邻(k-thNearestNeighbor)异常点挖掘方法。
给定
维空间中包含
个点的数据集
、参数
和
(自然数),
表示点
和它的第
最近邻的距离。
如果满足
的点q不超过n-1个,即
,那么称
为
异常点。
如果对数据对象根据它们的
距离进行排序,那么前n个点就被看作异常点。
他们用聚类算法首先对数据集进行聚类,然后在类中发现异常点。
相对于
异常点挖掘,异常点挖掘方法人为干预的因素要小一些。
但它也有自身缺陷,就是要计算数据集中所有点的
,这显然影响到算法的效率。
对低维空间的数据此方法优于索引算法和NL算法,但对于高维数据此算法性能不高。
Bay和Schwabacher在沿用Rastogi和Ramaswamy对于异常定义的基础上,提出了一种基于随机抽样的检测方法,它通过随机抽样的方法,减少了寻找k近邻的范围,在试验数据上获得了几乎线性的计算复杂度。
随着人们对基于距离的方法的不断研究,一些新的、较好的算法也不断的涌现。
代表性的算法有:
陆声链等提出一个判断异常点的新定义,并设计基于抽样近似检测算法。
使得算法性能有所提高;另外,徐雪松等利用聚类算法与第k个最近邻的原理提出了基于距离的再聚类的异常点算法,它克服一些基于距离算法的缺点,并取得较好的试验结果。
与基于统计的方法相比,它有以下几个优点:
则可找出数据集中的异常点。
(1)在理论上可以处理任意维任意类型的数据,这就克服了基于统计方法仅能检测单个属性的缺点。
(2)不必对数据集的相关信息(数据服从哪种统计分布模型,数据类型特点等)足够了解。
实际上在给出了距离的度量,并对数据进行预处理后。
1.2.3基于密度的算法
基于密度方法是在基于距离的方法上改进而来。
基于密度的异常观点比基于距离的异常观点更贴近Hawkins的异常定义,因此能够检测出基于距离异常算法所不能识别的局部异常。
局部异常观点摒弃了以前所有的异常定义中非此即彼的绝对异常观念,更加符合现实生活的中的应用。
所谓密度是基于任意一点和P点距离小于给定半径R的邻域空间内的数据点的个数计算得到的。
一般的对密度的定义是点到其量近邻的平均距离,平均距离小则密度小。
基于密度的异常点检测,就是探测局部密度,通过不同的密度估计策略来检测异常点。
代表性算法主要有以下几种。
(1)Brito等提出相互k近邻图(Mutualk—NearestNeighbor,简称MkNN)算法,其主要思想是对每个连通子图进行检测,如果包含多个结点就组成一个簇,如果仅有一个结点,那么该结点就是异常点。
该算法针对数据点的分布对各种特殊形状都有效,但算法执行效率不高。
(2)VilleHautamaki等提出两种基于密度的异常点检测算法,第一种算法思路为在kNN图中,若顶点u成为其它点的k近邻的次数少于给定阈值T时就被认为是异常点,另一种算法则是先对所有顶点的平均k近邻距离进行排序,然后将平均k近邻距离大于T点顶点视为异常点。
(3)Papadimitriou定义了多粒度偏离系数(Multi—GranularityDeviationFactor,简称MDEF),该算法将多粒度偏离系数是所在邻域的标准多粒度偏离系数的3倍的点判定为异常点,然而标准多粒度偏离系数的计算量大,对算法的可行性有一定的限制。
(4)DongmeiRen等采用相对密度系数(Rela—tiveDensityFactor,简称RDF),即P点的密度相对该点的邻域密度的比值作为孤立程度的度量方法,其基本思路是首先基于RDF对位于簇中心的数据点进行剪枝,然后仅仅在剩下的较小的数据集中进行异常点检测。
该方法降低了数据集的大小,提高了算法效率,但是在剪枝过程中对于特殊分布的数据集就有可能将异常点剪掉,算法的准确性受到限制。
(5)Breuning提出了局部异常的概念及相应异常检测方法(DBOM算法),即数据集中的每个对象的异常程度用局部异常因子LOF来衡量。
也就是说是否是异常点不仅仅取决于它与周围数据的距离大小,而且与邻域内的密度情况有关。
一个对象领域内的密度可以用包含固定结点个数的域半径指定半径领域中包含的结点数来描述。
这样就不会像DB(p,d)异常点那样遗漏一部分异常点。
LOF算法充分体现了“局部”的概念,每个点都给出了一个离群程度,离群程度最强的那个几个点被标记为异常点。
文献有关发面对LOF进行推广:
一是由原来的一个邻域的变化为两个(计算密度领域和比较密度领域);二是剪除非异常对象来减小计算代价;因此,使用算法比传统的LOF算法有所提高。
在现有的计算局部异常因子(LOF)算法中,把具有很高LOF值的对象作为异常点。
计算LOF要耗费很大的计算量,针对此问题malikAgyemang提出了修改算法,即局部稀疏系数(LSC)算法。
这种方法主要是引入局部稀疏系数(LSC)这一概念,根据每个对象的LSC值按从大到小的顺序排列整个数据集并把前n个对象作为异常点。
但是,此方法在实际应用中计算量亦是不小,效率有待提高。
另外,岳峰等利用反向K近邻(RKNN)这个概念提出了一个异常点检测算法(ODRKNN),在综合数据集和正式数据集上的实验结构表明,该算法能有效地检测出异常点,且算法效率高于典型的基于密度的异常点检测算法LOF和LSC的效率。
1.2.4基于偏差的异常点检测
基于偏差的异常点检测不使用统计检验或者基于距离的度量来识别异常对象。
相反,它通过检查一组对象的主要特征来识别异常点。
背离这种描述的对象认为是异常点。
因此,在该方法中,属于偏差通常用于指异常点。
主要有两种技术:
第一种顺序地比较集合中的对象,叫顺序异常技术(sequentialexceptiontechnique);第二种采用OLAP数据立方体方法识别大型多维数据中的异常区域。
(1)序列异常技术:
Aming和Argrawal提出一种序列异常(sequentialexception)的概念。
这个算法复杂度与数据集大小呈线性关系,有优异的计算性能。
但是并没有得到普遍的认同,这是因为序列异常在概念上有一定的缺陷,它对异常点存在的假设太过理想化,对现实复杂数据效果不太好。
(2)OLAP数据立方体技术:
在大规模的多维数据中采用数据立方体来确定反常区域.如果一个立方体的单元值显著地不同于根据统计模型得到的值,该单元被认为是一个异常。
此方法是发现驱动探索的一种形式。
此方法由于搜索空间很大,人工探测非常困难。
第一种概念有缺陷,遗漏了不少异常点,时间复杂度与数据集大小成线性关系,适用性不高。
第二种搜索空间大,人工探测困难,效率不高,只适用多维数据。
1.2.5基于聚类的异常点检测算法
在聚类算法中,异常点检测仅仅是聚类的副产品。
聚类算法发展方向是优化聚类过程,而不是提高对异常点检测的能力,异常点检测和聚类是两个相对立的过程,聚类是把属于统一类的数据点聚集在一起,归为一类,而异常点检测是把和大多数数据点相异的点挖掘出来。
Su等人首先提出基于聚类的异常点检测算法,聚集的较小簇被认为是异常点,但这中方法忽略了小聚集簇和大聚集簇之间的距离,当一个小聚集簇和一个大聚集簇非常接近的时候,小聚集簇中的这些点更可能是大聚集簇的边界点而不是异常点。
模糊k均值聚类算法(FCM)常用于异常点检测,该算法动态地分配权重给每一个数据点,权重表示该数据点和数据集中心之间的距离,通过各点的权重来判断异常点。
此类算法没有先验知识指导如何确定聚类中心,只能是随机选取,优化搜索空间较大,算法的复杂度较大。
HongyiZhang等引为了提高模糊核聚类算法的运行效率,提出了新的模糊核聚类算法,该算法用先验知识对参数初始化。
取代了用聚类中心初始化,改进了聚类的目标函数,降低了算法的时间复杂度,但该算法没有提到如何选取核函数,对于算法模糊性的控制不好撑握。
2基于属性特征在异常点检测中的研究
传统算法大都是通过数据在空间地特性来判断检测异常点。
本文的方向是从特征出发研究。
传统算法从整个数据集合在空间中分布地特性出发研究,比如距离的从整个数据集空间距离进行研究,同样密度的按数据集空间密度研究,聚类也是按数据集空间特性。
而本文直接从已知部分数据维度的特征着手,即是直接从每一组数据的特征来研究。
对于单属性特征的情况,根据数据重要性调整特征(即维度)权值,并根据数据重要性调整。
假设数据特征表示在每个属性上面,独立没有组合属性表现特征地情况下,每一组数据属性对应权值数据乘积和,表示这个数据在这组数据中全局中所占的重要性。
例如检测是否是糖尿病人的数据库,三十岁以下这个年龄维度上病人较少,然而五十岁后这个维度病人比例就多了。
映射到维度为三十岁以下这个维度地病人比较少,映射到维度为十岁以上较多。
这样我们可以添加一个权值与年龄这一项数据乘积,这个乘积必须使权值与当前数据乘积出来的数据成正比,表示年龄增长能够体现在这组数据中的重要性。
以便全局统筹决策较容易。
设X为一组数据集合,可使
趋向某个数值,表示这组数据某个总体特征。
异常或者非异常,可以通过趋向某个数值表示特征异常,另一个方向数值表示非异常。
有时候数据组合的重要性是体现在几个数据地组合里面,既可能体现在几个属性上面,比如说一组数组(A,B,C),可能AB组合特征不显示异常,然而ABC组合就显示异常,这些组合是不定地。
所有在属性权值之上需要一组对属性不同组合特征的权值调整。
图2.1样例图示
如图2.1,某个异常点可能异常特征是属性1,可能是属性1、属性2地组合,对于同个数据库不同点具有组合不确定性。
由于特征地不可确定性,数值不确定,组合不确定。
我们可以采用神经网络自学习调整权值。
同时根据已知数据训练修改这些权值,使其具有识别某种组合特征的能力。
使其自学习特征,自动控制调整权值及权值组合。
人工神经网络作为一种新型信息处理系统,在信息处理方面,具有如下显著的特点:
(1)输入-输出映射能力。
人工神经网络具有自学习能力,通过学习,能够根据网络期望输出和网络实际输出之差来调整神经元间连接权值和阈值,直至使实际输出与期望输出之间的误差减小到满意的程度,这样就实现了输入到输出的映射。
人工神经网络的输入-输出映射能力对于预测有特别重要的意义。
(2)非线性特性。
人工神经网络具有很强的非线性,这种非线性分散在每个神经元,通过传递函数实现。
利用神经网络的非线性特性,可解决药学研究及实验数据处理过程中大量的非线性问题。
(3)高度并行性。
人工神经网络是由许多相同的简单处理单元并联组合而成,具有高度并行性特性,使其对特定任务的计算变得很快,对信息的处理能力与效果惊人,因此提供了一种解决高层复杂问题的能力和方法。
(4)良好的容错性与联想记忆功能。
人工神经网络通过自身的网络结构能够实现对信息的记忆,而所记忆的信息是存储在神经元之间的权值中。
从单个权值中看不出所存储的信息内容,因而是分布式的存储方式,这使得网络具有良好的容错性,既能进行模式信息处理工作,又能进行模式识别工作。
因为这些特点,神经网络广泛应用在聚类分析、模式识别、信号处理、系统辨识、优化计算、预测控制等领域。
根据神经网络记忆分类地特性,本文设想通过这些特性学习出能够辨别异常点非异常点数据的神经网络,主要研究其可行性。
3BP神经网络介绍
3.1模型简介
人工神经网络理论是80年代中后期迅速发展起来的一项前沿研究领域,其应用已渗透到各个领域。
BP神经网络模型是人工神经网络的重要模型之一,应用尤为广泛。
BP算法主要包括两个过程,一是由学习样本、网络权值
从输入层→隐含层→输出层逐次算出各层节点的输出;二是反过来由计算输出与实际输出偏差构出的误差函数E(
),用梯度下降法调节网络权值,即
(3.1)
使误差
减小。
设输入层节点数为n,隐含层节点数为r,输出层节点数为m,隐含层与输入层之间的权值矩阵为
,隐含层节点阀值为
,输出层与隐含层之间权值矩阵为
,输出层节点阀值为
,并设有N个学习样本
其中
为第P个学习样本的输入向量,
为其实际输出向量。
其中
,下文中如不指明则相同。
3.2计算各层节点输出
输入层节点,取其输出
与输入
相同,即
隐含层节点输入
,输出
分别为:
(3.2)
若令
则有:
,
。
输出层节点输入
,输出
分别为:
(3.3)
若令
,
则有:
(3.4)
3.3修正权值
设
其中
为第p个学习样本产生的输出误差,
为总误差。
由误差函数调整权值有:
其中
其中
(3.5)
其中
为学习速率,一般在[0,1]内取值。
权值修正为:
(3.6)
(3.7)
4异常检测中BP神经网络的设计
4.1可微阈值单元
X0=1
Wn
W2
W1
Xn
X2
X1
W0=-Θ
图4.1可微阈值单元
如图4.1可微阈值单元,图中为sigmoid单元,与感知器相似,sigmoid单元先计算它的线性组合,然后应用一个阈值到此结果。
然而,对sigmoid单元,