混合型在线数据异常检测方法转让专利

申请号 : CN201911119057.2

文献号 : CN110830946B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李光辉陈灵强

申请人 : 江南大学

摘要 :

本发明公开了混合型在线数据异常检测方法,属于无线传感器网络数据可靠性领域。本发明采用复合的异常检测方法,利用无线传感器网络中数据时间相关性和空间相关性的特点,提高了算法的检测精度。并且本发明采用了分布式的计算方法,降低了节点的通信和计算开销,降低节点的能耗,可以实现异常的实时检测,适合部署到真实的节点系统中。通过python仿真实验验证了混合型在线数据异常检测方法具有较高的准确性和鲁棒性。

权利要求 :

1.一种在线数据异常检测方法,其特征在于,利用一阶差分FOD方法计算某一节点新采集的数据与标准值的差分值,通过比较差分值与阈值的大小来判断异常;

采用基于超网格结构的K近邻异常检测HGDB方法计算新采集数据所映射的超网格结构中检测域内数据点的数量,比较数量与阈值,包括:当获得全部压缩坐标的数组后,将数组进行倒序排序;然后统计同一坐标出现的次数,来记录每个超立方体内数据点的数量,从而获得关于超立方体坐标及其包含数据点数量的二维数组;传感器节点利用上述二维数组,计算本地HGDB的阈值K*;随机从本地数据集V中抽取s个数据点,计算其坐标值;然后统计这些数据点检测域内的数据点数量总和,求取分布平均值得阈值K*;

其中,r为训练数据的样本空间中,非空超立方体占全部超立方体的比例;|NP|为非空数组中记录超立方体的个数, 为训练集映射的超网格区域包含的超立方体的总数;|DR(j)|表示测试数据j检测域内的数据点的数量;

结合FOD和HGDB的方法,综合判断数据是否正常;所述标准值为经过FOD检测并判断为正常的数值;

当检测到正确数据后,标准值都会被当前正常数据替代;

当检测到连续异常时,该节点将发送询问数据包给其他节点,其中包含该节点近期正确的数据,包括:当HGDB算法、FOD算法这两种算法都检测数据为正常,则新采集的数据为正常;当只有HGDB算法检测数据为异常时,若连续出现此情况,则NP失效,需要重新更新模型;

当只有FOD算法检测数据为异常时,若连续出现此情况,则该节点发送询问数据包给其他节点,进行分析;当两种算法都检测数据为异常,则新采集的数据为明显异常;

其他节点利用线性最小二乘估计LLSE算法估计询问节点最新的数据,并将估计结果返回给询问节点,然后,询问节点分别对估计值与当前值以及估计值与标准值进行FOD计算,判断连续的异常是标准值出错还是数据的异常。

2.根据权利要求1所述的一种在线数据异常检测方法,其特征在于,包括以下步骤:步骤1:使用动态分簇的算法将传感器网络分簇;

步骤2:在初始部署阶段,簇内节点采集的数据将直接存储;

步骤3:簇内节点协调模型更新,并计算阈值;

步骤4:传感器节点在本地进行实时异常检测,并保存正确的数据;

步骤5:若步骤4检测到该节点连续异常,则发送询问数据包给邻居节点进行分析;

步骤6:若步骤4检测到模型需要更新,跳转步骤3,否则跳转到步骤4。

3.根据权利要求2所述的一种在线数据异常检测方法,其特征在于,所述步骤3包括以下步骤:步骤31:初始部署阶段:当某一节点存储数据数量超过预设值,则该节点发送更新请求给簇头,请求更新;运行阶段:当某一节点存储的数据完全被替代时请求更新,或者当某一节点的标准文件失效时,提前发起更新请求;

步骤32:当收到簇内节点的更新请求包时,簇头广播模型更新命令,同步簇内检测模型与阈值的更新操作,更新的内容包括训练数据在超立方结构中分布情况、HGDB检测过程的阈值K,及FOD检测过程的阈值T;

步骤33:簇内传感器节点统计本地数据信息,发送给簇头,所述本地数据信息包括温度值数据的累加和、平方和、最大值、最小值、方差;

步骤34:簇头统计簇内总的本地数据信息,再发送给簇内其他传感器节点;

步骤35:簇内传感器节点各自标准化本地保存的数据,并将数据映射到超网格结构中,统计数据的二维分布数组,即统计非空网格坐标及网格内数据点的数量,然后计算本地HGDB的阈值K*,传感器节点将数据的二维分布数组和阈值K*值发送给簇头;

步骤36:簇头整合簇内传感器节点的全部数据分布信息,形成一个全局标准文件,并且计算全局的阈值K值,及FOD的阈值T,簇头将阈值K值与阈值T发送给簇内各传感器节点。

4.根据权利要求2或3所述的一种在线数据异常检测方法,其特征在于,所述步骤4包括以下步骤:步骤41:簇内传感器节点根据NP,计算新采集的数据在其检测域内数据点数量N,比较N与阈值K的大小,判断该数据是否为HGDB算法异常;

步骤42:将一阶差分与超网格坐标结合:传感器节点根据FOD算法,计算新采集的数据的坐标与标准数据的坐标的一阶差分D,比较D与阈值T的大小,判断该数据是否为FOD算法异常;

步骤43:综合分析两种检测结果。

5.根据权利要求2或3所述的一种在线数据异常检测方法,其特征在于,所述步骤5包括以下步骤:步骤51:步骤4检测到存在连续异常的节点发送询问数据包给其他节点;

步骤52:其他节点使用接收到的查询数据包中自身存储的数据,根据最小二乘估计方法,求得存在连续异常的节点的最新数据的估计值,并发送给该存在连续异常的节点;

步骤53:该存在连续异常的节点求解全部估计值的均值D’,与本地标准值S以及最新数据D比较;使用FOD算法计算,获得D’与D的判断结果1以及D’与S的FOD判断结果2,判断结果分为以下四种情况:若两个判断结果都为异常,则用D’值替换标准值,

若只有结果1为异常,则表明可能存在异常事件发生,异常事件包括:节点故障、环境异常;

若只有结果2为异常,则表明本地标准值出错,使用D’替代本地标准值,若两个结果都为正常,则保持本地标准值不变。

6.根据权利要求1-3任一所述的一种在线数据异常检测方法,其特征在于,是用于检测无线传感器网络的数据异常。

7.根据权利要求6所述的一种在线数据异常检测方法,其特征在于,所述无线传感器网络经过分簇。

8.一种无线传感器网络,其特征在于,使用权利要求17任一所述的数据异常检测方~法。

说明书 :

混合型在线数据异常检测方法

技术领域

[0001] 本发明属于无线传感器网络数据可靠性领域,涉及混合型在线数据异常检测方法,是一种复合的在线异常检测算法。

背景技术

[0002] 随着物联网的发展,大量无线传感器网络被部署在真实环境中,用于采集各种环境数据(如温度、湿度、土壤酸碱度等),海量的数据随之产生。通过对采集的数据的实时分析,我们可以实现对环境的实时监控,从而判断不良的环境条件(如森林监控系统检测到火灾,智慧农业系统检测到土壤PH值不适宜等),可以科学地指导人们的生产生活,但是其前提是确保数据真实可靠。
[0003] 经大量研究发现,大多无线传感器网络采集的数据存在数据异常的问题。数据的异常有很多影响因素,如节点的损坏、节点的断电、其他噪声、甚至网络攻击等。由于节点部署的特殊性,大多数的影响因素无法有效地避免。因而,数据的异常检测技术尤为重要。一般的异常检测方法可以分为以下几类:基于统计、基于近邻、基于聚类和基于学习等。近些年来,为提高检测的实时性,在线异常检测的研究越来越受到科研人员的关注。
[0004] M.Xie等人提出的基于超网格结构的K近邻异常检测方法,大大降低了基于距离的检测方法的计算复杂度(M.Xie,J.Hu,S.Han,and H.-H.Chen“, Scalable hypergrid k-NN-based online anomaly detection in wireless sensor networks,”IEEE Transactions on Parallel and Distributed Systems,vol.24,no.8,pp.1661-1670,2012.A.B.Sharma,L.Golubchik,and R.Govindan,“Sensor faults:Detection methods and prevalence in real-world datasets,”ACM Transactions on Sensor Networks(TOSN),vol.6,no.3,pp.23,2010.)。通过构建超网格结构,将特征空间划分为一个个连续的超立方体。然后将数据点映射到一个个超立方体中,进而统计非空的超立方体的坐标以及包含在其内的数据点的数量,形成一个全局标准文件(NP)。最终,不同于一般的基于距离的检测方法,HGDB方法只需从NP中统计测试数据映射后的区域邻近超立方体中的数据量总和,比较统计值与阈值大小。如果统计值大于阈值,则测试数据为正常,反之相反。HGDB在算法原理简单,将一般基于距离的超椭球体检测域改为超立方体检测域,易实现,具有计算复杂度低的优点,且其考虑到了分布式计算的方法,是一种有效的在线检测方法。然而,基于距离的异常检测方法只考虑测试数据与整体数据的分布关系,而忽略了无线传感器数据的时间相关性的特点,所以这类方法对于上下文异常检测精度不高,尤其是那些低强度的噪声。

发明内容

[0005] [技术问题]
[0006] 本发明要解决的技术问题是提高无线传感器网络异常检测的精度,在保障低的计算复杂度的前提下,提高检测精度,增强算法的鲁棒性。
[0007] [技术方案]
[0008] 本发明在基于超网格的K近邻异常检测(HGDB)方法的基础上,利用无线传感器网络数据时空相关性的特点,增加一阶差分(FOD)的检测方法,提高了算法对于上下文异常的检测率。其中,上下文异常设定为明显区别于近期数据值,但仍被HGDB方法判定为“正常”的数据。可见,添加FOD方法,可以提高HGDB检测方法的检测精度。为增加一阶差分方法的鲁棒性,本发明方法还采用了线性最小二乘估计(LLSE)的方法。当连续异常发生时,异常节点通过其他节点的联合估计,进而判断此次异常是否为参数异常(标准值出错),或是事件异常(如节点故障、外部异常事件等)。虽然无法分析出具体异常事件类型,但是,感知节点可以通过发送警报数据包来示警。通过结合以上三种方法,形成混合的在线异常检测方法(HODB)。
[0009] 具体地,本方发明采用FOD方法,计算某一节点(下称“该节点”)测试数据与标准值的差分值,通过比较差分值与阈值的大小来判断异常,并且采用HGDB方法计算新采集数据所映射的超网格结构中检测域内数据点的数量N,比较N与阈值K;结合以上两种方法,综合判断数据是否为正常;所述标准值为经过FOD检测并判断为正常的数值。当检测到正确数据后,标准值都会被当前正常数据替代;当检测到连续异常时,该节点将发送询问数据包给其他节点,其中包含该节点近期正确的数据,其他节点利用LLSE算法估计询问节点(当节点采集到到长期异常数据时,节点转化为询问节点)最新的数据,并将估计结果返回给询问节点,然后,询问节点分别对估计值与当前值,以及估计值和标准值进行FOD计算,判断连续的异常是标准值出错还是数据的异常(异常事件发生)。
[0010] 具体地,本发明方法包括以下步骤:
[0011] 步骤1:使用动态分簇的算法将传感器网络分簇;
[0012] 步骤2:在初始部署阶段,簇内节点采集的数据(如温度等)直接存储;
[0013] 步骤3:簇内节点协调模型更新,及计算相关阈值;
[0014] 步骤4:传感器节点在本地进行实时异常检测,并保存正确的数据;
[0015] 步骤5:若步骤4检测到该节点连续异常,则发送询问数据包给邻居节点进行分析;
[0016] 步骤6:若步骤4检测到模型需要更新,跳转步骤3,否则跳转到步骤4。
[0017] 在本发明的一种实施方式中,所述“簇内节点协调模型更新,及计算相关阈值”包括以下步骤:
[0018] 步骤31:初始部署阶段:当某一节点存储数据数量超过预设值,则该节点发送更新请求给簇头,请求更新;运行阶段:当某一节点存储的数据完全被替代时请求更新,或者当某一节点的标准文件失效时,提前发起更新请求;
[0019] 步骤32:当收到簇内节点的更新请求包时,簇头广播模型更新命令,同步簇内检测模型与阈值的更新操作,更新的内容包括训练数据在超立方结构中分布情况、HGDB检测过程的阈值K,及FOD检测过程的阈值T;
[0020] 步骤33:簇内传感器节点统计本地数据信息,发送给簇头,所述本地数据信息包括温度值等数据的累加和、平方和、最大值、最小值、方差等;
[0021] 步骤34:簇头统计簇内总的本地数据信息,再发送给簇内其他传感器节点;
[0022] 步骤35:簇内传感器节点各自标准化本地保存的数据,并将数据映射到超网格结构中,统计数据的二维分布数组,即统计非空网格坐标及网格内数据点的数量,然后计算本地HGDB的阈值K*,传感器节点将数据的二维分布数组和阈值K*值发送给簇头。
[0023] 步骤36:簇头整合簇内传感器节点的全部数据分布信息(即步骤35中的二维分布数组),形成一个全局标准文件(normal profile,NP),并且计算全局的阈值K值,及FOD的阈值T,簇头将以上汇总信息发送给簇内各传感器节点。
[0024] 在本发明的一种实施方式中,步骤4所述“传感器节点在本地进行实时异常检测,并保存正确的数据”包括以下步骤:
[0025] 步骤41:簇内传感器节点根据NP,计算新采集的数据在其检测域内数据点数量N,比较N与阈值K的大小,判断该数据是否为HGDB算法异常(新采样的数据在步骤41中进行HGDB检测时,被映射到超网格坐标中);
[0026] 步骤42:将一阶差分与超网格坐标结合:传感器节点根据FOD算法,计算新采集的数据的坐标与标准数据的坐标的一阶差分D(可以得到各个维度上坐标的差值,即超立方的个数),比较D与阈值T的大小,判断该数据是否为FOD算法异常。由于超立方体包含的真实数据区域由训练数据标准差和数据维度决定,当采样数据的维度一定时,设定的阈值由训练数据标准差决定,当模型更新时,阈值随着训练数据标准差变化,使得该方法具有一定的自适应性。
[0027] 步骤43:综合分析两种检测结果:
[0028] 当HGDB算法、FOD算法这两种算法都检测数据为正常,则新采集的数据为正常;
[0029] 当只有HGDB算法检测数据为异常时,若连续出现此情况,则NP失效,需要重新更新模型;
[0030] 当只有FOD算法检测数据为异常时,若连续出现此情况,则该节点发送询问数据包(包含近期数据)给其他节点,进行分析;
[0031] 当两种算法都检测数据为异常,则新采集的数据为明显异常。
[0032] 在本发明的一种实施方式中,步骤5所述“若该节点检测连续异常,则发送询问数据包给其他节点进行分析”包括以下步骤:
[0033] 步骤51:步骤4检测到存在连续异常的节点发送询问数据包(包含近期数据)给其他节点;
[0034] 步骤52:其他节点使用接收到的查询数据包中自身存储的数据,根据最小二乘估计方法,求得存在连续异常的节点的最新数据的估计值,并发送给该存在连续异常的节点;
[0035] 步骤53:该存在连续异常的节点求解全部估计值的均值D’,与本地标准值S(S是指FOD算法中最近被检测为正常的数据向量)以及最新数据D(D指最新采集的数据向量)比较;使用FOD算法计算,获得D’与D的判断结果1以及D’与S的FOD判断结果2,判断结果分为以下四种情况:
[0036] 若两个判断结果都为异常,则用D’值替换标准值,
[0037] 若只有结果1为异常,则表明可能存在异常事件发生,例如节点故障、环境异常等;
[0038] 若只有结果2为异常,则表明本地标准值出错,使用D’替代本地标准值,[0039] 若两个结果都为正常,则保持本地标准值不变。
[0040] [有益效果]
[0041] FOD方法容易受假正例的影响,为增加FOD的鲁棒性,本发明在节点使用FOD算法检测到连续异常时,该节点将发送询问数据包给其他节点,其中包含节点近期正确数据。
[0042] 本发明采用复合的异常检测方法,利用无线传感器网络中数据时间相关性和空间相关性的特点,提高了算法的检测精度。并且本发明采用了分布式的计算方法,降低了节点的通信和计算开销,降低节点的能耗,可以实现异常的实时检测,适合部署到真实的节点系统中。通过python仿真实验验证了混合型在线数据异常检测方法具有较高的准确性和鲁棒性。

附图说明

[0043] 图1算法部署流程图
[0044] 图2二维的超网格结构图。
[0045] 图3SensorScope数据图;(a)大气温度曲线图,(b)地表温度曲线图,(c)湿度曲线图。
[0046] 图4实验结果图;(a)N1异常强度下算法性能图,(b)N2异常强度下算法性能图,(c)N3异常强度下算法性能图。
[0047] 图5准确率曲线。
[0048] 图6误报率曲线。

具体实施方式

[0049] 一些概念及原理:
[0050] 超网格结构:指将特征空间划分为一个个连续的大小相同的超立方体的结构。如图2所示为二维的超网格结构图。
[0051] 准确率:指样本中被正确判定的样本数与全部样本数之比。
[0052] 误报率:指样本中正常样本被误判的数量占正常样本总数的比例。
[0053] 检测域:超网格结构下,样本空间被划为一个个连续的超立方体,测试数据在经过标准化后,映射到超网格中的某个超立方体,假设该超立方体的坐标为(u1,u2,…,uq),那么样本的检测域集合可以表示为
[0054] HGDB检测标准:
[0055] 标准一:如果数据所在的超立方体中的数据量大于K值,那么该测试数据为正常,无需继续搜索检测域的其他超立方体。
[0056] 标准二:如果数据检测域内的数据量少于K值,那么该测试数据为异常。
[0057] 噪声强度:因为大多数据集含有较少的异常值,所以如果使用原始的数据集验证,无法有效地反映算法的有效性,为此,可以通过人工插入异常值的方法增加异常值的比例。一般情况下,假设异常值服从高斯分布,且接近于真实数据。为此,我们通过计算原数据集的均值μ和方差σ2,然后假设异常数据服从 分布。取不同的θ和 值将会产生不
2 2 2
同强度的随机分布。N1=N(μ+0,1.5*σ),N2=N(μ+0.5,1.5*σ),N3=N(μ+5,1.5*σ)。
[0058] 实施例1
[0059] 为方便理解,我们以一个簇为例子。
[0060] 假设簇内存在一个簇头节点和m个传感器节点,每个传感器节点周期性采集一个数据向量v=[x1,…,xq],其中包含q个属性值。且节点用于下次模型更新的数据量为n,其存储在本地的数据集合用V表示,V=[v1,…,vn]。
[0061] 步骤1:使用动态分簇的算法将传感器网络分簇。
[0062] 大面积部署的传感器网络大多采用分簇的方式来融合节点数据,进而降低网络的通信开销。本方案不涉及具体的分簇算法,并假设异常检测用于分簇之后的网络。
[0063] 步骤2:初始部署阶段,簇内节点采集数据(如温度等)直接存储。
[0064] 当系统初始部署的阶段,传感器节点周期性采集数据,并存储至本地。当存储数据量超过预设数值时,传感器节点向簇头发起更新请求。
[0065] 步骤3:簇内节点协调模型更新,及相关阈值计算。
[0066] 步骤31:节点系统布置分为两个阶段(初始部署阶段和稳定运行阶段),这两个阶段以节点系统完成第一次更新为分界,两个阶段模型更新触发条件有所不同。初始部署阶段:当A节点存储数据数量超过预设值,A节点发送更新请求给簇头。稳定运行阶段:当存储的数据完全被替代时发起更新,或者标准文件失效后,节点提前发送更新请求。
[0067] 步骤32:当收到簇内节点的更新请求包时,簇头广播模型更新命令,同步簇内节点的模型更新。
[0068] 步骤33:当收到簇头的更新命令后,簇内各传感器节点统计本地数据信息,如下列公式所示。
[0069] 假设各传感器节点本地存储的数据集合为V=[v1,..vj.,vn],其中vj=[xj1,...xjk...,xiq]表示本地存储的第j条数据,其中包含q个元素。
[0070] 1)统计本地存储数据向量的个数。
[0071] N=|V|=n  (1)
[0072] 2)计算k属性的线性累加和(Linear Sum)。
[0073]
[0074] 3)计算k属性的线性平方和(Linear Square Sum)。
[0075]
[0076] 4)获取数据集中全部数值的最大值、最小值。
[0077] max=maximum(xjt)j∈[1,...,n],t∈[1,...,q]  (4)
[0078] min=minimum(xjt)j∈[1,...,n],t∈[1,...,q]  (5)
[0079] 传感器节点将上述信息打包成数据包,发送给簇头。
[0080] 步骤34:簇头汇总各节点的数据信息,如下列公式所示:
[0081] 1)统计数据向量的数量总和。
[0082]
[0083] 2)计算簇内k属性的平均值。
[0084]
[0085] 3)计算簇内k属性的标准差。
[0086]
[0087] 4)获取簇内数据的最大值和最小值。
[0088] maxg=maximum(maxi)i∈[1,…,m]  (9)
[0089] ming=minimum(mini)i∈[1,…,m]  (10)
[0090] 簇头将上述信息打包发送给簇内各节点,用于节点数据的标准化。
[0091] 步骤35:簇内各传感器节点使用公式(11)标准化保存数据,其中,xk为第k个属性的真实值,μk和σk分别为第k个属性的均值和标准差。
[0092]
[0093] 然后,将标准化处理后的数据映射到超网格结构中,如公式(12)所示为第k维数据映射的映射过程,其中c为一个常量,h为超网格结构中超立方体的边长值。对dk值进行向下取整操作,便得到了数据所属超立方体的第k维坐标值。M.Xie等人提出来h的计算公式,如公式(13-14)所示,其中,n为训练单次超网格结构模型的样本量,q为样本空间的维度。
[0094]
[0095]
[0096]
[0097] 各传感器节点进一步统计本地数据分布。HGDB还增加了坐标压缩的方法,将每一维度的坐标值保存成固定的比特位b,b的值由公式(15)得到,其中,maxg为训练样本中所有维度数据的最大值,依此来决定数据的边界,进而确定最大需要编码的二进制位数,c为一个标量值。多维数据通过位操作,压缩成一个坐标值,其过程如公式(16)所示。这种处理方法即减少了存储空间,又提高了搜索速度,其中h为超网格结构中超立方体的边长。
[0098]
[0099] pos=(dk<<(q-k)*b)|pos,k=1,...,q  (16)
[0100] 当获得全部压缩坐标的数组后,将数组进行倒序排序。然后统计同一坐标出现的次数,来记录每个超立方体内数据点的数量。从而获得关于超立方体坐标及其包含数据点数量的二维数组。
[0101] 传感器节点利用上述二维数组,计算本地HGDB的阈值K*。随机从本地数据集V中抽取s个数据点,计算其坐标值。然后统计这些数据点检测域内的数据点数量总和,求取分布平均值得阈值K*。公式(17-18)为K*的计算公式,其中,r为训练数据的样本空间中,非空超立方体占全部超立方体的比例。在公式(17)中添加变量r,是为了使超网格结构中的概率密度函数在整个特征范围内连续,|NP|为非空数组中记录超立方体的个数,公式(17)的分母为训练集映射的超网格区域包含的超立方体的总数。公式(18)中|DR(j)|表示测试数据j检测域内的数据点的数量。
[0102]
[0103]
[0104] 传感器节点将数据的二维分布数组和K*值发送给簇头
[0105] 步骤36:簇头汇总各节点的数据信息,行成一个总的数据分布文件(NP),其包含全部非重复的超立方体的坐标信息,及对应超立方体内数据点的数量。然后,簇头平均传感器节点发来的K*值,得到阈值K,并根据簇内训练数据的标准差,设置对应属性FOD的阈值T。簇头将以上汇总信息发送给簇内节点,其中,阈T值设定为超网格的个数。公式(19)中dik和djk为数据映射后且未向下取整的坐标值,由公式(12)展开得,映射后坐标的差与数据原始值成正比。再由公式(13)可知,当样本数据量和样本维度确认后,超网格的超立方体最优边长为定值。此处,假设两个变量映射后坐标差为Δpos=1,则可以得出单个超立方体中,单个属性的变化幅度为[0,σ*h],其中σ为该属性的训练样本标准差。当设定FOD算法阈值为超网格的个数值(假设θ),即新采集的数据判断的为正常的条件为差分值属于(-(θ+1)σh,(θ+1)σh)之间。
[0106]
[0107] 步骤4:传感器节点在本地进行实时异常检测,并保存正确的数据。
[0108] 步骤41:传感器节点根据NP,计算测试数据检测域中数据数量N,比较N与阈值K的大小,判断该数据是否为HGDB算法异常。
[0109] 步骤42:将一阶差分与数据的超网格坐标结合。测试数据在进行HGDB检测时,被映射到超网格坐标中。此时,直接将测试数据的坐标与标准数据的坐标进行差分,得到各个维度上坐标的差值(即超立方的个数)。由于超立方体包含真实数据区域由训练数据标准差和数据维度决定。当采样数据的维度一定时,FOD的阈值由数据的标准差决定。当模型更新时,阈值随着训练样本的标准差变化,使得该FOD方法具有一定的自适应性。传感器节点根据FOD算法,计算测试数据坐标与标准数据坐标的一阶差分D=[D1,D2,…,Dq],比较Di与阈值Ti的大小,判断该数据是否为FOD算法异常。
[0110] 步骤43:综合分析两种检测结果,其包含一下四种情况:
[0111] 1)两种算法都检测数据为正常,则测试数据为正常。
[0112] 2)只有HGDB算法检测数据为异常。若连续出现此情况,则NP失效,需要重新更新模型。
[0113] 3)只有FOD算法检测数据为异常。若连续出现此情况,则该节点发送询问数据包(包含近期数据)给其他节点,进行分析。
[0114] 4)两种算法都检测数据为异常,则测试数据为明显异常。
[0115] 步骤5:若A节点在t时刻检测到连续异常,则发送询问数据包给邻居节点进行分析。
[0116] 步骤51:节点A发送询问数据包(包含近期数据集合 )给其他节点。
[0117] 步骤52:邻居节点使用本地数据,以第j号邻居节点为例,其本地近期数据集合为根据最小二乘估计方法,求得节点A最新数据的估计值,并发送给节点A。如公式(19)所示为最小二乘估计方法的计算公式,以标量形式,其中μi和μj分别为Vi和Vj数据集中k属性的均值,λj为Vj数据集中k属性的方差,λij为Vi和Vj数据集的协方差,为查询节点当前采样的估计值。
[0118]
[0119] 步骤53:节点A求解全部估计值的均值D’,与本地标准值S以及最新数据D比较。两两使用FOD算法计算,获得D’与D的判断结果1和D’与S的FOD判断结果2。同样可分为以下四种情况:
[0120] 1)若两个判断结果都为异常,则用D’值替换标准值。
[0121] 2)若只有结果1为异常,则表明可能存在异常事件发生(如节点故障、环境异常等)。
[0122] 3)若只有结果2为异常,则表明标准值出错,使用D’替代标准值。
[0123] 4)若两个结果都为正常,则保持不变。
[0124] 步骤6:若模型需要更新,跳转步骤3,否则跳转到步骤4。
[0125] 本发明使用SensorScope项目的真实数据集来验证算法的可行性。SensorScope项目是一个室外传感器网络项目,其部署在多个区域。这里,我们应用洛桑城市冠层实验(LUCE)得到的数据。该项目于2006年7月部署在洛桑联邦理工学院校园内,由97个气象站组成,每个气象站带有传感器,用于检测环境温度,表面温度,相对湿度等几个环境属性。传感器每30s完成一次采样。如图3所示为实验使用的数据集。经本发明检测得,数据集中98.12%数据检测为正常。由于所取数据区域异常数据较少,无法更好的体现算法的性能。
为验证算法对各种强度异常的检测效果,我们人工插入三种强度的异常值(N1、N2、N3)。本发明算法(HODB)与HGDB、HGDB2、SKNN进行对比。HGDB2算法是对HGDB算法的改进,其添加了发生连续异常便更新模型的机制。SKNN是标准的K近邻算法,在异常检测算法中,具有很好检测结果。因为SKNN计算计算复杂度高,不适于用于在线的异常检测。图4可以看出HGDB具有很高的误判。在改进HGDB的更新机制后,HGDB2的误判明显降低,但是其漏报却随着增加。
在处理含有N1和N2强度的异常数据时,SKNN的检测结果稍强于本发明。但是加入N3强度的噪声时,本发明略优于SKNN方法,。图5,图6表示本发明处理含有N3噪声数据的准确率和误判率。可见本发明具有较高的准确率和较低的误判率。
[0126] 虽然本发明已以较佳实施例公开如上,但其并非用以限定本发明,任何熟悉此技术的人,在不脱离本发明的精神和范围内,都可做各种的改动与修饰,因此本发明的保护范围应该以权利要求书所界定的为准。