王建文,裴祥喜,崔炳德,王海暉
(1.河北水利電力學(xué)院 計算機科學(xué)與信息工程學(xué)院,河北 滄州 061001;2.武漢工程大學(xué) 計算機科學(xué)與工程學(xué)院,湖北 武漢 430205)
物聯(lián)網(wǎng)具有低功耗、低成本、無線通信與測量等優(yōu)點,被廣泛地應(yīng)用在智能農(nóng)業(yè)、目標跟蹤和環(huán)境監(jiān)測等領(lǐng)域中,可以獲取和跟蹤網(wǎng)絡(luò)中存在的對象信息和環(huán)境信息,用戶在任何環(huán)境、地點和時間內(nèi)都可以通過物聯(lián)網(wǎng)獲取相關(guān)數(shù)據(jù),因此,物聯(lián)網(wǎng)受到了人們極大的關(guān)注[1]。但是在存儲能力和計算能力方面物聯(lián)網(wǎng)存在一些劣勢,傳感器節(jié)點在工作過程中獲取的能量來自于電池,節(jié)點容易出現(xiàn)能量不足的現(xiàn)象進而出現(xiàn)失效的狀況[2]。物聯(lián)網(wǎng)屬于信息感知網(wǎng)絡(luò),局部數(shù)據(jù)的處理和傳輸結(jié)果都會受到傳感器節(jié)點失效的影響,甚至?xí)斐晌锫?lián)網(wǎng)崩潰失效。在上述背景下亟需對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記。
孫宇嫣[3]等人提出基于深度學(xué)習(xí)的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法,該算法在涌現(xiàn)原理的基礎(chǔ)上根據(jù)物聯(lián)網(wǎng)的邏輯連接和物理連接生成傳感器節(jié)點故障樣本,構(gòu)建節(jié)點故障診斷模型,根據(jù)診斷結(jié)果實現(xiàn)節(jié)點故障標記,該算法沒有對物聯(lián)網(wǎng)傳感器節(jié)點信息進行零均值歸一化處理,導(dǎo)致算法存在計算復(fù)雜度高的問題。姜少飛[4]等人提出基于XGBoost特征提取的傳感器節(jié)點故障標記算法,該算法利用XGBoost算法建立傳感器節(jié)點故障分裂樹,編碼處理故障樹中存在的葉子節(jié)點對應(yīng)的位置,獲得傳感器節(jié)點的故障信息,實現(xiàn)標記,該算法沒有對傳感器信息進行分類處理,存在標記范圍小的問題。除此之外,還有學(xué)者將SM-SVM方法應(yīng)用至故障標記中,通過提取傳感器節(jié)點信號的方均根值、偏度系數(shù)和峭度指標等特征,并對其進行歸一化處理,通過支持向量機實現(xiàn)傳感器節(jié)點的故障標記,該算法無法消除特征中存在的冗余數(shù)據(jù),導(dǎo)致算法的虛警率較高。
為了解決上述算法中存在的問題,提出基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法。
基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法利用BDPCA聚類方法對物聯(lián)網(wǎng)傳感器節(jié)點的信息進行聚類處理。
設(shè)采集的物聯(lián)網(wǎng)傳感器節(jié)點信息為M個N維的特征向量x=(x1,x2,…,xN)T,xk=(x1k,x2k,…,xMk)T,k=1,2,…,M,可用線性方程描述特征變量之間存在的關(guān)系。
采用BDPCA聚類方法對物聯(lián)網(wǎng)傳感器節(jié)點數(shù)據(jù)信息進行聚類處理的具體過程如下:
1)歸一化、零均值化處理原始傳感器節(jié)點數(shù)據(jù)特征向量xk=(x1k,x2k,…,xNk)T。采用BDPCA進行聚類處理的基礎(chǔ)條件是零均值化,特征量之間存在的差異可以通過歸一化處理得以消除[5]。
通過下述公式對物聯(lián)網(wǎng)傳感器節(jié)點信息進行零均值歸一化處理:
(1)
其中:
(2)
(3)
2)設(shè)C代表的是傳感器節(jié)點信息對應(yīng)的協(xié)方差矩陣,可通過下式計算得到:
(4)
獲取C對應(yīng)的特征方程Cv=λv,其中,v代表的是由特征值構(gòu)成的特征向量;λ代表的是C對應(yīng)的特征值。通過求解特征方程,獲得n個物聯(lián)網(wǎng)傳感器節(jié)點的特征值λi以及n個由特征值構(gòu)成的特征向量vi。按照從大到小的順序?qū)ξ锫?lián)網(wǎng)傳感器節(jié)點的特征值進行排序λ1≥λ2≥…≥λn,獲得對應(yīng)的物聯(lián)網(wǎng)傳感器節(jié)點信息的特征向量v1,v2,…,vn[6]。
3)基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法利用主元選取方法獲取物聯(lián)網(wǎng)傳感器節(jié)點信息的主元[7],并根據(jù)選取的主元對特征值和特征向量進行排序。
4)通過下式標準化處理序列中的前k個物聯(lián)網(wǎng)傳感器節(jié)點信息的特征向量:
(5)
式中,vbi即為標準化處理后的傳感器節(jié)點信息特征向量。
基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法,在粗糙集理論的基礎(chǔ)上結(jié)合邏輯運算和區(qū)分矩陣對不同類別的傳感器節(jié)點信息進行知識約簡處理,消除傳感器節(jié)點信息中存在的冗余屬性,初步對傳感器節(jié)點的故障進行定位,根據(jù)結(jié)果構(gòu)建傳感器節(jié)點的故障決策初表,對物聯(lián)網(wǎng)傳感器節(jié)點進行故障分類,在分類結(jié)果的基礎(chǔ)上構(gòu)建傳感器節(jié)點的故障決策復(fù)表。并利用貝葉斯決策過程確定物聯(lián)網(wǎng)傳感器節(jié)點的故障,生成最終的決策表,實現(xiàn)物聯(lián)網(wǎng)傳感器節(jié)點的故障標記。
基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法利用粗糙集理論對物聯(lián)網(wǎng)傳感器節(jié)點信息進行約簡的具體過程如下:
設(shè)S=(U,A,V,f)代表的是物聯(lián)網(wǎng)傳感器節(jié)點的決策表系統(tǒng),與物聯(lián)網(wǎng)傳感器節(jié)點故障診斷決策系統(tǒng)相對應(yīng),其中,U={x1,x2,…,xn}代表的是論域,在物聯(lián)網(wǎng)傳感器節(jié)點故障標定過程中與被診斷的傳感器節(jié)點構(gòu)成的對象集相對應(yīng);A=P∪D描述的是傳感器節(jié)點的屬性集合,其中,子集P={a[i]|i=1,2,…,k}代表的是傳感器節(jié)點的條件屬性集,a[i](xj)描述的是在故障征兆屬性a[i]中被診斷的傳感器節(jié)點xj對應(yīng)的值。子集D=bzxxzxf代表的是傳感器節(jié)點的決策屬性集。
設(shè)定區(qū)分矩陣CD,其表達式如下:
(6)
式中,{m[k]|m[k]∈P∧m[k](xj)}。
將布爾函數(shù)引入?yún)^(qū)分矩陣中,構(gòu)建區(qū)分函數(shù)△,用布爾變量a描述物聯(lián)網(wǎng)傳感器節(jié)點的屬性[8]。如果a(x,y)={a1,a2,…,ak}≠?,則用∑a(x,y)表示布爾函數(shù)a1∨a2∨…∨ak;如果a(x,y)=?,則將布爾常量的值設(shè)定為1,通過上述分析構(gòu)建區(qū)分函數(shù):
(7)
用貝葉斯決策過程確定物聯(lián)網(wǎng)傳感器節(jié)點故障的過程為:用[x]描述傳感器節(jié)點對象,并對其進行ri決策,用P(wj|[x])描述[x]的狀態(tài)為wj時對應(yīng)的概率,可通過下述全概率公式計算物聯(lián)網(wǎng)傳感器節(jié)點[x]在決策ri下的風(fēng)險條件R(ri|[x])[9]:
(8)
式中,λ(ri|wj)代表的是傳感器節(jié)點采取決策ri時產(chǎn)生的風(fēng)險。
用τ(x)描述物聯(lián)網(wǎng)傳感器節(jié)點的決策規(guī)則,用R描述在規(guī)則條件下物聯(lián)網(wǎng)傳感器節(jié)點的期望總體風(fēng)險,R(τ(x)|[x])描述在決策規(guī)則τ(x)下物聯(lián)網(wǎng)傳感器節(jié)點對應(yīng)的條件風(fēng)險率,在此基礎(chǔ)上,對物聯(lián)網(wǎng)傳感器節(jié)點的總體風(fēng)險R進行計算:
(9)
為了使物聯(lián)網(wǎng)傳感器節(jié)點的總體風(fēng)險最小,需要最小化每個傳感器節(jié)點在物聯(lián)網(wǎng)中的條件風(fēng)險率R(τ(x)|[x])。
如果存在兩種以及以上的決策條件可以最小化物聯(lián)網(wǎng)傳感器節(jié)點的條件風(fēng)險,需要根據(jù)實際標定條件選取決策條件[10]。
設(shè)u代表的是存在故障的傳感器節(jié)點,w代表的是傳感器節(jié)點的故障類型,利用w將傳感器節(jié)點劃分為存在故障的節(jié)點w′和不存在故障的節(jié)點w′′,并用正域pos(w)描述存在故障需要替換或維修的傳感器節(jié)點構(gòu)成的集合,用負域neg(w)描述存在故障但不需要處理的傳感器節(jié)點構(gòu)成的集合。
在故障表現(xiàn)[x]下每種傳感器節(jié)點都存在以下決策可能:
1)r1=[x]→pos(w);
2)r2=[x]→neg(w)。
令A(yù)={r1,r2},設(shè)λ(ri|w)代表實際存在故障的傳感器節(jié)點在ri決策條件下對應(yīng)的風(fēng)險,λ(ri|w′)代表實際沒有故障的傳感器被判定為存在故障時,在ri決策條件下對應(yīng)的風(fēng)險,P(w|[x])代表在故障現(xiàn)象[x]下傳感器節(jié)點不存在故障的概率。
可利用全概率公式計算在故障現(xiàn)象[x]下傳感器節(jié)點采取ri決策時對應(yīng)的條件風(fēng)險概率R(ri|[x]):
R(ri|[x])=λ(ri|w)+λ(ri|w′)
(10)
最小風(fēng)險規(guī)則可根據(jù)貝葉斯決策過程獲得:
1)r1:[x]→pos(w),R(r1|[x])≤R(r2|[x]);
2)r2:[x]→neg(w),R(r2|[x])≤R(r1|[x])。
如果在實際標定過程中無法確定物聯(lián)網(wǎng)傳感器節(jié)點的故障類型,此時對物聯(lián)網(wǎng)傳感器節(jié)點不標定的風(fēng)險小于對物聯(lián)網(wǎng)傳感器節(jié)點標定的風(fēng)險。針對正常不存在故障的傳感器節(jié)點,進行標定的風(fēng)險較小。
基于上述分析通過下述公式實現(xiàn)物聯(lián)網(wǎng)傳感器節(jié)點的標定:
aprα(w)=pos(w)∪P(w|[x])
(11)
式中,aprα(w)代表的是物聯(lián)網(wǎng)傳感器節(jié)點存在故障的概率,當概率較大時對其進行標記,實現(xiàn)物聯(lián)網(wǎng)傳感器節(jié)點故障標記。
為了驗證基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法的整體有效性,需要對基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法進行測試。
將虛警率作為指標對基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法(算法1)、基于深度學(xué)習(xí)的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法(算法2)、基于XGBoost特征提取的傳感器節(jié)點故障標記算法(算法3)和基于SM-SVM的傳感器節(jié)點故障標記算法(算法4)進行測試,虛警率越高,表明算法的節(jié)點故障標定結(jié)果誤差越大,不同算法的測試結(jié)果如圖1所示。
圖1 不同算法的虛警率
對圖1進行分析可知,采用算法1對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時,在多次實驗中的虛警率均在10%以下,采用算法2對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時,在多次實驗中的虛警率均在30%附近波動,采用算法3對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時,在多次實驗中的虛警率雖然低于算法2,但也高達25%。采用算法4對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時,獲得的虛警率最高,均在40%以上。對比算法1、算法2、算法3和算法4的測試結(jié)果可知,算法1的虛警率最低,表明采用該算法可精準地實現(xiàn)物聯(lián)網(wǎng)傳感器節(jié)點的故障標記,因為該算法在故障標記之前對物聯(lián)網(wǎng)傳感器節(jié)點信息進行了零均值歸一化,提高了信息的標準化,利用處理后的信息對節(jié)點故障進行標記,降低了算法的虛警率。
將計算復(fù)雜度作為指標,對上述算法進行測試,測試結(jié)果如表1所示。
表1 不同算法的計算復(fù)雜度
根據(jù)表1中的數(shù)據(jù)可知,在多次迭代中采用算法1對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時的復(fù)雜度均在1%左右,遠遠低于算法2、算法3和算法4對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記時的復(fù)雜度。因為算法1對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記之前,消除了傳感器信息特征向量之間存在的冗余數(shù)據(jù),減少了數(shù)據(jù)計算量,進而降低了算法對物聯(lián)網(wǎng)傳感器節(jié)點進行標定時的計算復(fù)雜度。
分別采用算法1、算法2、算法3和算法4對物聯(lián)網(wǎng)傳感器節(jié)點進行標記,對比不同算法的標記范圍,測試結(jié)果如圖2所示。
圖2 不同算法的標記范圍
圖2中的漸變區(qū)域面積越大表明算法的標記范圍越大,根據(jù)圖2可知,算法1獲取的漸變區(qū)域面積遠遠大于算法2、算法3和算法4獲取的漸變區(qū)域面積,表明算法1的標記范圍遠遠大于其他算法的標記范圍。因為算法1采用BDPCA聚類方法對物聯(lián)網(wǎng)傳感器節(jié)點信息進行了聚類處理,可以對不同類型的物聯(lián)網(wǎng)傳感器節(jié)點進行故障標記,進而提高了算法1的標記范圍。
當傳感器節(jié)點在物聯(lián)網(wǎng)中出現(xiàn)故障時,通過節(jié)點獲取的數(shù)據(jù)存在誤差,物聯(lián)網(wǎng)根據(jù)誤差數(shù)據(jù)會作出錯誤的決策和判斷,信息的準確性在高精度應(yīng)用領(lǐng)域中是極為重要的,因此,需要對物聯(lián)網(wǎng)傳感器節(jié)點進行故障標定。目前物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法存在虛警率高、計算復(fù)雜度高和標記范圍小的問題,提出基于BDPCA聚類的物聯(lián)網(wǎng)傳感器節(jié)點故障標記算法,對物聯(lián)網(wǎng)傳感器節(jié)點信息進行聚類處理,再通過貝葉斯決策實現(xiàn)故障節(jié)點的標記,解決了目前方法中存在的問題,為物聯(lián)網(wǎng)的安全穩(wěn)定運行奠定了基礎(chǔ)。