楊明潤,郭星鋒,黃元峰,陳柄全
(武漢工程大學 電氣信息系,湖北 武漢 430000)
利用無線傳感器網絡(Wireless Sensor Network,WSN)對大面積水域進行檢測時,通常會部署大量傳感器節點來感知采集大量的水質數據,這對水質數據異常檢測算法的性能提出了更高的要求。文獻[1]提出了基于局部密度分析的非周期水質異常檢測方法,利用水質時序數據的空間距離關系來準確判斷數據是否存在異常。文獻[2]提出了一種基于概率密度補償的改進支持向量機(Support Vector Machines,SVM)異常水質檢測算法,通過密度特征思想優化SVM,更有利于后續的數據分類。文獻[3]提出了基于自回歸(Autoregressive,AR)模型和孤立森林算法的水質異常數據檢測方法,通過AR 模型實現水質時間序列數據的高精度預測,并通過孤立森林進行后續的異常檢測,能夠實現大量數據的異常實時檢測。文獻[4]針對上述問題提出了基于向量自回歸(Vector Autoregression,VAR)模型的水質異常檢測算法,通過VAR 算法進行數據多特征融合,檢測精度相較于AR 模型得到了較大提升。文獻[5]提出了采用人工神經網絡預測水質變化,并通過回歸分析建立水質參數模型,通過比對神經網絡的預測值與模型中數據的分布特點來判斷水質異常數據。文獻[6]提出了多元數據融合突發水質異常事件預估方法,通過融合算法隨水質數據進行兩兩融合,減少了數據傳輸量。文獻[7]提出了多傳感器數據融合的水質檢測方法,通過異類數據和同類數據融合算法將數據進行實時融合,再對融合數據進行最終的判定。文獻[8]提出了基于動態關聯矩陣的水質異常檢測方法,通過動態時間規整算法對多維數據進行特征提取,再借助隨機森林算法進行后續的異常水質數據檢測。文獻[9]提出了基于主成分分析和SVM 的數據異常檢測算法,通過主成分分析對數據進行降維處理,再利用SVM 進行異常檢測。
上述算法對水質數據進行數據融合時的壓縮比不高,數據異常特征保留不完整,而且異常檢測模型訓練集不具代表性。在上述研究的基礎上,本文提出了一種基于數據壓縮的WSN 異常檢測算法。該算法通過小波變換將數據分為低頻分量和高頻分量,利用壓縮感知對低頻分量進行壓縮,保留高頻分量,將高頻分量作為異常檢測階段模型的訓練集。
在大面積待測水域中,通常會部署成千上萬個水質傳感器節點來感知采集水質參數,但是同一傳感器在時間序列上采集到的水質數據存在大量冗余,使得水質數據在傳輸過程中會大量消耗節點能量,降低檢測效率[10]。針對該問題,本文提出了基于小波變換的壓縮感知(WT-CS)與SVM 相結合的分級式水質異常數據檢測算法。算法分為兩個階段,第一階段是水質數據壓縮階段,第二階段是水質數據異常檢測階段。算法具體流程如圖1 所示。

圖1 基于WT-CS 與SVM 相結合的分級式水質異常數據檢測算法流程
假設M個傳感器節點在N個時刻內采集到的初始水質數據為SM×N,利用db1 小波對水質數據SM×N進行多重分解。
(1)采用Mallat 算法通過低頻和高頻系數將水質數據在db1 小波域內分解,小波低頻系數和高頻系數為:

式中:Sα,L(n)和Sα,H(n)分別是db1 小波函數對應的低通濾波系數和高通濾波,α為分解層數。
將初始水質數據分別與低頻系數和高頻系數進行計算后,得到一個低頻分量和一個高頻分量:

如果要進行下一步分解,則需要通過第一層低頻分量再一次與低頻系數和高頻系數進行計算。經過三層小波分解后,初始水質數據集可以表示為:

在三重小波分解后,可以將水質數據分為包含絕大部分正常水質數據信息的低頻分量和包含絕大部分水質數據異常特征的高頻分量。此時的低頻分量是稀疏表示的,即:

通過壓縮感知對小波變換后的低頻分量L3(n)進行二次壓縮,選取合適的觀測矩陣φ對L3(n)進行計算,得到壓縮后的測量值y為:

二次壓縮后的數據由3 個高頻分量和1 個壓縮后的低頻分量共同組成,其表現形式為:

利用SVM 的超平面對水質數據進行劃分:

尋找最優超平面對數據進行最優劃分的過程實質上就是對目標函數進行二次優化,即:

式中:ζi是松弛變量(ζi≥i=1,2,…,l),c是懲罰系數。引入拉格朗日乘αi(i=1,2,3,…,l)得到對偶形式為:

將后續的待測樣本導入SVM 模型中進行訓練,通過計算來判斷數據的所屬類別。SVM 模型中一般選擇RBF 核函數,即:

此時得到算法的決策函數為:

由決策函數確定邊界,再通過計算數據點到邊界線的距離進行類別劃分。
一般而言,機器學習算法的評價指標就是精度。由于WSN 中異常數據和正常數據所占比例極不平衡,因此精度不適合作為異常檢測的評價指標[11]。在數據異常檢測中,數據集一般被分為正常數據(負類)和異常數據(正類)兩類,則檢測結果及樣本實際所屬類別為真正例(True Positive,TP)、假正例(False Positive,FP)、真反例(True Negative,TN)、反假例(False Negative,FN)。將召回率(True Positive Rate,TPR)和誤報率(False Positive Rate,FPR)作為算法性能的評價指標,召回率是被正常檢測出來的異常數據的個數與實際異常數據樣本的個數之比,誤報率是被算法誤判為異常的正常數據的個數與正常數據樣本總數之比,即:

本次實驗采用太湖水體理化監測數據,該數據集包含了16 種水質參數。為了增加實驗數據中數據的多樣性,向數據集中人為添加5%的異常數據,添加的異常數據類型包括噪聲數據、電池故障數據以及節點短路數據。
為了驗證基于WT-CS 與SVM 相結合的分級式水質異常數據檢測算法的性能,在Win10 系統中通過Matlab2019a 軟件進行了算法的仿真實驗與分析。同時為了驗證本文算法(以下簡稱WT-CS-SVM)的有效性,還選取了基于主成分分析的異常數據檢測算法(以下簡稱PAC-SVM)以及支持向量機算法(以下簡稱SVM)在公開數據集上進行對比仿真。
基于太湖水質數據,對WT-CS-SVM、PACSVM 和SVM 算法進行實驗仿真,并將檢測時間、檢測率和誤報率作為衡量指標評價算法性能的指標,結果如表1 所示。

表1 太湖水質數據下的算法性能對比
實驗結果表明,本文算法相較于其他兩種對比算法,在保證較高檢測率的同時,實現了大量水質數據的實時檢測。為了避免實驗的偶然性,使實驗結果更具有說服力,對3 組算法循環運行100 次,取10 次結果為一組,對其求均值。3 種算法的檢測率和誤報率均值如圖2、圖3 所示。

圖2 2006—2015 年太湖水質檢測率平均值

圖3 2007—2015 年太湖水質誤報率平均值
為了更直觀地體現3 種算法的檢測性能,將檢測率和誤報率的平均值折線轉化成對應值的分布區間,使各個性能指標的對比更為明顯,如表2 所示。
由表2 可知,WT-CS-SVM 分級式水質異常數據檢測算法檢測時間更短、檢測率更高,保證水質異常數據檢測準確率的同時實現了對大量水質數據檢測的實時性,檢測性能更優。

表2 3 種算法檢測率平均值取值區間
基于數據壓縮的水質異常檢測算法首先通過db1 小波對初始水質數據進行三重分解,得到包含絕大部分數據信息的低頻系數和包含異常數據的高頻系數,其次利用壓縮感知對低頻系數進行二次壓縮,將處理后的水質數據作為訓練集導入SVM 模型中進行訓練,得到最終的水質數據檢測模型。雖然算法具有良好的壓縮和異常檢測性能,但是受傳感器自身因素的限制,小波壓縮算法必須是輕量級,選擇合適的波形尤為重要,后續將會對該問題進行深入研究。