顧國慶,李曉輝
(華北計算技術(shù)研究所,北京 100083)
無線傳感網(wǎng)WSN(Wireless Sensor Network)是由大量邊緣傳感節(jié)點和少量匯聚節(jié)點組成的一種計算機網(wǎng)絡(luò),傳感節(jié)點相互協(xié)作監(jiān)控某一區(qū)域不同位置的環(huán)境狀況并將采集到的實時數(shù)據(jù)上傳至匯聚節(jié)點。這些傳感節(jié)點廣泛分布在一些監(jiān)管困難甚至長期無人監(jiān)管的惡劣環(huán)境中,通常采用自攜式電池供電,因此如何減少傳感節(jié)點能耗、延長傳感節(jié)點壽命成為該行業(yè)的一大痛點[1-2]。
目前國內(nèi)外學(xué)者主要從精簡數(shù)據(jù)傳輸方面提出了一些解決方案,Lazaridis等人[3]在2003年提出了一種有界的傳輸數(shù)據(jù)壓縮方案,同年又提出了一種使用恒定值作為預(yù)測值的預(yù)測方案;Lim等人[4]在2005年提出了2種不同的自適應(yīng)線性預(yù)測模型;Santini等人[5]在2006年提出了最小均方差自適應(yīng)預(yù)測模型;Wei等人[6]在2011年提出了一種結(jié)合卡爾曼濾波和灰色模型兩者的預(yù)測方案;Razzaque等人[7]在2013年提出了3類數(shù)據(jù)預(yù)測方法,隨機方式[8-10]、時間序列方式[11-12]和復(fù)雜算法方式[13];Raza等人[14]在2016年提出了包括wake-up receiver和專用感應(yīng)設(shè)備的節(jié)能傳感器網(wǎng)絡(luò)模型;同年Tan等人[15]提出了基于前N項數(shù)據(jù)進行分層的LMS模型;余修武等人[16]在2017年提出了一種基于分簇的自適應(yīng)的預(yù)測加權(quán)數(shù)據(jù)融合算法;魏煜等人[17]在2018年提出了基于線性預(yù)測模型和HeartBeat機制的LRPH算法來抵制丟包帶來的影響,同時提出了LRSH算法來優(yōu)化LRPH算法,減少冗余信息。
在實際監(jiān)測環(huán)境中,傳感節(jié)點有可能采集到異常數(shù)據(jù),而大多數(shù)現(xiàn)有的精簡數(shù)據(jù)傳輸方案會將異常數(shù)據(jù)視為正常數(shù)據(jù),難以避免異常數(shù)據(jù)對模型預(yù)測帶來的負(fù)面影響。因此,本文提出一種基于箱線圖異常檢測機制的指數(shù)平滑預(yù)測模型,該模型創(chuàng)新性地引入箱線圖異常檢測機制過濾異常點,同時為了更好地區(qū)分異常點和突發(fā)事件,引入短期環(huán)比作為判定依據(jù),最終有效過濾掉異常數(shù)據(jù),提高數(shù)據(jù)傳輸?shù)木喅潭群皖A(yù)測準(zhǔn)確度,達到傳感節(jié)點節(jié)能降耗的效果。
指數(shù)加權(quán)平滑預(yù)測模型[18]是一種特殊的加權(quán)移動平均方法,其對不同時間觀察值賦予不等的指數(shù)權(quán)重,距離預(yù)測值越近的觀察值被賦予的指數(shù)權(quán)重越大且呈指數(shù)變化。目前該模型在無線傳感網(wǎng)數(shù)據(jù)預(yù)測方面具有易實現(xiàn)、準(zhǔn)確度高以及低消耗等優(yōu)勢,Gaura等人[19]在2013年提出的L-SIP預(yù)測模型正是采用指數(shù)加權(quán)平滑濾波方式進行線性預(yù)測。
該模型存在3種具體表現(xiàn)形式:1)一次指數(shù)加權(quán)平滑針對沒有趨勢和季節(jié)性序列;2)雙指數(shù)加權(quán)平滑針對存在趨勢但沒有季節(jié)性序列;3)三次指數(shù)加權(quán)平滑針對存在趨勢且季節(jié)性序列。本文實驗采用北京市密云區(qū)某監(jiān)測點全天PM10值和北京市東四某監(jiān)測點全天AQI值作為實驗數(shù)據(jù),PM10和AQI序列存在趨勢但無季節(jié)性,因此采用雙指數(shù)加權(quán)平滑法作為預(yù)測模型最為適宜。
雙指數(shù)加權(quán)平滑模型是從一次指數(shù)加權(quán)平滑模型演變而來,一次指數(shù)平滑計算公式為:
(1)
(2)
可以看出權(quán)重值根據(jù)距離由近到遠(yuǎn)呈指數(shù)遞減規(guī)律,雙指數(shù)加權(quán)平滑模型是在一次指數(shù)加權(quán)平滑模型基礎(chǔ)上將趨勢作為一個額外考量,保留了趨勢的詳細(xì)信息。雙指數(shù)加權(quán)平滑計算公式為:
(3)
xt+T=AT+BTT
(4)
其中:
(5)
本文提出的預(yù)測模型是在雙指數(shù)加權(quán)平滑模型基礎(chǔ)上,引入箱線圖異常檢測機制處理異常數(shù)據(jù),同時通過短期環(huán)比判定突發(fā)事件,最終將結(jié)果匯聚到匯聚節(jié)點。該算法的數(shù)據(jù)處理流程如圖1所示,其大致可以劃分成4個階段。
圖1 數(shù)據(jù)處理流程
1)在數(shù)據(jù)采集初始化階段,傳感節(jié)點會以一定頻率采集數(shù)據(jù),如果傳感節(jié)點正處于開機狀態(tài),那么會初始化傳感節(jié)點和匯聚節(jié)點的預(yù)測模型;如果系統(tǒng)處于正常工作狀態(tài),則會跳過模型初始化的過程直接進入到下一個階段。
2)在異常值檢測階段,傳感節(jié)點采集到的檢測值會與雙指數(shù)加權(quán)平滑模型進行比較,如果差值在可接受范圍內(nèi),則直接跳過數(shù)據(jù)突發(fā)事件判定階段,傳感節(jié)點不上傳數(shù)據(jù),匯聚節(jié)點采用預(yù)測值作為監(jiān)測結(jié)果;如果預(yù)測值被判定為疑似異常點,則將疑似異常值按照隊列的順序存入滑動窗口,滑動窗口是在傳感節(jié)點開辟的一塊內(nèi)存空間,用來存儲連續(xù)疑似異常點。
3)在突發(fā)事件判定階段,當(dāng)滑動窗口存滿數(shù)據(jù)時,取出滑動窗口所有值進行短期環(huán)比判斷是否為集中或趨勢數(shù)據(jù)集,如果是,則將該數(shù)據(jù)集全部上傳至匯聚節(jié)點,修正模型參數(shù);如果不是,則清空滑動窗口數(shù)據(jù),傳感節(jié)點不上傳數(shù)據(jù),同時匯聚節(jié)點采用預(yù)測值作為監(jiān)測結(jié)果。
4)在數(shù)據(jù)匯聚階段,匯聚節(jié)點同步傳感節(jié)點信息,如果匯聚節(jié)點接收到傳感節(jié)點上傳的數(shù)據(jù),則采用上傳數(shù)據(jù)作為監(jiān)測結(jié)果,否則采用模型預(yù)測值作為監(jiān)測結(jié)果。
2.2.1 確定箱線圖參數(shù)
箱線圖[19]是一種用作顯示一組數(shù)據(jù)分散情況的統(tǒng)計圖,用于反映數(shù)據(jù)分布特征。箱線圖對異常數(shù)據(jù)的判定原理如下圖2所示:
圖2 箱線圖異常數(shù)據(jù)判定
Q1為一組數(shù)據(jù)的第一四分位點,Xm為中位數(shù),Q3為第三四分位點,IQR為Q3與Q1兩數(shù)之差。當(dāng)檢測值小于Q1-1.5 IQR或大于Q3+1.5 IQR時,認(rèn)為該值屬于溫和異常值;當(dāng)檢測值小于Q1-3 IQR或大于Q3+3 IQR時,認(rèn)為該值屬于極端異常值。異常值區(qū)邊界的設(shè)定基于經(jīng)驗判斷,大量實踐表明該方法在處理異常數(shù)據(jù)方面性能表現(xiàn)優(yōu)異。一方面,箱線圖繪制僅依靠實際數(shù)據(jù),不需要事先假定數(shù)據(jù)服從特定的分布形式,沒有對數(shù)據(jù)做任何限制性要求,它真實直觀反映數(shù)據(jù)變化趨勢本來面貌;另一方面,箱線圖判斷異常值的標(biāo)準(zhǔn)以四分位數(shù)和四分位距為基礎(chǔ),四分位數(shù)具有一定耐抗性,多達25%的數(shù)據(jù)可以變得任意遠(yuǎn)而不會很大干擾四分位數(shù),所以異常值不會對這個標(biāo)準(zhǔn)施加影響,識別結(jié)果更加客觀。
2.2.2 異常檢測過程
根據(jù)箱線圖異常檢測機制,當(dāng)遇到陡然變化的數(shù)值時,異常檢測系統(tǒng)將其判定為異常點,同時該數(shù)據(jù)被傳感節(jié)點忽略不會上傳至匯聚節(jié)點,以此類推,下一個監(jiān)測數(shù)據(jù)乃至該突發(fā)事件產(chǎn)生的一批監(jiān)測數(shù)據(jù)都會被忽略,無法上傳到匯聚節(jié)點。此時就會產(chǎn)生新的問題:異常點和突發(fā)事件難以被區(qū)分開,從而突發(fā)事件可能會被系統(tǒng)視為連續(xù)異常點被過濾掉。對于任一突發(fā)事件,其必定會持續(xù)一段時間,在這段時間內(nèi)必定會產(chǎn)生一批突發(fā)事件下的正常數(shù)據(jù),如果能檢測出這批數(shù)據(jù)本身具備趨勢性或相對集中,就能判定出該批數(shù)據(jù)是某一事件產(chǎn)生的而非異常點。
本文通過引入滑動窗口暫存疑似突發(fā)事件的數(shù)據(jù)集,箱線圖異常檢測機制算法原理如下:
1:N←slide window size
2:X[N]←store exception data
3:while(true)
4:for(inti=0;i 5:if(exception data detected) 6:X[i]←exception data 7:i←i+1 8:if(iequalN) 9:break 10:if(no exception data detected) 11:cleanX 12:i←0 13:if(verifyXis an emergency) 14:reportXto sink node 15:modify model parameters 在傳感節(jié)點開辟一塊內(nèi)存作為滑動窗口X用來存儲疑似異常點,滑動窗口大小為N。當(dāng)監(jiān)測數(shù)據(jù)為疑似異常點時,將該數(shù)據(jù)按照隊列順序存入滑動窗口X中。如果滑動窗口X數(shù)據(jù)存滿,則說明采集到的疑似異常數(shù)據(jù)量已經(jīng)滿足突發(fā)事件最小數(shù)據(jù)量,只需判斷這批數(shù)據(jù)是否是突發(fā)事件,如果這批數(shù)據(jù)被判定為突發(fā)事件,則將這批數(shù)據(jù)上報至匯聚節(jié)點同時修改指數(shù)平滑加權(quán)模型;如果滑動窗口未存滿時,檢測到的數(shù)據(jù)不是疑似異常數(shù)據(jù),則清空滑動窗口并將指針i重置為0。 2.3.1 確定短期環(huán)比參數(shù) 本文通過短期環(huán)比(SS)來判斷一組數(shù)據(jù)是否具備趨勢性或相對集中,如公式(6)所示: (6) 其中,threshold是動態(tài)閾值,根據(jù)實際監(jiān)測環(huán)境設(shè)置,avg為這一組數(shù)的平均值,count_num是可接受超過動態(tài)閾值的數(shù)目,如果判定條件較寬松,count_num可設(shè)置為較大值;如果判定條件嚴(yán)格,count_num則需要設(shè)置為較小值,其設(shè)值范圍在0~N之間。通過與動態(tài)閾值的比較,就可以判斷出一組數(shù)據(jù)是否具備趨勢性或相對集中。 2.3.2 突發(fā)事件判定過程 短期環(huán)比判定突發(fā)事件算法原理如下: 1:X[N]← short term chain data sets 2:threshold ← set manually according to the actual situation 3:count_num ← number of acceptable exceeding dynamic threshold 4:sum ← 0 , avg ← 0 5:temp_num ← number of exceeding dynamic threshold,default is 0 6:for(inti=0;i 7:sum+=X[i] 8:avg = sum/N 9:for(inti=0 ;i 10:if(|X[i]-avg|>threshold) 11:temp_num +=1 12:if(temp_num <= count_num) 13:this data set is normal 14:else 15:this data set is not normal 當(dāng)滑動窗口存滿數(shù)據(jù)觸發(fā)了突發(fā)事件時,通過短期環(huán)比驗證該數(shù)據(jù)集是否具備相對集中或具備趨勢性的特征。具體流程如下: 1)取出滑動窗口的所有數(shù)據(jù)集,統(tǒng)計所有數(shù)據(jù)總和sum并計算出平均值avg; 2)依次遍歷數(shù)據(jù)集的每個數(shù)據(jù)與平均值avg進行比較,若兩者差值大于動態(tài)閾值threshold,超過動態(tài)閾值數(shù)目temp_num增加1; 3)遍歷結(jié)束后,若temp_num小于等于count_num,則可以判定該數(shù)據(jù)集為突發(fā)事件而非異常數(shù)據(jù)。傳感節(jié)點此時會將該數(shù)據(jù)集全部上傳給匯聚節(jié)點,并同步更新預(yù)測模型參數(shù)。 本次實驗使用Java語言實現(xiàn),集成開發(fā)環(huán)境是IntelliJ IDEA,采用MATLAB繪制圖形。硬件配置:Intel(R)Core(TM)i7-3770處理器、3.4 GHz最大主頻、16 GB運行內(nèi)存、1 TB磁盤大小、64位Win7操作系統(tǒng)。 本次實驗數(shù)據(jù)集采用北京市密云區(qū)某監(jiān)測點全天PM10監(jiān)測值,為進一步驗證模型的魯棒性和普適性,又采用北京市東四某檢測點全天AQI監(jiān)測值不同地點和指標(biāo)的數(shù)據(jù)作為對比實驗數(shù)據(jù)集,儀器每隔30 s采集一次實驗數(shù)據(jù)并記錄,全天共產(chǎn)生2880個離散數(shù)據(jù)點。 為了便于研究異常數(shù)據(jù)對預(yù)測模型的影響,在原始數(shù)據(jù)集引入50個異常邊緣尖銳點,首先不采用箱線圖法異常檢測機制,僅使用雙指數(shù)加權(quán)平滑模型進行預(yù)測。經(jīng)過多次粗細(xì)粒度劃分,平滑指數(shù)設(shè)置為0.5為最佳,誤差閾值設(shè)置為4,考慮到傳感節(jié)點計算能力有限且距目標(biāo)點太遠(yuǎn)的數(shù)據(jù)對目標(biāo)點影響較小,所以本實驗采用目標(biāo)點前8位數(shù)據(jù)作為預(yù)測模型數(shù)據(jù)集。其預(yù)測情況如圖3所示(其中圓圈圈出的尖銳點為部分引入異常點,矩形框出的變化劇烈數(shù)據(jù)集為部分突發(fā)事件),通過分析圖3可以得出如下結(jié)論。 1)預(yù)測模型對邊緣尖銳點或劇烈變化數(shù)據(jù)集擬合程度高,反而對變化不大的平穩(wěn)數(shù)據(jù)集擬合出現(xiàn)少許波動。從本質(zhì)上來說,前者并非擬合而來,反而是擬合偏差超過誤差范圍,傳感節(jié)點直接上報數(shù)據(jù),匯聚節(jié)點直接采用上報數(shù)據(jù),從而出現(xiàn)了邊緣尖銳點擬合度高,平穩(wěn)數(shù)據(jù)集擬合度低的反?,F(xiàn)象。 2)通過結(jié)論1分析可知,傳感節(jié)點上報往往發(fā)生在監(jiān)測結(jié)果為邊緣尖銳點或劇烈變化數(shù)據(jù)集上,且通常會出現(xiàn)拖尾現(xiàn)象,即邊緣尖銳點隨后的一段數(shù)據(jù)也會出現(xiàn)上報,這是因為邊緣尖銳點作為預(yù)測模型參數(shù)直接影響了模型對隨后數(shù)據(jù)的預(yù)測。將預(yù)測情況進一步繪制成表1。 表1 各誤差程度具體分布情況(無異常檢測) 采用本文提出的基于箱線圖異常檢測的二次指數(shù)加權(quán)平滑算法進行預(yù)測,結(jié)果如圖4所示。 圖4 引入異常檢測機制模型預(yù)測結(jié)果 將預(yù)測情況進一步繪制成表2。 表2 各誤差程度具體分布情況(異常檢測) 相比于普通無異常處理機制的預(yù)測模型,有異常處理機制的預(yù)測模型無誤差預(yù)測率提高了2.15個百分點,誤差值為1預(yù)測率提高了6.08個百分點,誤差值為2預(yù)測率提高了0.17個百分點,誤差值為3預(yù)測率降低了3.16個百分點,誤差值為4預(yù)測率降低了7.12個百分點,上報率降低了5.8個百分點。通過圖4標(biāo)出的部分圓圈可知,原始數(shù)據(jù)集大多數(shù)邊緣尖銳異常點通過異常檢測機制或判定為異常點,或經(jīng)過平滑處理,同時通過短期環(huán)比判定機制較好區(qū)分開邊緣尖銳異常點和突發(fā)事件,從而預(yù)測并上報了突發(fā)事件完整數(shù)據(jù)。對異常點的具體預(yù)測情況如圖5所示。 圖5 異常點預(yù)測結(jié)果 該模型成功過濾掉48個異常點,有效率高達96%,同時僅將6個正常點誤判成異常點,陽性誤判率僅為0.21%,從整體數(shù)據(jù)可以看出,引入異常檢測機制有效消減了異常點帶來的負(fù)面影響,從而顯著提高了數(shù)據(jù)精簡傳輸率和預(yù)測精準(zhǔn)度。 為了進一步驗證基于箱線圖法異常檢測機制的雙指數(shù)加權(quán)平滑預(yù)測模型對異常點和突發(fā)事件的處理效果,本文進行不同數(shù)據(jù)集下的對照實驗,對照實驗數(shù)據(jù)為北京市東四某采集點全天AQI的監(jiān)測值,傳感節(jié)點每隔30 s采集一次數(shù)據(jù),全天共有2880個離散點。為了進一步研究異常數(shù)據(jù)對預(yù)測模型的影響,在原始數(shù)據(jù)集引入100個邊緣尖銳異常點,未采用異常檢測機制的預(yù)測情況如圖6所示。 圖6 無異常檢測機制預(yù)測模型結(jié)果(對照組) 將預(yù)測情況進一步繪制成表3。 表3 對照組各誤差程度具體分布情況(無異常檢測) 由于沒有排除異常的檢測機制,當(dāng)檢測到異常數(shù)據(jù)時,預(yù)測模型會將該異常數(shù)據(jù)視為正常數(shù)據(jù),同時將該異常數(shù)據(jù)對比預(yù)測值,發(fā)現(xiàn)兩者差值遠(yuǎn)遠(yuǎn)超出了誤差閾值,此情況不符合精簡傳輸策略,所以傳感節(jié)點會將此異常數(shù)據(jù)連同預(yù)測模型所需的前面N-1個數(shù)據(jù)一起上傳同步匯聚節(jié)點模型參數(shù)。由于異常數(shù)據(jù)并不會持久存在,在出現(xiàn)個別次數(shù)后又會回落到正常的檢測范圍,此時預(yù)測模型由于受到異常數(shù)據(jù)影響反而會使正常數(shù)據(jù)與預(yù)測值超出誤差閾值,此時又會出現(xiàn)上傳情況。 該實驗監(jiān)測到的AQI數(shù)據(jù)較集中,連續(xù)數(shù)據(jù)差值一般不超過1,所以動態(tài)閾值設(shè)置為1,經(jīng)過2輪粗細(xì)粒度劃分,平滑系數(shù)為0.4時表現(xiàn)最佳。其平穩(wěn)階段的數(shù)據(jù)浮動范圍在2以內(nèi),此時模型更傾向于預(yù)測成一直線。采用本文提出的基于箱線圖異常檢測的雙指數(shù)加權(quán)平滑算法進行預(yù)測,結(jié)果如圖7所示。 圖7 引入異常檢測機制預(yù)測模型結(jié)果(對照組) 將預(yù)測情況進一步繪制成表4。 表4 對照組各誤差程度具體分布情況(異常檢測) 相比于普通無異常處理機制的預(yù)測模型,有異常處理機制的預(yù)測模型無誤差預(yù)測率提高了2.02個百分點,誤差值為1預(yù)測率降低了5.8%個百分點。對異常點的具體預(yù)測情況如圖8所示。 圖8 異常點預(yù)測結(jié)果(對照組) 該模型成功過濾掉98個異常點,有效率高達98%,同時僅將11個正常點誤判成異常點,陽性誤判率僅為0.38%,通過對照實驗組進一步驗證了引入異常檢測機制在不同數(shù)據(jù)集、平滑系數(shù)變動和不同動態(tài)閾值多種條件下都能有效消減異常點帶來的負(fù)面影響,從而顯著提高數(shù)據(jù)精簡傳輸率和預(yù)測精準(zhǔn)度,取得良好的效果。 本文針對無線傳感網(wǎng)在精簡傳輸過程中如何過濾異常點和判定突發(fā)事件等問題進行研究,有效地提高了預(yù)測模型準(zhǔn)確度,進一步減少了邊緣傳感節(jié)點上報次數(shù),提升了數(shù)據(jù)傳輸精簡程度。本文首先分析了異常數(shù)據(jù)點對預(yù)測模型的影響,依據(jù)實際應(yīng)用場景提出了基于箱線圖異常檢測的指數(shù)加權(quán)平滑算法的預(yù)測模型,同時通過短期環(huán)比區(qū)分異常點和突發(fā)事件。實驗結(jié)果表明,該預(yù)測模型可以有效過濾引入的異常點,同時較準(zhǔn)確地區(qū)分開異常點和突發(fā)事件,明顯提高了模型預(yù)測準(zhǔn)確性和數(shù)據(jù)傳輸精簡程度。下一步工作將箱線圖異常檢測機制更廣泛地應(yīng)用到其他預(yù)測模型,同時采用各種應(yīng)用場景的監(jiān)測數(shù)據(jù)作為測試數(shù)據(jù)集,不斷修正調(diào)整異常檢測機制,使其更具魯棒性和應(yīng)用廣泛性。2.3 短期環(huán)比判定突發(fā)事件
3 實驗驗證
3.1 實驗環(huán)境
3.2 實驗數(shù)據(jù)
3.3 實驗結(jié)論及對比分析
4 結(jié)束語