李 惠 劉 晨 趙新宇
(北方工業(yè)大學(xué)大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點(diǎn)實(shí)驗室 北京 100144)
在物聯(lián)網(wǎng)高速發(fā)展的現(xiàn)代社會中,各領(lǐng)域行業(yè)尤其是工業(yè)設(shè)備中,都部署了大量傳感器設(shè)備,用于檢測異常事件。
異常事件的傳感器流源對不同的干擾是可變化的。如圖1 中所示,很明顯,單個傳感器流具有相對較低的值密度,一個事件通常涉及多個傳感器流。圖1 中字母標(biāo)識的位置顯示了多個傳感器流之間的延遲相關(guān)性的一些例子,流4 和流5 的改變頻率大致相似,但是存在一定延遲相關(guān)性。而不同傳感器流中的數(shù)據(jù)記錄的頻率和時間戳也普遍不同。
圖1 干擾對不同傳感器流的影響
在本文中,我們解決了以下兩個問題:一是如何選擇合適的傳感器流來定位不同的干擾源;二是根據(jù)傳感器流的模式特性來提高捕捉異常事件的精度。
利用傳感器網(wǎng)絡(luò)來進(jìn)行異常事件檢測主要有兩方式,一種是基于學(xué)習(xí)的方法,使用各種分類模型對歷史傳感器數(shù)據(jù)進(jìn)行建模,比如神經(jīng)網(wǎng)絡(luò)[1]、支持向量機(jī)、馬爾可夫隨機(jī)場等,然后對實(shí)時傳感器數(shù)據(jù)進(jìn)行分類。另外一種是利用傳感器的時空關(guān)系,把各類異常抽象成不同的事件模式,從而將異常檢測問題轉(zhuǎn)化為模式匹配問題。模式匹配的基本方法是基于領(lǐng)域?qū)<遥?]定義的預(yù)設(shè)閾值來檢測事件。毛等[3]利用貝葉斯網(wǎng)絡(luò)和馬爾可夫鏈對傳感器之間的時空相關(guān)性進(jìn)行建模。大多數(shù)現(xiàn)有的基于服務(wù)的方法都需要預(yù)先定義服務(wù)組合或協(xié)作目標(biāo),并且不支持自適應(yīng)協(xié)作。因此,它們不能用于增加不確定的傳感器流的值密度。
在本文中,我們將現(xiàn)有的封裝傳感器數(shù)據(jù)的方法稱為服務(wù),并提出了一種基于服務(wù)的聲明性方法來支持來自不確定流源的自適應(yīng)異常事件捕獲。
首先我們對傳感器流做如下定義:
定義1(傳感器流):一個傳感器流可以被表示為SS,A,DR,SS 是帶有id 的流源,A 是屬性集,DR={dr1,dr2,…,dri,…},是一個無線序列的數(shù)據(jù)記錄,這是一組帶有時間戳的鍵值對,。
圖2 顯示了以前的服務(wù)抽象中的核心工件和重要術(shù)語。傳感器流由流源發(fā)出,例如傳感器、生產(chǎn)者、發(fā)布者、發(fā)射器等,并被客戶機(jī)(例如用戶或應(yīng)用程序)消費(fèi)。
圖2 本文核心工件和重要術(shù)語
我們的流數(shù)據(jù)服務(wù)可以定義如下:
定義2(流數(shù)據(jù)服務(wù)):一個流數(shù)據(jù)服務(wù)形式化為〈pdsid,SS,eventin,eventout,DR,EP,hyperlinks〉,pdsid是唯一標(biāo)識符,eventin表示輸入事件流,eventout表示EP 產(chǎn)生的輸出事件流,SS是可能的數(shù)據(jù)流源集,DR是聲明性規(guī)則,EP 是指事件處理函數(shù),它包括兩個本文提出的算法和之前實(shí)現(xiàn)的操作,hyperlinks 為一個指示服務(wù)事件目標(biāo)的可選參數(shù)。
考慮到滯后相關(guān)分析問題,以尋找時滯向量來最大化PCC,并在我們的服務(wù)抽象中提出了一種基于動態(tài)時間扭曲的事件捕獲算法。
聲明性規(guī)則和事件捕獲算法是我們的服務(wù)抽象中的關(guān)鍵。在本小節(jié)中,將介紹如何設(shè)置聲明性規(guī)則。
由外部干擾引起的事件通常會持續(xù)一段時間,聲明性規(guī)則中觸發(fā)的操作需要是一個具有端點(diǎn)的連續(xù)過程。因此,我們利用ECA 規(guī)則的增強(qiáng)來表示聲明性規(guī)則。聲明性規(guī)則的概括性規(guī)則為在一定時間段內(nèi),特定條件下,某一事件流上的預(yù)定義規(guī)則。
由某一來源產(chǎn)生的干擾可以形成一個事件流。該條件是可選的,表示對某種干擾的約束。操作表示流源和相應(yīng)的處理行為。一段時間表示操作持續(xù)的時間。我們設(shè)計并實(shí)現(xiàn)了幾種操作,這些操作可分為三類:轉(zhuǎn)換、聚合和融合[9]。
這樣流數(shù)據(jù)服務(wù)僅通過訪問和處理相對傳感器流,就可以自適應(yīng)地映射各種外部干擾。
動態(tài)時間扭曲算法[10]是一種用于測量時間序列相似度的魯棒方法,它可以對時間序列進(jìn)行位移和扭曲,從而忽略了時間軸的縮放和位移的問題。以下是動態(tài)時間扭曲算法的形式化描述。
假設(shè)有兩個含時間戳的傳感器序列C 和Q,長流:
為了對齊兩個序列,算法構(gòu)造了一個m×n的矩陣,矩陣的位置(i,j)用于存儲ci與qj的距離(通常為歐式距離,。動態(tài)時間扭曲算法的目的就是找出一條從(1,1)到(m,n)開銷最下的一條路徑。
定義γ(i,j)表示(1,1)到(i,j)點(diǎn)的最小累加距離,則動態(tài)時間扭曲算法所求得最小路徑可形式化表示為
本文采用基于動態(tài)時間扭曲的算法求出兩個傳感器數(shù)據(jù)序列的時滯向量。
為了獲得精度相關(guān)性,我們的目標(biāo)是找到時滯向量來修正PCC,并將滯后相關(guān)分析問題形式化如下。
定義3(延遲相關(guān)性):在一個滑動窗口中給定兩個傳感器數(shù)據(jù)集Di和Dj。
假設(shè):
有,F(xiàn)≥δcor。
我們就認(rèn)為Di和Dj是相關(guān)的,其中δcor是給定的閾值。
以上定義中滯后向量即某特定時間下引發(fā)的另一傳感器相關(guān)事件的一個滯后特性,cor(Fi,Fj,Δ)為傳感器數(shù)據(jù)集在存在一定滯后性情況下的相關(guān)性的計算方式。
為了分析兩個傳感器數(shù)據(jù)之間的相關(guān)性,我們首先可以得到一個使MAX(cor(Fi,Fj,Δ))產(chǎn)生的時滯向量,然后通過比較給定的閾值來證明是否存在延遲相關(guān)性。期望最大化(EM)算法[7]可用于計算滯后向量。然而,時間復(fù)雜度依賴于數(shù)據(jù)記錄和迭代的數(shù)量,并呈指數(shù)級增長。因此,我們根據(jù)以下定理變換了計算時滯向量的函數(shù)模型。
定理1:當(dāng)歸一化級數(shù)的歐幾里得距離下降時,皮爾遜相關(guān)系數(shù)上升。
證明:
第一個式子描述了PPC的計算公式,第二個式子描述了余弦相似度的計算公式。據(jù)此,可以明顯看出,PPC等價于集中余弦相似度。
上式顯示了歐式距離與余弦相似度的關(guān)系,當(dāng)歐氏距離下降時PPC 上升。根據(jù)定理1,可以計算出使歸一化級數(shù)的歐氏距離最小的時滯向量,然后根據(jù)時滯向量計算出原始級數(shù)的PCC。
我們將事件捕獲算法集成到服務(wù)抽象中,并基于它在聲明性規(guī)則中設(shè)置操作。這樣,當(dāng)接收到一定的干擾時,就可以訪問相對的傳感器流,這樣就可以執(zhí)行事件捕獲算法,一旦相關(guān)性發(fā)生改變,就可以捕獲事件。圖3 顯示了一個事件檢測服務(wù)的事件捕獲的執(zhí)行過程。除了事件檢測服務(wù)外,還有兩個干擾服務(wù),它們不斷地向它發(fā)送服務(wù)事件。
圖3 事件檢測服務(wù)
我們將流數(shù)據(jù)服務(wù)中設(shè)置的流源數(shù)設(shè)置為不同梯度,并對比是否有聲明性規(guī)則的每個服務(wù)的CPU負(fù)載和執(zhí)行時間。
我們用Ed來表示檢測到的事件列表,Et為實(shí)際的事件列表,準(zhǔn)確性評估方式按照的精度和查全率以及F(1)值三兩個方面計算,以下是計算方式:
我們實(shí)驗中使用的數(shù)據(jù)集來自國家智能電網(wǎng)的真實(shí)傳感器數(shù)據(jù),嚴(yán)格符合實(shí)際時間戳。
圖4 顯示了服務(wù)抽象的系統(tǒng)負(fù)載。很明顯,具有聲明性規(guī)則的服務(wù)抽象值要低得多,這是因為在我們的服務(wù)抽象中需要處理的傳感器流要少得多。
圖4 不同服務(wù)抽象的CPU負(fù)載
另外如表1 在執(zhí)行時間上我們的服務(wù)抽象也表現(xiàn)優(yōu)異。
表1 事件執(zhí)行時間
為了評估我們的服務(wù)抽象的有效性,通過計算基于動態(tài)時間扭曲的算法和正態(tài)相關(guān)性分析算法捕獲的事件的精度和查全率來評估事件捕獲算法。
我們將不同流源下不同事件捕獲算法的平均精度和F(1)值在圖5、圖6中做了展示。很明顯,我們的事件捕獲算法具有更高的精度。這是因為我們的事件捕獲算法采用了基于動態(tài)時間扭曲的相關(guān)性分析算法,并考慮了傳感器流的不同頻率和相關(guān)性的位移。
圖5 不同事件捕獲算法的準(zhǔn)確度
圖6 不同事件捕獲算法的F(1)值
在未來,我們的目標(biāo)是基于實(shí)時分析和學(xué)習(xí)來更新運(yùn)行時的聲明性規(guī)則,并通過考慮事件之間的動態(tài)和時變相關(guān)性來進(jìn)一步提高準(zhǔn)確性。
在本文中,我們的目標(biāo)是提出一種基于服務(wù)的聲明性方法,通過改進(jìn)我們以前的服務(wù)抽象,來從不確定的傳感器流中捕獲事件。我們利用聲明性規(guī)則來處理不確定的流源,并利用相關(guān)性分析方法來捕獲事件作為相關(guān)性的變化。通過預(yù)定義的聲明性規(guī)則,我們的服務(wù)抽象可以自適應(yīng)地訪問和處理相對的傳感器流,以反映外部干擾。面對不一致的相關(guān)頻率和位移,我們提出了一種基于動態(tài)時間扭曲(動態(tài)時間扭曲)的算法,通過分析所選傳感器流的延遲相關(guān)性來捕獲事件。在真實(shí)傳感器數(shù)據(jù)的基礎(chǔ)上,一系列實(shí)驗表明,該方法比現(xiàn)有方法效率高,具有較高的精度。
今后的目標(biāo)是應(yīng)用更多的時間序列分析方法來捕獲各種事件,如頻繁的共現(xiàn)事件和基于形狀的事件,并通過基于實(shí)時分析或?qū)W習(xí)在運(yùn)行時更新聲明性規(guī)則來進(jìn)一步改進(jìn)我們的方法。