廖棟森,祝長鴻,余琪琦,任君玉,黃福瑩,覃團發+
(1.廣西大學 計算機與電子信息學院,廣西 南寧 530004;2.廣西大學 多媒體通信與網絡技術重點實驗室,廣西 南寧 530004)
無線體域網[1](wireless body area networks,WBAN)是由人體攜帶的傳感器節點、匯聚節點和遠程服務器組成的網絡。WBAN根據節點觀測的異常數據獲知人體健康狀態的變化和節點的工作狀態。現有的WBAN異常數據檢測方法可分為兩類:①基于數據統計特性的異常數據檢測方法。這類方法根據距離和信息熵來檢測異常數據。②基于機器學習的異常數據檢測方法。這類方法使用已有的數據訓練模型,將數據分類而得到異常數據。然而這兩類檢測方法對數據點逐一分類,得到的異常數據是非連續數據點的集合,忽視了人體健康狀態發生變化時,異常數據應呈連續分布,檢測的結果應按時間段分布,而這兩類方法只反映了人體在離散時間點的狀態,缺乏對人體健康狀態發生變化時間段的準確定位。由此本文將異常數據分為偶然性的異常數據點和連續性的異常數據集兩部分,并提出了基于Hampel濾波器和DBSCAN分層的異常數據檢測方法。該方法首先根據Hampel濾波器檢測并替換偶然性的異常數據點,保證數據的連續性;其次,基于滑動時間窗,將時間窗中的數據全部視為異常數據或正常數據;然后根據DBSCAN本質為劃分高密度區域的特征,將DBSCAN對數據聚類的結果轉換為每一個時間窗中數據能否聚類的問題;最后依據人體生理參數的相關性標注出異常數據集。
基于數據統計特性的異常數據檢測方法使用數據的中心趨勢統計量、散布程度統計量和分布統計量檢測異常數據。Chang等[2]提出了基于時間窗的滑動平均模型,在時間窗截取數據的基礎上,使用滑動平均模型預測下一數據點是否為異常數據點,其模型簡單并提供了較好的檢測精度;在文獻[3,4]中,研究者提出了基于馬氏距離和信息熵的異常數據檢測方法,這些方法通過計算數據點之間的馬氏距離和信息熵作為判定異常數據點的依據,計算復雜度低,但需要訪問所有待檢測的數據,不滿足WBAN的實時性要求。
在基于機器學習的異常數據檢測方面,文獻[5-8]提出了基于監督學習的異常數據檢測方法,采用的監督學習方法有One-Class SVM(support vector machine)、k-NN(k-nearest neighbors)、貝葉斯網絡等,這些方法根據已有數據建立模型,利用數據的內在特征訓練模型,提高了異常數據檢測的精度,但存在使用的數據需預標簽,WBAN異常數據占比較小,模型訓練困難,且每個人健康狀態不同,訓練的模型不能泛化,以及One-Class SVM時間復雜度高,K-NN檢測精度不足,貝葉斯網絡適應度低等問題。文獻[9-12]提出了基于無監督學習的異常數據檢測方法,采用的無監督學習方法有主成分分析法、k-means、高斯混合模型、多層次聚類等,這些方法根據人體處于正常狀態時數據相對集中而異常數據較少的分布特征進行聚類或降維,無需對數據進行預標簽,提高了算法的泛化能力,但存在需采集較長時間段的數據進行學習,限制了WBAN系統的實時性,以及主成分分析法效率不高,k-means和高斯混合模型需根據不同個體獲取先驗知識等問題。
WBAN網絡模型如圖1所示。被監護人員攜帶n個傳感器節點 {p1,p2,…,pi,…,pn},pi表示其中第i個傳感器節點。傳感器節點由于攜帶的能量、計算能力受限,對采集的數據進行一定處理后,將其傳輸至匯聚節點,匯聚節點一般具有較高的運算和存儲能力,可以承擔復雜的計算任務,數據在匯聚節點處理后通過互聯網傳輸至醫院并備份于數據中心。
圖2為本文提出的異常數據檢測模型。由于偶然性的異常數據點來源于環境噪聲和偶然的軟件或硬件錯誤等因素,連續性的異常數據集產生于人體健康狀態的變化和連續的軟件或硬件錯誤等因素,因此模型根據異常數據的來源分為兩個部分。①模型先通過Hampel濾波器檢測并替換偶然性的異常數據點,保證數據的連續性;②模型將異常數據集檢測分解為基于DBSCAN的異常數據集檢測和異常數據集驗證?;贒BSCAN的異常數據集檢測找出異常數據集所在的位置,在驗證異常數據集的來源后,若數據集證實為人體健康狀態發生了變化,則向有關人員發出警報。最后更新數據庫和時間節點。
異常數據點由于破壞了數據的連續性,對提取數據的特征具有較大的影響?;跀祿蛄袝r間相關性的Hampel濾波器是中值濾波器的改進,能夠有效地分辨并替換異常數據點。Hampel濾波器使用被檢測數據點對應時間窗數據序列的中值和中值絕對偏移量(median absolute deviation,MAD)作為判斷被檢測數據點是否為異常數據點的依據。當時間窗口大小為g時,第i個數據點ri對應的時間窗序列表示為Ri={ri-g,…,ri-1,ri,ri+1,…,ri+g} 根據Ri可得中值和MAD的計算公式
Mi=median(Ri)
(1)
Swi=1.4826×median{|Ri-Mi|}
(2)
其中,Mi表示ri對應Ri的中值,Swi表示ri對應Ri的MAD,常量1.4826表示該偏移量在數據序列呈正態分布時等于標準偏移量。
Hampel濾波器根據ri、Mi和Swi三者之間的關系來判斷ri是否為異常數據點,判決公式如下所示
|ri-Mi|≥k×Swi
(3)
其中,k為可變參量,如果式(3)成立則認為ri為異常點并將Mi替換ri,否則為正常點。
由于k和Swi決定了異常數據點的篩選,須根據人體特征選取。在文獻[13]中詳細討論了k的選取,一般為2~5。對于Swi,由式(1)、式(2)可得,Hampel濾波器不能處理時間窗序列中含有連續w個數據點為相同數值時的情形。而人體處于穩定狀態時,節點測量精度不足可能會產生上述錯誤,MAD近于0,k和Swi對異常數據點判決影響過??;同時,偶然丟失的數據須通過k和Swi恢復。因此,本文對Swi進行了如下改進
Swi=max(Swi,d)
(4)
其中,d是預定義大于0的常數,根據觀測數據的方差選取,max表示取Swi和d的最大值。
由式(1)~式(4)可得,Hampel 濾波器依次處理傳感器的觀測數據,保證了數據的連續性,時間窗包含了數據點前后各g個數據點,具有一定的滯后性,可根據任務的實時性要求選取g的大小。Hampel濾波器的時間復雜度為O(n)。
本小節所使用的變量含義見表1。

表1 變量說明
設單個傳感器可觀測m個生理參數,一次觀測的時間點個數為t,則單個傳感器采集的數據可用矩陣G表示
其中,Xi=(xi1,xi2,…,xim) 表示傳感器節點在時間點i對m個生理參數的觀測值集合,Si=(x1i,x2i,…,xti) 表示傳感器節點對第i個生理參數在t個時間點的觀測值集合。異常數據集檢測的結果為準確地標識出異常數據集開始和結束時間點,可表示為 [t1,t2]=f(S1,S2,…,St)。 其中 [t1,t2] 表示異常數據集開始和結束的時間點,f(S1,S2,…,St) 表示對矩陣G進行的某種變換。
DBSCAN算法根據數據之間的密度連通性發現簇和噪聲點,包含Eps(指定數據集G中任一點的周圍半徑)和minPts(在指定的Eps下數據點成為核對象至少包含的對象個數)兩個參數,根據以上參數可有如下定義。
定義1 鄰域:任意數據點p在G中的鄰域NbEps(P) 可通過如下定義獲得NEps={p|dist(p,q)≤Eps,q∈G}, 其中dist(p,q) 表示p和q之間的距離。

定義3 直接密度可達:若p,q∈G,NEps(q)≥minPts,p∈NEps(q), 則對象q從對象p直接密度。
定義4 密度可達:若D={d1,d2,…,dn},d1=q,dn=p, 任意di,di+1,NEps(di)≥minPts,di+1∈NEps(q), 則p和q密度可達,其中D為一串相鄰對象直接密度可達的序列。
定義5 密度相連:若G中存在一個對象O,使得對象p和q都從O密度可達,則稱對象p和q密度相連。
DBSCAN算法無需預標記數據,可實現任意形狀和大小的集群,能夠檢測出噪聲。DBSCAN聚類的結果是非連續數據點的集合,而人體生理參數在一段時間內具有連續性,前一時刻的生理狀態影響著后一時刻,數據點之間的相關性決定了異常數據呈連續分布,因此直接使用DBSCAN檢測異常數據不能準確標識出異常數據集的起始和結束位置,且Eps和minPts是具有全局作用的參數,決定了DBSCAN的聚類結果的好壞,這限制了DBSCAN對于不同異常數據的適應能力。因此,本文從Eps和minPts的定義出發,設置滑動時間窗,某一時間窗內的數據被認為全部是異常數據或正常數據,這樣將整個數據集聚類的結果變換為每一個時間窗中的數據能否聚為一個類的問題。圖3表示滑動時間窗,時間窗的寬度是可調的參數,當傳感器節點采集的數據充滿第一個時間窗時,即可對時間窗中的數據進行分析。

圖3 滑動時間窗
Eps和minPts的選取:時間窗中的數據一旦采集完畢,數據點之間的距離不再變化。因此,對于任意數據點,若minPts為1,Eps為數據點的最近鄰距離,則該數據點為核心點。單獨一個數據點的最近鄰距離不具有代表性,本文將每一個數據點的最近鄰距離相加后平均得平均最近鄰距離,平均最近鄰距離作為Eps的候選值。同理,當minPts為k時,Eps為數據點與第k個最近鄰數據點之間的距離,將每一個數據點的第k個最近鄰數據點之間的距離平均得第k個Eps的候選值。設時間窗寬度為n,則Eps存在n個候選值,由此可得Eps候選值的計算步驟為:
步驟1 計算時間窗數據的距離分布矩陣Dn×n={Dist(i,j)|1≤i≤n,1≤j≤n}, 其中n為時間窗包含的數據點個數,Dist(i,j) 為第i個數據點到第j個數據點之間的距離。
步驟2 對距離分布矩陣進行升序排序,第一列為數據點到自身距離為0,第k列表示所有數據點與其對應第k個最近鄰數據點之間的距離。
步驟3 對每一列求平均,將其作為Eps的候選值。
在得出Eps候選值的過程中,假設minPts為固定數值,這樣的限制不能代表數據自身的特征。minPts是在指定的Eps下數據點成為核對象至少包含的對象個數,應由Eps的候選值確定minPts的個數。因此,對于每一個Eps候選值,依次求出所有數據點的鄰域對象數量,所有數據點鄰域對象的期望值作為minPts的候選值。計算方法為
(5)
其中,Qi表示第i個數據點的鄰域數據點個數。這樣每一個minPts對應于一個Eps,但minPts和Eps對于聚類算法是二維隨機變量,因此,本文將minPts和Eps合為一個變量,其公式如下所示
Density=minPts/Eps2
(6)
其中,Density表示以Eps為半徑的圓內存在minPts個數據點。Eps和Density一一對應,故Density有n個候選值。由于Eps第一個候選值為數據點到自身的距離0,Density從第二個值開始計算。
Density候選值趨勢分析:平均最近鄰距離表示數據的緊密程度,Eps候選值不斷增大表示數據的緊密程度不斷減小,因此Density呈不斷減小的趨勢。本文將時間窗中的數據全部認定為異常數據或正常數據。若為正常數據,則時間窗內的數據被視為一個類,不同數據點之間的相關性可用平均最近鄰距離衡量,因此平均最近鄰距離對應的Density應遠大于其它Eps候選值對應的Density,同時隨著Eps的不斷增加,時間窗中數據點的個數是不變的,Density逐漸趨于水平。若為異常數據,數據點之間的緊密程度小,平均最近鄰距離和其它Eps候選值對應的Density不具有顯著差別。
根據Density的變化趨勢,本文提出以下準則作為判斷時間窗中的數據是否正常數據的標準。
準則1:平均最近鄰距離對應的Density應遠大于其它Eps候選值對應的Density即Density(2)>k×Density(3), 其中k>10。
準則2:Density應在起始處快速下降,并隨著數據點的增長趨于水平,即Density(i)-Density(i-1) 不斷減小并趨近于0,其中0
這樣通過劃分時間窗的方式將DBSCAN直接聚類的結果轉換為Density趨勢的變化,由此判斷時間窗中的數據是否為異常數據。
WBAN通常有多個功能不同的傳感器節點對人體健康狀態進行監護,人體作為一個有機的系統,各種生理參數之間具有強相關性。本文使用協方差系數來描述不同生理參數之間的相關性。生理參數X和Y之間的協方差系數可表示為
(7)
由于人體生理參數具有波動性,協方差系數應在一定的范圍內波動,本文采用3σ原則對其判定,其中σ表示協方差系數的標準差。如果某一節點測量的人體生理參數和其它節點測量的生理參數的協方差系數和人體處于正常健康狀態測得的協方差系數不超過3σ,則認為異常數據來源于人體健康狀態。由于涉及到多個節點,單獨一個節點不能承擔驗證分析,需將多個節點的數據傳輸至匯聚節點處。異常數據集檢測已明確標出了異常數據集所在的時間窗,其它時間窗中的數據對于異常數據集沒有提供有效信息,可直接忽略。因此,只需將異常數據集所在時間窗的數據傳輸至匯聚節點。
異常數據集檢測方法流程為:
步驟1 初始化時間窗的大小n。
步驟2 當時間窗中數據點個數達到n時,根據時間窗中的數據點得距離分布矩陣Dn×n。
步驟3 計算Eps和minPts的候選值。
步驟4 由式(6)得Density向量。
步驟5 根據準則1和準則2判斷時間窗中的數據是否為異常數據集。
步驟6 若時間窗中的數據為異常數據,將異常數據傳輸至匯聚節點,匯聚節點根據式(7)計算不同生理參數之間的協方差系數。
步驟7 比較人體健康狀態下的協方差系數和計算得到的協方差系數,驗證異常數據集后標注出異常數據集所在的時間窗,并發出警報。
數據集G中數據點個數為n,時間窗寬度為w,則存在n/w個時間窗,異常數據集檢測方法在每個時間窗運行的時間復雜度為O(w2), 則總體時間復雜度為O(nw)。 每次算法只需存儲w個數據點,其空間復雜度為O(w)。
為保證實驗結果的有效性和真實性,本次仿真實驗使用的醫療數據來源于Physionet[14]的數據庫MIMIC(multiparameter intelligent monitoring in intensive care)中編號為221患者的生理數據,其包括以下生理參數、心跳頻率(heart rate,HR)、呼吸頻率(respiration,RESP)、血氧飽和度(SpO2)、平均動脈血壓(mean arterial blood pressure,ABPmean)。圖4表示患者生理參數在0到20 000個時間點的變化圖。

圖4 人體生理參數
圖5為ABPmean異常數據點檢測的結果。其中時間窗w取值為50,k為3,d在Hampel濾波器中作用為抑制常數錯誤,在本次實驗中選取為4。圖中豎線標出的點為Hampel濾波器檢測出的異常數據點,主要為常數錯誤的數據點和相對于周圍數據具有顯著變化的點。

圖5 ABPmean異常數據點
在不失一般性的條件下,本文選取ABPmean和HR作為同一個節點觀測的人體生理參數。由于時間窗的大小對實驗結果有著顯著影響,本文在4.3節進行了詳細分析。圖6為不同時間窗密度曲線圖,時間窗寬度為400,其中“win”表示時間窗,圖中圈出的位置為Density曲線橫坐標2到10的放大圖,其中win1和win6的橫坐標為2的數據超過了圓圈范圍,進行了截取,由圖可知Density趨勢符合上文的分析。通過準則1和準則2可知,第五和第六個時間窗是異常數據集所在的時間窗。圖7為異常數據集標注圖,通過對20 000個數據進行時間窗劃分并判定每一個時間窗數據是否為連續的異常數據集得到的結果,圖中每兩個豎線之間的時間窗中的數據為異常數據集,和文獻[14]相比,標準的異常數據集具有一致性,較好地反映了異常數據集所在的位置。

圖6 不同時間窗密度曲線

圖7 異常數據集標注
本文使用檢測精度DR(detection rate)和虛警率FPR(false positive rate)來量化所提方法的有效性,并用受試者工作特征曲線(receiver operating characteristic curver,ROC)表示FPR和DR之間的關系[15]。下述定義中正常數據表示人體處于健康狀態時的觀測數據,異常數據表示受到環境噪聲影響或人體健康狀態發生變化時的觀測數據。檢測率DR可通過如下公式表示
(8)
其中,FD表示檢測的異常數據點個數,TN表示總體異常數據點個數。與之相應的,虛警率可通過如下公式表示
(9)
其中,FP表示正常數據點被檢測為異常數據點的個數,TF表示正常數據點的個數。
圖8為時間窗的大小對DR和FPR的影響。當時間窗較小時,由于人體生理參數具有連續性,無法區分一個時間窗內的數據是否為異常數據,由于異常數據占比較小,本文將每一個時間窗中的數據均視為正常數據,得到DR=0,FPR=0;當時間窗寬度增至一個時間窗寬度內的數據能夠表示人體處于異常狀態時,即某些時間窗內的數據不能夠聚類時,異常數據檢測算法工作于正常區間的起始點,得到DR=81.82%,FPR =0;在時間窗寬度增加至最長異常數據集時間長度時,一部分正常數據被視為異常數據,另一部分在時間窗長度較小時檢測為異常數據集的數據被視為正常數據,FPR和DR呈非線性上升直至DR=100%,FPR=11%,異常數據檢測算法工作于正常區間的截止點;當時間窗增大到最長異常數據集被視為正常數據時,DR=0,FPR=0,此時本方法失去實際應用價值。

圖8 FPR和DR隨時間窗寬度變化
本文在文獻[14]基礎上將所提出的方法和基于SVM、KNN、MD的異常數據檢測方法進行對比,如圖9和表2所示。圖9為不同檢測方法的ROC圖,表2為不同檢測方法的對比圖。由9圖可知,基于SVM的檢測方法有效性最好,當DR=100%時,FPR=5.2%,但由表2可知其空間和時間復雜度達到了O(n2)和O(n3),在對比的方法中計算復雜度最高,因此不適用節點資源有限的WBAN;基于KNN、MD方法和本文提出的方法在DR=100%時,FPR分別為6.8%、15%、11%。因此,本文提出的方法相比于基于MD的方法具有更好的檢測精度,但差于KNN,主要因為本文提出的方法為達到100%檢測精度,選用的時間窗過大。但由圖8和圖9可知,當時間窗處于正常工作區間時,本文提出的方法的ROC曲線在KNN之上,因此在檢測精度和虛警率上優于KNN,同時由表2可知,基于KNN和MD的方法和本文提出的方法的時間復雜度分別為O(n*k)、O(n)、O(wn), 其中k為特征維度,w為時間窗寬度,因此這3種方法在時間復雜度上不具有明顯差距,在空間復雜度上分別為O(n*k),O(n2),O(w), 因此本文提出的方法空間復雜度為常數,顯著優于其它方法,且基于SVM、KNN和MD的檢測方法均需在傳感器獲取所有數據后再檢測異常數據,因此不滿足WBAN的實時性要求。而本文提出的方法只需存儲時間窗內的數據,可根據任務的實時性調整時間窗的大小,當時間窗內的數據為異常數據集時,只需將時間窗內的數據傳輸至匯聚節點,有效地降低了傳感器節點由于頻繁通信產生的能量損耗。因此,本文提出的方法與基于SVM、KNN和MD的方法相比更適合用于傳感器側檢測異常數據。

表2 不同檢測方法復雜度對比

圖9 不同檢測方法ROC
本文提出了一種分層的異常數據檢測方法。Hampel濾波器檢測異常數據點,在此基礎上異常數據集檢測方法通過劃分時間窗的方式將聚類的結果轉換為每一個時間窗中的數據能否聚類的問題,并與其它方法相比,本文的方法考慮了人體健康狀態發生變化時異常數據具有連續性的特征,空間復雜度更小,在檢測出異常數據集后,只需將異常數據集所在時間窗的數據傳輸至匯聚節點,降低了節點的能量損耗。但所提出的方法固定了時間窗的寬度,降低了系統性能。因此,設計可變的時間窗,提高異常數據集的標注準確性是下一步改進方向。