李 惠 劉 晨 趙新宇
(北方工業大學大規模流數據集成與分析技術北京市重點實驗室 北京 100144)
在物聯網高速發展的現代社會中,各領域行業尤其是工業設備中,都部署了大量傳感器設備,用于檢測異常事件。
異常事件的傳感器流源對不同的干擾是可變化的。如圖1 中所示,很明顯,單個傳感器流具有相對較低的值密度,一個事件通常涉及多個傳感器流。圖1 中字母標識的位置顯示了多個傳感器流之間的延遲相關性的一些例子,流4 和流5 的改變頻率大致相似,但是存在一定延遲相關性。而不同傳感器流中的數據記錄的頻率和時間戳也普遍不同。

圖1 干擾對不同傳感器流的影響
在本文中,我們解決了以下兩個問題:一是如何選擇合適的傳感器流來定位不同的干擾源;二是根據傳感器流的模式特性來提高捕捉異常事件的精度。
利用傳感器網絡來進行異常事件檢測主要有兩方式,一種是基于學習的方法,使用各種分類模型對歷史傳感器數據進行建模,比如神經網絡[1]、支持向量機、馬爾可夫隨機場等,然后對實時傳感器數據進行分類。另外一種是利用傳感器的時空關系,把各類異常抽象成不同的事件模式,從而將異常檢測問題轉化為模式匹配問題。模式匹配的基本方法是基于領域專家[2]定義的預設閾值來檢測事件。毛等[3]利用貝葉斯網絡和馬爾可夫鏈對傳感器之間的時空相關性進行建模。大多數現有的基于服務的方法都需要預先定義服務組合或協作目標,并且不支持自適應協作。因此,它們不能用于增加不確定的傳感器流的值密度。
在本文中,我們將現有的封裝傳感器數據的方法稱為服務,并提出了一種基于服務的聲明性方法來支持來自不確定流源的自適應異常事件捕獲。
首先我們對傳感器流做如下定義:
定義1(傳感器流):一個傳感器流可以被表示為SS,A,DR,SS 是帶有id 的流源,A 是屬性集,DR={dr1,dr2,…,dri,…},是一個無線序列的數據記錄,這是一組帶有時間戳的鍵值對,。
圖2 顯示了以前的服務抽象中的核心工件和重要術語。傳感器流由流源發出,例如傳感器、生產者、發布者、發射器等,并被客戶機(例如用戶或應用程序)消費。

圖2 本文核心工件和重要術語
我們的流數據服務可以定義如下:
定義2(流數據服務):一個流數據服務形式化為〈pdsid,SS,eventin,eventout,DR,EP,hyperlinks〉,pdsid是唯一標識符,eventin表示輸入事件流,eventout表示EP 產生的輸出事件流,SS是可能的數據流源集,DR是聲明性規則,EP 是指事件處理函數,它包括兩個本文提出的算法和之前實現的操作,hyperlinks 為一個指示服務事件目標的可選參數。
考慮到滯后相關分析問題,以尋找時滯向量來最大化PCC,并在我們的服務抽象中提出了一種基于動態時間扭曲的事件捕獲算法。
聲明性規則和事件捕獲算法是我們的服務抽象中的關鍵。在本小節中,將介紹如何設置聲明性規則。
由外部干擾引起的事件通常會持續一段時間,聲明性規則中觸發的操作需要是一個具有端點的連續過程。因此,我們利用ECA 規則的增強來表示聲明性規則。聲明性規則的概括性規則為在一定時間段內,特定條件下,某一事件流上的預定義規則。
由某一來源產生的干擾可以形成一個事件流。該條件是可選的,表示對某種干擾的約束。操作表示流源和相應的處理行為。一段時間表示操作持續的時間。我們設計并實現了幾種操作,這些操作可分為三類:轉換、聚合和融合[9]。
這樣流數據服務僅通過訪問和處理相對傳感器流,就可以自適應地映射各種外部干擾。
動態時間扭曲算法[10]是一種用于測量時間序列相似度的魯棒方法,它可以對時間序列進行位移和扭曲,從而忽略了時間軸的縮放和位移的問題。以下是動態時間扭曲算法的形式化描述。
假設有兩個含時間戳的傳感器序列C 和Q,長流:
為了對齊兩個序列,算法構造了一個m×n的矩陣,矩陣的位置(i,j)用于存儲ci與qj的距離(通常為歐式距離,。動態時間扭曲算法的目的就是找出一條從(1,1)到(m,n)開銷最下的一條路徑。
定義γ(i,j)表示(1,1)到(i,j)點的最小累加距離,則動態時間扭曲算法所求得最小路徑可形式化表示為
本文采用基于動態時間扭曲的算法求出兩個傳感器數據序列的時滯向量。
為了獲得精度相關性,我們的目標是找到時滯向量來修正PCC,并將滯后相關分析問題形式化如下。
定義3(延遲相關性):在一個滑動窗口中給定兩個傳感器數據集Di和Dj。
假設:
有,F≥δcor。
我們就認為Di和Dj是相關的,其中δcor是給定的閾值。
以上定義中滯后向量即某特定時間下引發的另一傳感器相關事件的一個滯后特性,cor(Fi,Fj,Δ)為傳感器數據集在存在一定滯后性情況下的相關性的計算方式。
為了分析兩個傳感器數據之間的相關性,我們首先可以得到一個使MAX(cor(Fi,Fj,Δ))產生的時滯向量,然后通過比較給定的閾值來證明是否存在延遲相關性。期望最大化(EM)算法[7]可用于計算滯后向量。然而,時間復雜度依賴于數據記錄和迭代的數量,并呈指數級增長。因此,我們根據以下定理變換了計算時滯向量的函數模型。
定理1:當歸一化級數的歐幾里得距離下降時,皮爾遜相關系數上升。
證明:
第一個式子描述了PPC的計算公式,第二個式子描述了余弦相似度的計算公式。據此,可以明顯看出,PPC等價于集中余弦相似度。
上式顯示了歐式距離與余弦相似度的關系,當歐氏距離下降時PPC 上升。根據定理1,可以計算出使歸一化級數的歐氏距離最小的時滯向量,然后根據時滯向量計算出原始級數的PCC。
我們將事件捕獲算法集成到服務抽象中,并基于它在聲明性規則中設置操作。這樣,當接收到一定的干擾時,就可以訪問相對的傳感器流,這樣就可以執行事件捕獲算法,一旦相關性發生改變,就可以捕獲事件。圖3 顯示了一個事件檢測服務的事件捕獲的執行過程。除了事件檢測服務外,還有兩個干擾服務,它們不斷地向它發送服務事件。

圖3 事件檢測服務
我們將流數據服務中設置的流源數設置為不同梯度,并對比是否有聲明性規則的每個服務的CPU負載和執行時間。
我們用Ed來表示檢測到的事件列表,Et為實際的事件列表,準確性評估方式按照的精度和查全率以及F(1)值三兩個方面計算,以下是計算方式:
我們實驗中使用的數據集來自國家智能電網的真實傳感器數據,嚴格符合實際時間戳。
圖4 顯示了服務抽象的系統負載。很明顯,具有聲明性規則的服務抽象值要低得多,這是因為在我們的服務抽象中需要處理的傳感器流要少得多。

圖4 不同服務抽象的CPU負載
另外如表1 在執行時間上我們的服務抽象也表現優異。

表1 事件執行時間
為了評估我們的服務抽象的有效性,通過計算基于動態時間扭曲的算法和正態相關性分析算法捕獲的事件的精度和查全率來評估事件捕獲算法。
我們將不同流源下不同事件捕獲算法的平均精度和F(1)值在圖5、圖6中做了展示。很明顯,我們的事件捕獲算法具有更高的精度。這是因為我們的事件捕獲算法采用了基于動態時間扭曲的相關性分析算法,并考慮了傳感器流的不同頻率和相關性的位移。

圖5 不同事件捕獲算法的準確度

圖6 不同事件捕獲算法的F(1)值
在未來,我們的目標是基于實時分析和學習來更新運行時的聲明性規則,并通過考慮事件之間的動態和時變相關性來進一步提高準確性。
在本文中,我們的目標是提出一種基于服務的聲明性方法,通過改進我們以前的服務抽象,來從不確定的傳感器流中捕獲事件。我們利用聲明性規則來處理不確定的流源,并利用相關性分析方法來捕獲事件作為相關性的變化。通過預定義的聲明性規則,我們的服務抽象可以自適應地訪問和處理相對的傳感器流,以反映外部干擾。面對不一致的相關頻率和位移,我們提出了一種基于動態時間扭曲(動態時間扭曲)的算法,通過分析所選傳感器流的延遲相關性來捕獲事件。在真實傳感器數據的基礎上,一系列實驗表明,該方法比現有方法效率高,具有較高的精度。
今后的目標是應用更多的時間序列分析方法來捕獲各種事件,如頻繁的共現事件和基于形狀的事件,并通過基于實時分析或學習在運行時更新聲明性規則來進一步改進我們的方法。