文献标识码:A
DOI:10.16157/j.issn.0258-7998.2015.07.032
中文引用格式:敬明旻,肖莉,杨传书. 基于最大似然估计与朴素贝叶斯的WSN故障检测[J].电子技术应用,2015,41(7):114-117.
英文引用格式:Jing Mingmin,Xiao Li,Yang Chuanshu. Maximum likelihood estimation and Naive Bayes classifier based fault detection in WSN[J].Application of Electronic Technique,2015,41(7):114-117.
0 引言
传感器网络通常分布于变化剧烈、地势复杂的环境之中。可能由于能量耗尽、外界损坏等因素导致传感器节点出现故障,而故障节点的出现会导致路由的中断、采集数据不完整等,因此故障节点的检测极为重要[1]。
已有的故障检测算法大多较为复杂[2],基于神经网络学习[3]、Kruskal算法[4]等,此类算法均可获得较好的检测率,但计算冗余较高,同时需传感节点消耗大量的能量[5]。
本文提出了一种基于朴素贝叶斯与最大似然估计的大型传感器网络故障节点检查算法,算法具有如下优点:(1)所有检测计算在sink节点中进行,从而无需消耗普通节点的能量;(2)从协议数据包中获取端到端延迟值,从而降低节点检测的能耗;(3)使用朴素贝叶斯分类器与最大似然估计,其计算效率较高、鲁棒性好,对于大型网络,其分类准确率好于一些复杂的分类算法。
1 朴素贝叶斯分类器与最大似然估计
1.1 故障节点引起的后果
图1所示为ZigBee规范下故障节点导致路由变换的两种情况,ZigBee规范规定所有节点选择最短路径,将数据传递至Sink节点。从图中可看出,故障节点导致了能耗的增加以及端到端传递时间的延长。
1.2 朴素贝叶斯模型
可在训练阶段使用最大似然估计(MLE)求得后验分布,待检测参数的值收集完毕之后,使用式(2)将其分类。
1.3 最大似然估计
一个典型WSN中一般具有大量的传感节点,网络中出现故障或错误的场景极多,因此,不可能通过大量的训练样本来计算所有故障场景的条件概率。本文使用MLE在利用适量的训练样本前提下,估算条件概率密度函数(PDF)。假设训练属性值集合为S={s1,s2,…,sk},将其密度表示如下:
式中S为独立同分布。对式(4)求导可估算最大似然估计
2 中心型朴素贝叶斯检测算法
基于WSN的运行特点,假设数据包传输时间属于指数级PDF,使用MLE估算训练阶段的条件概率。
图2为算法的总体流程。
下面对程序各步骤进行详细解释。
步骤1:对于训练阶段与检测阶段,仅分析简单的数据包的信息,如端到端数据包传输时间、源节点ID等。网络状态可能是正常或有错,若类标签是正常,网络中则无故障传感器;若类标签是有错,则网络中含有一个以上的故障传感器。
训练阶段:
步骤2.1:从正常类中获取数据并开始训练过程。当正常类数据被处理之后,提取每个节点的最小时间值作为一个异常检测阈值。在典型的WSN拓扑结构中,各节点将若干个数据包汇聚至sink,换句话说,故障节点对传输的影响依赖于故障传感器在拓扑中的位置。若故障节点是一个叶节点,则无法选择其信号。若故障节点在通往sink节点的唯一路径中,则该分支的节点均无法传输数据。
步骤2.2:根据训练数据集的类标签估算两个类(正常类和有错类)的边际概率。
步骤3:基于步骤2.1与2.2获得的条件概率与边际概率建立朴素贝叶斯分类器,步骤8使用该分类器决定网络的状态。
检测阶段:
步骤3:sink节点将接收的数据包分批分析(1 000个数据包分为1批)。一批中根据所有数据包的端到端传输时间进行分组。将所有分组传给步骤5来检查传输路径中是否含有故障节点。
步骤4:在数据包传递过程中,拥塞是正常情况,其端到端传输时间可能高于无拥塞网络情况(其中不含有故障节点)。为了不混淆拥塞与故障节点两种情况,将每个数据包组与其异常阈值比较。若组中所有的端到端传输时间均低于异常阈值,则认为路径中至少含有一个故障传感器,或者说,若只有一个传输时间值低于异常阈值,则认为是拥塞导致,而不是故障节点。
步骤5:数据包分组中可能包含不同的端到端传输时间值。将传输时间的模式值用于进一步的分析,计算每个分组中正常与故障模式值的条件概率,并与训练PDF比较。
步骤6:如果模式值的故障条件概率高于正常模式值的条件概率,则该网络可能有错,否则,认为该网络正常。
步骤7:由于错误设定的模式值也可能导致拥塞(并非故障节点),因此需对模式值作进一步分析。为了确定网络状态,将最后的5个传输时间使用朴素贝叶斯分类器分析。若5个时间值均较低,则使用所有的时间值来估算。由此获得的分类器结果代替步骤7的原结果。
步骤8:如果数据包被分组定义为一个有错网络,对应的源节点则将被定义为可疑故障节点,然后更新该可疑故障节点。
步骤9:重复步骤5~9,直至完成所有数据包的分析。
步骤10:统计网络状态和可疑故障节点列表根据测试场景进行报告。
3 试验结果与分析
3.1 仿真与试验环境
试验采用ZigBee系统建立WSN网络模型,使用邻接矩阵(传输成本范围为1~200)随机生成100个节点的网络拓扑。网络中仅设置一个sink节点,将sink节点的能量设为无限。各节点随机地采集数据,然后将数据包传递至sink节点。试验中设置两个重要的网络场景:(1)流量拥塞等级(3个流量拥塞等级):无拥塞、轻度拥塞、重度拥塞。(2)按网络中是否有故障节点分为:故障网络、正常网络。试验中将故障节点数量设为1~5个。对于100个节点的拓扑,含有1~5个故障节点,则分别有100、4 950、161 700、3 921 225、75 287 520个故障节点的位置组合,显然,故障节点的分布情况很多,由于试验条件限制,试验中将故障节点组合的上限设为5 000个,因此,每个流量拥塞等级的总场景数量为20 050,3个拥塞等级则共有60 150个故障场景,每个场景传感器共随机产生2 000个数据包。
将本算法与其他两个广泛应用的性能评价算法比较:边缘故障检测(MFD)、历史故障检测(HFD)。MFD利用每个节点的正常数据,对其训练并获得测试数据的阈值,当拥塞导致传输时间变化时,选择最小值作为阈值。若较多的新数据高于阈值,则将该传输路径分类为故障路径,将对应的源节点记为可疑节点。
MFD使用所有正常数据训练获得其阈值,而HFD与本算法则使用60%左右的故障数据训练,剩下40%故障数据用于方法验证。在相同的流量拥塞等级下,HFD为每个源节点记录正常与故障两个场景的传输时间,若在其正常场景与故障场景中发现相同的传输时间,则将该网络与源节点分别分类为故障网络与可疑节点。图3所示为正常传输时间与故障传输时间下指数分布MLE获得的概率密度函数。图3(a)中,比较了单个节点的故障场景与正常场景的PDF,图3(b)对整个网络的全部故障场景与正常场景的PDF进行了比较,可看出故障场景下,长传输时间的概率高于正常场景。
3.2 场景检测率
本文为三个不同流量条件共产生6 015个场景。场景检测率表示本算法检测的可疑节点与理论故障节点匹配的数量与总场景数量的比例。图4所示为不同流量条件下,MFD、HFD与本算法三种方法的场景检测率。在拥塞情况下,本算法的场景检测率最高,而其他两种算法在轻度与重度两种拥塞下性能不佳,因为故障的场景众多,MFD与HFD从其数据库中无法获得足够的信息来判断传输时间较长的原因(因为拥塞或是因为网络故障)。对于故障场景,轻度拥塞的一个故障节点情况下,本算法的检测性能不佳,原因在于:一个故障节点时,故障场景有限,此时,朴素贝叶斯分类器的训练数据不足,导致条件概率训练不够准确。而对于故障场景的其他情况,本算法的检测率均高于60%,原因在于:其他情况下,利用较多的故障数据建立了条件概率,因此获得了较高的朴素贝叶斯分类正确率。
4 结论
本文通过贝叶斯分类器与最大似然估计实现了有效的传感器网络故障检测,在保持与传统算法虚警率接近的条件下,大幅度提高了故障检测的场景检测率。此技术在随钻数据测量与风险监测方面具有广泛应用和前景。
参考文献
[1] 马峻岩,周兴社,李士宁,等.基于异常任务运行记录的WSN故障检测[J].计算机工程,2012,38(1):93-95.
[2] 李洪兵,熊庆宇,石为人,等.无线传感器网络中网络层故障容错技术研究进展[J].计算机应用研究,2013,30(7):1921-1928.
[3] 谢迎新,陈祥光,余向明,等.基于VPRS和RBF神经网络的WSN节点故障诊断[J].北京理工大学学报,2010,30(7):807-811.
[4] 李文璟,袁野,喻鹏,等.基于改进Kruskal算法的WSN故障节点检测方法[J].北京邮电大学学报,2014,37(4):103-107.
[5] LEE M H,CHOI Y H.Fault detection of wireless sensor networks[J].Computer Communications,2008,31(14):3469-3475.
[6] YOUN E,JEONG M K.Class dependent feature scaling method using Naive Bayes classifier for text datamining[J].Pattern Recognition Letters,2009,30(5):477-485.