王建文,裴祥喜,崔炳德,王海暉
(1.河北水利電力學院 計算機科學與信息工程學院,河北 滄州 061001;2.武漢工程大學 計算機科學與工程學院,湖北 武漢 430205)
物聯網具有低功耗、低成本、無線通信與測量等優點,被廣泛地應用在智能農業、目標跟蹤和環境監測等領域中,可以獲取和跟蹤網絡中存在的對象信息和環境信息,用戶在任何環境、地點和時間內都可以通過物聯網獲取相關數據,因此,物聯網受到了人們極大的關注[1]。但是在存儲能力和計算能力方面物聯網存在一些劣勢,傳感器節點在工作過程中獲取的能量來自于電池,節點容易出現能量不足的現象進而出現失效的狀況[2]。物聯網屬于信息感知網絡,局部數據的處理和傳輸結果都會受到傳感器節點失效的影響,甚至會造成物聯網崩潰失效。在上述背景下亟需對物聯網傳感器節點進行故障標記。
孫宇嫣[3]等人提出基于深度學習的物聯網傳感器節點故障標記算法,該算法在涌現原理的基礎上根據物聯網的邏輯連接和物理連接生成傳感器節點故障樣本,構建節點故障診斷模型,根據診斷結果實現節點故障標記,該算法沒有對物聯網傳感器節點信息進行零均值歸一化處理,導致算法存在計算復雜度高的問題。姜少飛[4]等人提出基于XGBoost特征提取的傳感器節點故障標記算法,該算法利用XGBoost算法建立傳感器節點故障分裂樹,編碼處理故障樹中存在的葉子節點對應的位置,獲得傳感器節點的故障信息,實現標記,該算法沒有對傳感器信息進行分類處理,存在標記范圍小的問題。除此之外,還有學者將SM-SVM方法應用至故障標記中,通過提取傳感器節點信號的方均根值、偏度系數和峭度指標等特征,并對其進行歸一化處理,通過支持向量機實現傳感器節點的故障標記,該算法無法消除特征中存在的冗余數據,導致算法的虛警率較高。
為了解決上述算法中存在的問題,提出基于BDPCA聚類的物聯網傳感器節點故障標記算法。
基于BDPCA聚類的物聯網傳感器節點故障標記算法利用BDPCA聚類方法對物聯網傳感器節點的信息進行聚類處理。
設采集的物聯網傳感器節點信息為M個N維的特征向量x=(x1,x2,…,xN)T,xk=(x1k,x2k,…,xMk)T,k=1,2,…,M,可用線性方程描述特征變量之間存在的關系。
采用BDPCA聚類方法對物聯網傳感器節點數據信息進行聚類處理的具體過程如下:
1)歸一化、零均值化處理原始傳感器節點數據特征向量xk=(x1k,x2k,…,xNk)T。采用BDPCA進行聚類處理的基礎條件是零均值化,特征量之間存在的差異可以通過歸一化處理得以消除[5]。
通過下述公式對物聯網傳感器節點信息進行零均值歸一化處理:

(1)
其中:

(2)

(3)
2)設C代表的是傳感器節點信息對應的協方差矩陣,可通過下式計算得到:

(4)
獲取C對應的特征方程Cv=λv,其中,v代表的是由特征值構成的特征向量;λ代表的是C對應的特征值。通過求解特征方程,獲得n個物聯網傳感器節點的特征值λi以及n個由特征值構成的特征向量vi。按照從大到小的順序對物聯網傳感器節點的特征值進行排序λ1≥λ2≥…≥λn,獲得對應的物聯網傳感器節點信息的特征向量v1,v2,…,vn[6]。
3)基于BDPCA聚類的物聯網傳感器節點故障標記算法利用主元選取方法獲取物聯網傳感器節點信息的主元[7],并根據選取的主元對特征值和特征向量進行排序。
4)通過下式標準化處理序列中的前k個物聯網傳感器節點信息的特征向量:

(5)
式中,vbi即為標準化處理后的傳感器節點信息特征向量。
基于BDPCA聚類的物聯網傳感器節點故障標記算法,在粗糙集理論的基礎上結合邏輯運算和區分矩陣對不同類別的傳感器節點信息進行知識約簡處理,消除傳感器節點信息中存在的冗余屬性,初步對傳感器節點的故障進行定位,根據結果構建傳感器節點的故障決策初表,對物聯網傳感器節點進行故障分類,在分類結果的基礎上構建傳感器節點的故障決策復表。并利用貝葉斯決策過程確定物聯網傳感器節點的故障,生成最終的決策表,實現物聯網傳感器節點的故障標記。
基于BDPCA聚類的物聯網傳感器節點故障標記算法利用粗糙集理論對物聯網傳感器節點信息進行約簡的具體過程如下:
設S=(U,A,V,f)代表的是物聯網傳感器節點的決策表系統,與物聯網傳感器節點故障診斷決策系統相對應,其中,U={x1,x2,…,xn}代表的是論域,在物聯網傳感器節點故障標定過程中與被診斷的傳感器節點構成的對象集相對應;A=P∪D描述的是傳感器節點的屬性集合,其中,子集P={a[i]|i=1,2,…,k}代表的是傳感器節點的條件屬性集,a[i](xj)描述的是在故障征兆屬性a[i]中被診斷的傳感器節點xj對應的值。子集D=g0gggggg代表的是傳感器節點的決策屬性集。
設定區分矩陣CD,其表達式如下:

(6)
式中,{m[k]|m[k]∈P∧m[k](xj)}。
將布爾函數引入區分矩陣中,構建區分函數△,用布爾變量a描述物聯網傳感器節點的屬性[8]。如果a(x,y)={a1,a2,…,ak}≠?,則用∑a(x,y)表示布爾函數a1∨a2∨…∨ak;如果a(x,y)=?,則將布爾常量的值設定為1,通過上述分析構建區分函數:

(7)
用貝葉斯決策過程確定物聯網傳感器節點故障的過程為:用[x]描述傳感器節點對象,并對其進行ri決策,用P(wj|[x])描述[x]的狀態為wj時對應的概率,可通過下述全概率公式計算物聯網傳感器節點[x]在決策ri下的風險條件R(ri|[x])[9]:

(8)
式中,λ(ri|wj)代表的是傳感器節點采取決策ri時產生的風險。
用τ(x)描述物聯網傳感器節點的決策規則,用R描述在規則條件下物聯網傳感器節點的期望總體風險,R(τ(x)|[x])描述在決策規則τ(x)下物聯網傳感器節點對應的條件風險率,在此基礎上,對物聯網傳感器節點的總體風險R進行計算:

(9)
為了使物聯網傳感器節點的總體風險最小,需要最小化每個傳感器節點在物聯網中的條件風險率R(τ(x)|[x])。
如果存在兩種以及以上的決策條件可以最小化物聯網傳感器節點的條件風險,需要根據實際標定條件選取決策條件[10]。
設u代表的是存在故障的傳感器節點,w代表的是傳感器節點的故障類型,利用w將傳感器節點劃分為存在故障的節點w′和不存在故障的節點w′′,并用正域pos(w)描述存在故障需要替換或維修的傳感器節點構成的集合,用負域neg(w)描述存在故障但不需要處理的傳感器節點構成的集合。
在故障表現[x]下每種傳感器節點都存在以下決策可能:
1)r1=[x]→pos(w);
2)r2=[x]→neg(w)。
令A={r1,r2},設λ(ri|w)代表實際存在故障的傳感器節點在ri決策條件下對應的風險,λ(ri|w′)代表實際沒有故障的傳感器被判定為存在故障時,在ri決策條件下對應的風險,P(w|[x])代表在故障現象[x]下傳感器節點不存在故障的概率。
可利用全概率公式計算在故障現象[x]下傳感器節點采取ri決策時對應的條件風險概率R(ri|[x]):
R(ri|[x])=λ(ri|w)+λ(ri|w′)
(10)
最小風險規則可根據貝葉斯決策過程獲得:
1)r1:[x]→pos(w),R(r1|[x])≤R(r2|[x]);
2)r2:[x]→neg(w),R(r2|[x])≤R(r1|[x])。
如果在實際標定過程中無法確定物聯網傳感器節點的故障類型,此時對物聯網傳感器節點不標定的風險小于對物聯網傳感器節點標定的風險。針對正常不存在故障的傳感器節點,進行標定的風險較小。
基于上述分析通過下述公式實現物聯網傳感器節點的標定:
aprα(w)=pos(w)∪P(w|[x])
(11)
式中,aprα(w)代表的是物聯網傳感器節點存在故障的概率,當概率較大時對其進行標記,實現物聯網傳感器節點故障標記。
為了驗證基于BDPCA聚類的物聯網傳感器節點故障標記算法的整體有效性,需要對基于BDPCA聚類的物聯網傳感器節點故障標記算法進行測試。
將虛警率作為指標對基于BDPCA聚類的物聯網傳感器節點故障標記算法(算法1)、基于深度學習的物聯網傳感器節點故障標記算法(算法2)、基于XGBoost特征提取的傳感器節點故障標記算法(算法3)和基于SM-SVM的傳感器節點故障標記算法(算法4)進行測試,虛警率越高,表明算法的節點故障標定結果誤差越大,不同算法的測試結果如圖1所示。

圖1 不同算法的虛警率
對圖1進行分析可知,采用算法1對物聯網傳感器節點進行故障標記時,在多次實驗中的虛警率均在10%以下,采用算法2對物聯網傳感器節點進行故障標記時,在多次實驗中的虛警率均在30%附近波動,采用算法3對物聯網傳感器節點進行故障標記時,在多次實驗中的虛警率雖然低于算法2,但也高達25%。采用算法4對物聯網傳感器節點進行故障標記時,獲得的虛警率最高,均在40%以上。對比算法1、算法2、算法3和算法4的測試結果可知,算法1的虛警率最低,表明采用該算法可精準地實現物聯網傳感器節點的故障標記,因為該算法在故障標記之前對物聯網傳感器節點信息進行了零均值歸一化,提高了信息的標準化,利用處理后的信息對節點故障進行標記,降低了算法的虛警率。
將計算復雜度作為指標,對上述算法進行測試,測試結果如表1所示。

表1 不同算法的計算復雜度
根據表1中的數據可知,在多次迭代中采用算法1對物聯網傳感器節點進行故障標記時的復雜度均在1%左右,遠遠低于算法2、算法3和算法4對物聯網傳感器節點進行故障標記時的復雜度。因為算法1對物聯網傳感器節點進行故障標記之前,消除了傳感器信息特征向量之間存在的冗余數據,減少了數據計算量,進而降低了算法對物聯網傳感器節點進行標定時的計算復雜度。
分別采用算法1、算法2、算法3和算法4對物聯網傳感器節點進行標記,對比不同算法的標記范圍,測試結果如圖2所示。

圖2 不同算法的標記范圍
圖2中的漸變區域面積越大表明算法的標記范圍越大,根據圖2可知,算法1獲取的漸變區域面積遠遠大于算法2、算法3和算法4獲取的漸變區域面積,表明算法1的標記范圍遠遠大于其他算法的標記范圍。因為算法1采用BDPCA聚類方法對物聯網傳感器節點信息進行了聚類處理,可以對不同類型的物聯網傳感器節點進行故障標記,進而提高了算法1的標記范圍。
當傳感器節點在物聯網中出現故障時,通過節點獲取的數據存在誤差,物聯網根據誤差數據會作出錯誤的決策和判斷,信息的準確性在高精度應用領域中是極為重要的,因此,需要對物聯網傳感器節點進行故障標定。目前物聯網傳感器節點故障標記算法存在虛警率高、計算復雜度高和標記范圍小的問題,提出基于BDPCA聚類的物聯網傳感器節點故障標記算法,對物聯網傳感器節點信息進行聚類處理,再通過貝葉斯決策實現故障節點的標記,解決了目前方法中存在的問題,為物聯網的安全穩定運行奠定了基礎。