APP下载

基于深度森林的无线传感器网络故障分类算法

2022-02-16邸希元

计算机测量与控制 2022年1期
关键词:级联故障诊断节点

张 鹏,李 志,邸希元

(哈尔滨理工大学 自动化学院,哈尔滨 150080)

0 引言

近年来,无线传感器网络(WSN,wireless sensor networks)作为一种数据采集与数据处理的技术被广泛应用[1]。WSN应用在各种复杂或者不方便工作人员进入的环境中,如核辐射环境中的安全监测系统、大规模农业应用、森林火灾预警系统等。由于工作环境的复杂性以及网络拓扑结构的动态变化,在工作过程中受到外界的干扰也更严重,而且WSN中的传感器节点会受到自身体积、功耗、成本以及有限能量的限制,容易出现故障,并且单个节点的故障可能会给整个网络性能带来影响[2]。

在WSN中节点发生的故障大致分为两种:第一种是硬故障,由于长时间的工作导致节点硬件部分出现故障或者硬件出厂时本就存在缺陷,导致采集到的数据属性部分丢失或者无数据;第二种是软故障,包括瞬时故障和永久软故障,产生原因是节点本身能量不足或外界环境干扰,导致监测数据与正常数据存在偏差,也就是数据失真。不精确的感知数据会影响整个网络的监测结果,如果监测信息不可靠,就无法得知监测对象的状态,对相关研究工作产生影响[3-4]。

当网络中的节点出现故障时需要对节点进行修复才能使节点恢复正常工作,所以准确快速的发现节点的故障并确定故障类型对保持WSN的正常工作非常重要。因此本文提出一种深度森林算法对WSN故障分类问题进行研究,并对深度森林算法进行优化以解决随着级联层数的加深,该算法每一层的输入维数都会不断增加,形成“维数灾难”的问题,提高深度森林模型的分类准确率[5-6]。

1 深度森林算法优化

1.1 深度森林算法

深度森林是基于森林的集成学习方法[7]。受到深度学习理论和DNNs的启发,该算法的输入是多维特征向量,特征向量将由其两个主要组成部分进行处理,分别是多粒度扫描和级联森林,多粒度扫描通过处理数据之间的关系来增强数据表示的能力,级联森林用于分类或预测。

多粒度扫描是深度森林中处理数据特征关系的结构,最重要的部分是滑动窗口[8]。滑动窗口用于扫描原始特征并挖掘序列数据的顺序关系,在多粒度扫描中,滑动窗口的每一步都会产生一个包含该滑动窗口中所有元素的特征子映射,并将被用于下一步的训练,如图1所示。

图1 多粒度扫描结构图

假设我们的数据有D个特征,滑动窗口大小为K(根据经验选取可能为D/4,D/8,D/16等),每次滑动的步长为S(一般为1),滑动窗口采样结束共可得到K维特征子样本向量的个数P为:

P=(D-K)/S+1

(1)

接下来将上一步得到的每个子样本都作为两个随机森林的输入(包括一个普通随机森林和一个完全随机森林),每个森林都会输出一个长度为C的类向量,最后将两个森林生成的类向量进行拼接得到了本层输出为:

M=2×((D-K)/S+1)×C

(2)

为了提高特征的有效性,使用级联森林对多粒度扫描得出的向量进行处理最终得到结果[9]。级联森林由许多层森林组成,每一层森林都包括不同种类的随机森林(普通随机森林和完全随机森林),被用于逐层处理数据特征。级联森林的整体多层结构如图2所示。

图2 级联森林结构图

在级联森林中,第一层森林将多粒度扫描的输出作为输入,之后的每一层输入都是由前一层处理后得到的特征向量和原始输入(即第一层的输入)结合构成。级联森林中得每一层都会产生一个类向量作为其输出。在级联森林中每颗子树预测样本x属于c类的概率可以表示为:

(3)

式中,t∈T,T是级联森林中每一层的决策树数量。

每个森林根据公式(4)得到样本x的类向量:

(4)

式中,m∈M,M是级联森林中每一层的森林数量。

根据公式(5)得到该层森林中所有森林的输出:

(5)

式中,z∈Z,Z是级联森林中级别的数量。根据公式(6)得到样本x在该层森林的预测:

y(x)=max(ave(VZ(x)))

(6)

式中,max代表最大值;ave代表平均值。

产生的类向量将与多粒度扫描输出的结果也就是原始特征向量拼接,作为下一层的输入,表示为:

xZ←(x,VZ-1(x))

(7)

这个过程一直持续到达到终止条件,终止条件可以是达到预期精度或达到最大层数。在每次扩展一个新的级别时,使用测试集来验证整个级联森林的性能,如果精度没有显著增加,则训练将终止。这时会得到最终的类向量,计算各种可能性的平均值,并选择值最大的类别作为最终的分类结果。由于这一特性,级联中的级数是自适应的,不同于许多深层神经网络复杂而固定的模型结构,因此在不同规模的数据集下都能被广泛应用[10]。

1.2 改进的深度森林算法

根据对深度森林原理的分析和式(4)以及式(5)可以得知,深度森林的每一级的输入向量是通过将森林的前一级的类分布输出的估计向量和初始特征向量连接起来而形成的。随着森林层次的增加,特征向量携带的文本信息会不断退化,导致分类结果不稳定。文献[11]提出通过将每一层的输入向量变为之前所有层输出类的分布向量来拼接初始特征向量来解决,但是,随着级联层数的加深,改进后的方法每一层的输入维数都会不断增加,形成“维数灾难”。

因此,本文提出了一种改进的深度森林方法IGcForest,并将其应用在WSN的故障分类中。降低了每一层输入向量特征的维数,同时保持各级森林之间的连通性,即:

1)将级联森林中每一层森林包含的两类森林输出的类向量分别求平均值得到减半的输出向量,降低了每一级输入向量特征的维数。

2)在级联森林中的每一层向下输出之前都先缝合之前每一层森林输出的平均值,充分利用每一级森林的输出结果。

改进后的深度森林分类过程如图3所示,其中Ave代表求均值:

图3 深度森林算法流程

改进后的深度森林分类的步骤如下:

1)将原始数据转换为特征向量。

2)使用多粒度扫描对特征向量进行处理。通过滑动窗口得到所有特征子映射,这些子样本都通过完全随机森林与普通随机森林输出为类向量,将所有类向量拼接。

3)使用级联森林对上一步输出的类向量进行处理。每一层森林也包括若干普通随机森林和完全随机森林,在级联的过程中每一层森林都根据之前森林的输出结果继续训练,将本层的结果继续向下传递,直到满足终止条件输出最后的分类结果。

改进后的方法综合考虑了前一级森林分类结果的影响,既降低了每一级输入特征的维数,又保留了每一级分类结果和初始特征向量的特征信息,接下来通过实验验证该改进的算法是否有效。

2 数据收集以及算法改进效果分析

2.1 数据收集

在Ubuntu16.04下使用Ns-3.28对WSN进行仿真模拟收集了20个节点工作三天的数据,每个普通传感器节点间隔5分钟采集并发送一次数据,合计15 552条数据,设置传感器节点收集的数据属性包括温度、湿度以及自身电量等。仿真结束后生成.xml文件和.pacp文件,通过Netanim-3.108可以得到每个传感器节点在运行过程中的地理位置变化、电量变化以及发送数据记录等,通过Wireshark查看最终发送到0号和1号的数据包的具体内容,从中取出收集的数据包含温度、湿度,如图4~5所示。

图4 传感器节点数据图

图5 传感器节点发送数据图

接下来将两部分数据进行合并得到了研究用的数据集,包括节点序号、节点地理位置、节点采集数据(时间、温度、湿度)、节点电量共7类属性。从中截取了一部分数据如表1所示。

表1 传感器节点部分监测数据

2.2 故障类型分析

我们将普通传感器节点可能产生的故障进行分类,主要包括电源模块、通信模块、传感器模块三部分的故障:

1)当电源模块出现了问题,便不再能保证硬件设备的正常工作,如果是低电量会导致收集的监测数据与真实数据存在偏差,如果是电源损坏会导致收集不到该序号传感器节点的监测数据。

2)当通信模块出现了问题,会导致监测数据未按照设定的频率进行发送或接收,可能几个周期内只有一次数据成功传输,可以表示为:

(8)

式中,da代表源节点/目的节点在单个采样周期下正常的发送/接收数据量;db代表目的节点/源节点在单个采样周期下实际的发送/接收数据量;D代表节点在采样周期i到j内da与db的比值,如果大于1证明存在通信问题。

3)当传感器模块出现了问题,会导致采集的数据不准确或丢失,将其分为硬故障和软故障,并转换为数学模型。

将WSN中节点收集的数据表示为:

f(t)′=x+η

(9)

式中,f(t)表示节点在时间t处的感测值;η是即使在理想状态下也会存在的噪声;x为传感器的正常读数。

将包含故障的广义模型表示为:

f(t)′=α+βχ+η

(10)

式中,α表示偏移值;β表示增益值。

硬故障意味着传感器无法收集数据,例如损坏故障,影响了节点正常工作。该故障可以表示为:

f(t)′=φ,t>τ

(11)

式中,τ是发生硬故障的时间,φ为一个零集。

软故障是指传感器节点的数据采集和通讯功能可以正常运行,但监测数据与真实值之间存在一定误差,软故障又可以分为:偏移故障、恒偏差故障、停滞故障、漂移故障等,可能是瞬时故障,也可能是永久软故障,都影响了数据准确性。传感器模块软故障特征图如图6所示。

图6 传感器模块软故障特征图

1)偏移故障:此故障主要是由于外界环境干扰导致的感测数据在真实数据附近波动,该故障可以表示为:

|f(t)′-f(t)|>λ

(12)

式中,λ表示感测数据的正常变化范围最大值。

2)恒偏差故障:感测数据超出了正常范围,这是由于传感器单元的错误校准而将常数添加到预期数据导致的,该故障可以表示为:

f(t)′=a+x+η

(13)

3)停滞故障:感测数据在一定时间段内变化为零,是由于携带的传感器产生故障导致的,该故障可以表示为:

f(t)′=a

(14)

4)漂移故障:感测数据与实际数据存在偏差,并且随着时间偏差增大,该故障可以表示为:

|f(t)′-f(t)|=random(a)×(t-t0)

(15)

式中,t0表示开始出现故障的时间,增益为随机数。

将WSN普通传感器节点可能出现的故障分为电源低电量故障、电源损坏故障、通信故障、偏移故障、恒偏差故障、停滞故障以及漂移故障共7类故障,根据数学模型将其添加至数据集中。以2号节点收集的温度为例,故障数据结果如图7所示。

图7 正常样本与故障样本对比图(温度)

2.3 算法改进效果分析

为了测试算法的改进效果,将改进后的算法与原始算法进行比较,对数据进行训练并测试。原始输入的特征向量是7维,包括传感器节点编号、坐标以及收集的几种数据等,从中取出连续时间内的500条数据作为测试。算法中多粒度扫描的滑动窗口大小分别设置为2、4、6,采样距离为1,在多粒度扫描中使用随机森林与完全随机森林进行训练,每个森林包含100棵决策树;级联森林设置每一层包括4个森林,两个随机森林和两个完全随机森林,每个森林包含100棵决策树;如果两次分类精度没有0.1%以上的提高就终止级联森林的继续扩展。故障分类结果如图8所示。

图8 故障分类实验结果图

可以看出本故障分类模型对WSN的分类比较准确,准确率达到了97.8%,接下来从数据集中抽取不同时间段的数据实验10次取平均值,将改进过的算法(IGcForest)与原始算法(GcForest)进行比较如表2所示。

表2 故障分类性能

可以看出,在优化过深度森林中的级联森林部分之后,算法的分类准确性有了提高,算法的改进有效。由于在实际应用中可能存在训练量少的情况,测试了本故障诊断模型在不同训练集占比下的故障诊断能力,得到结果如图9所示。

图9 训练集占比不同情况下的结果图

由图9可知,本故障分类模型对电源故障、损坏故障、停止故障、恒偏差故障这几类故障在训练集占比低时依然能保持准确分类,在通信故障方面,随着训练集占比的降低分类准确率有一些下降,在电源故障和漂移故障两种故障中也有影响,这是由于在最开始出现故障时的表现不明显,综合多种故障的检测结果,可以看出IGcForest算法在WSN故障分类问题上的平均结果在90%以上,因此适合于解决WSN故障分类问题。

3 故障诊断实验结果及分析

3.1 故障诊断模型建立

完整的故障诊断过程包括故障的检测和故障的分类,在WSN的故障检测方法中随机森林算法可以准确的检测出发生故障的节点[12-13]。在已完成的工作中我们对随机森林的投票方式进行改进,减少分类能力差的决策树对整个模型输出结果的影响,并通过乌鸦搜索算法对参数进行调优。再结合本文提出的改进后的深度森林算法提出一种基于随机森林与深度森林的故障诊断模型。本WSN故障诊断模型包括故障检测与故障分类两部分,故障诊断流程如图10所示。

图10 WSN故障诊断流程图

本WSN故障诊断模型主要包括以下步骤。

1)模型训练:

由于汇聚节点具有较强的计算能力,可以使用复杂的检测结构,第一步是训练汇聚节点处的随机森林分类器,对普通传感器节点传来的数据进行初步分析,如果检测到异常数据就对数据进行标记上传到基站。第二步是基站对数据进行分析,基站可以进行高强度的计算和数据的存储,采用深度森林对故障数据进行分类,如果检测结果达不到预期则通过调整参数来适当提高。

2)模型测试:

在故障诊断模型建立完成之后,使用第三章得到的数据集来进行测试,如果满足需求则不在进行训练,结束过程,否则继续训练过程直到满足要求。

3.2 实验结果及分析

为了充分利用汇聚节点有一定的计算能力的优点,在汇聚节点处应用改进的随机森林模型[16-18],在基站应用改进的深度森林模型,使用分层式的方法提高模型的分类准确度[19-20]。本故障诊断模型对WSN的故障分类性能如图11所示。

图11 故障诊断模型实验结果图

可以看出在对WSN的故障诊断中本故障诊断模型的准确度为98.6%,相比于单独的故障分类本模型得到的准确度更高,能够有效地区分所发生故障的故障类型。

由于在WSN的实际应用中可能没有足够的时间进行数据的累积,存在训练量少的情况,因此测试了本故障诊断模型在不同训练集占比下的故障诊断能力,如图12所示。

图12 故障诊断模型结果图

可以看出,本章提出的WSN故障诊断模型对WSN可能出现的故障分类精度都在96%以上,综合平均精度在98.4%。相比于直接对故障数据进行分类本方法在准确率上有较大提升。

将本算法与在WSN故障诊断效果较好的DNN和SVM算法进行对比,在DNN算法的实验中,建立的DNN模型由输入层、输出层和一层隐藏层组成,其中输入层有8个节点,分别是传感器节点编号、数据采集时间、传感器节点二维平面下的地理位置(x、y)、传感器节点采集的数据(温度、湿度、光照强度以及自身剩余电量)。输出层有7个节点,分别代表了传感器节点可能产生的故障类型。在训练中损失函数选择categorical_crossentropy,优化器选择RMSprop,将dropout应用于输入来防止过拟合的产生,最终将隐藏层神经元数量设置为128得到了最佳的故障诊断结果。

在SVM算法的实验中,输入与输出和DNN的输入输出相同,在核函数的选择中从线性核函数、多项式核函数以及径向基核函数中分别进行训练,最终选择径向基函数,在惩罚系数设定为0.1,核函数系数设定为1时故障诊断效果最佳。算法分类精度对比如图13所示。

图13 算法分类精度对比图

由图13可知,本章提出的WSN故障诊断模型可以准确判断大多数故障,在对故障分类时也可以准确的识别出不同的故障类型,在损坏故障和电源故障的识别达到了最高精度,对偏移故障、漂移故障和通信故障的识别略低于CNN算法,但综合训练时间、参数调节来看,本故障诊断模型更适用于WSN故障诊断。

4 结束语

本文对无线传感器网络故障分类算法进行了研究,首先提出了一种改进的深度森林算法,解决了随着级联层数的加深,每一层的输入维数都会不断增加,形成“维数灾难”的问题。再使用改进的随机森林算法实现对故障节点的检测,提出了一种分层式的故障诊断方法。通过实验证明了本故障诊断方法诊断准确率相比于单独的深度森林方法有了提升,达到了预期的效果。在WSN故障诊断的研究上,除了提升算法的检测与分类的准确度以外,还需要提高检测速度以及减少能耗,这也是未来在WSN故障诊断的研究中需要着重研究的方向。

猜你喜欢

级联故障诊断节点
比亚迪秦EV充电系统故障诊断与排除
基于MARC理论计算设计回收铀分离级联
基于神经网络的船舶电力系统故障诊断方法
实现级联形状回归方法对视线追踪
迈腾B81.8T起动机无法启动故障诊断分析
分区域的树型多链的无线传感器网络路由算法
基于点权的混合K-shell关键节点识别方法
酶级联反应放大策略用于灵敏检测酸性磷酸酶
浅谈基于P2P的网络教学系统节点信息收集算法
一种新型的级联型多电平逆变器研究