無線傳感器環境下多屬性事件的預測方法
【專利摘要】一種無線傳感器環境下多屬性事件的預測方法,該方法根據多屬性事件流自身的特點,建立多屬性事件場,將事件流轉化為等間隔,用于構建預測模型的訓練樣本文件,在此基礎上構建垂直和水平的雙向預測模型,對多屬性事件進行預測,并根據不準確預測的積累程度自適應地進行預測模型重建,使預測更具準確性,本發明可廣泛用于事件監控、自然災害監控與預警、健康監護、氣候環境監測與預測等應用中。
【專利說明】無線傳感器環境下多屬性事件的預測方法
【技術領域】
[0001]本發明屬于計算機數據處理【技術領域】,具體涉及事件流數據處理技術,特別涉及一種無線傳感器環境下多屬性事件的預測方法。
【背景技術】
[0002]隨著無線傳感器在環境監控、物聯網等諸多應用中被廣泛使用,產生了大量的事件流數據,復雜事件處理(Complex Event Processing, CEP)技術越來越受到關注和重視,逐漸成為數據庫領域繼數據流之后新的研究熱點。一個復雜事件的發生往往由多種因素決定,每一種因素都會對事件產生影響。因此,在無線傳感器環境下,傳感器往往對多個指標進行監測,多個指標的值或狀態共同決定一個復雜事件的發生。因此,本發明將事件模式描述為:e(t, attr:,attr2,…,attrn),其中,attA (η≥i≥I)是η個指標的監測值或狀態,這里稱為η個屬性,e為由η個屬性共同決定的事件類型,即最終報告給用戶的目標事件,t是事件e發生的時間。當η>1時,e稱為多屬性事件。與傳統的數值型數據相比,事件數據具有一定的語義。如在基于無線傳感器的森林火災監控中,多屬性事件state (t, humi, temp, pres, inte, wind)的語義為:在時刻t,傳感器采集到的大氣濕度為humi,空氣溫度為temp,大氣壓力為pres,光照強度為inte,風速為wind,此時傳感器所在地的森林安全狀態為state。通過對采集的多項指標進行處理,最終得出用戶需要的森林安全狀態,可以檢測或預測森林火災的發生,此即多屬性事件處理。在無線傳感器的實際應用中,事件數據通常包含多個屬性,研究和處理多屬性事件數據具有重要意義,可廣泛用于事件監控、自然災害監控與預警、健康監護、氣候環境監測與預測等應用中。
[0003]在目前的復雜事件處理中,復雜事件檢測技術研究的較多,已有許多模型和系統用于復雜事件檢測,如以SASE為代表的基于自動機的模型、以ZStream為代表的基于匹配樹的模型、以Sentinel為代表的基于有向圖的模型和以HiFi為代表的基于Petri網的模型等。事件檢測是對已經發生的事件進行檢測;而事件預測是對未來將要發生的事件進行預測。事件預測可基于以往發生的事件獲取即將發生或未來一段時間內可能會發生的事件,從而支持對即將發生的事件做出快速響應,對于無線傳感器環境下的事件監控和預警具有重要意義。相比于復雜事件檢測,復雜事件預測研究的較少,且目前的事件預測方法都未針對多屬性事件數據。目前尚沒有面向多屬性事件的預測方法提出。
【發明內容】
[0004]針對多屬性事件預測,本發明提供一種無線傳感器環境下多屬性事件預測方法,基于多屬性事件場,自適應地建立雙向預測模型,對多屬性事件進行預測。該方法根據多屬性事件流自身的特點,建立了等間隔存儲最新事件數據的內存存儲結構——多屬性事件場(mult1-attribute event field, MAEF),用于構建預測模型的訓練樣本文件,在此基礎上,基于LIBSVM先后建立垂直和水平的雙向預測模型,完成對多屬性事件的預測,并可根據不準確預測的積累程度自適應地進行模型重建,從而使對多屬性事件的預測更具準確性。SVM(support vector machine)是1995年由Vapnik提出的一種基于結構風險最小化準則的統計學習方法,較其它機器學習方法具有泛化性能好、全局最優、小樣本和高維數據處理等方面的優勢。因此,本發明采用SVM建立雙向預測模型。LIBSVM是臺灣學者林智仁(Lin Chih_Jen)開發的一種簡單易用、快速有效的SVM學習工具,支持SVM分類與回歸,本發明使用的是其回歸功能。
[0005]本發明方法的無線傳感器多屬性事件的預測方法,是通過不斷地將事件流中最新的事件數據等間隔化并存儲于MAEF,構建預測模型的訓練樣本文件,從而建立垂直和水平預測模型,實現對多屬性事件的預測。其步驟包括:
[0006](I)對傳感器采集的事件數據的所有非數值型屬性和事件類型進行數值編碼,形成屬性值/事件類型與其編碼對應的編碼文件輸出至磁盤上存儲;同時對相關變量進行初始化;
[0007]每個編碼文件存儲的是相應屬性值/事件類型與其編碼的對應關系。多屬性事件預測過程中需初始化的變量包括:將建立垂直預測模型的標志modelflag初始化為1,水平預測模型已建立標志model_count初始化為O,不準確預測計數inaccu_count初始化為
O0
[0008](2)將所有的編碼文件從磁盤讀入內存,以方便構建MAEF時進行編碼轉換;同時在內存中建立多屬性事件場結構MAEF,并將與MAEF相關的變量初始化;
[0009]本發明為了建立多屬性事件預測模型,設計了多屬性事件場結構MAEF。MAEF是一個d行和η列構成的內存結構。每行對應一個等間隔多屬性事件,事件場的長度d與用戶建立預測模型需要的樣本數量有關,可由用戶指定。每列分別為多屬性事件的η個屬性。
[0010]MAEF對于建立多屬性事件預測模型的貢獻如下:①事件流是無限到達的,而內存是有限的,將不斷到達的所有的事件都存儲于內存以建立預測模型的訓練樣本文件是不可能的。MAEF可支持在內存中存儲一定量的最新到達的事件數據用于建立預測模型的訓練樣本文件,存儲的事件數據的數量與用戶需要的訓練樣本數量相關,可由用戶指定;②MAEF可實現事件時間間隔的等距化。傳感器采集數據的時間間隔不一定是等距的,給建立預測模型帶來不便。基于MAEF可實現事件時間間隔的等距化,有利于建立預測模型的訓練樣本文件。③MAEF是循環使用的,支持對過期事件數據的淘汰和新事件數據的補充,使得基于此建立的預測模型能夠跟上事件流的變化,從而提高預測的準確性;④對于傳感器采集數據過密的情況,MAEF可減少數據冗余。
[0011](3)從傳感器事件流讀取當前事件,將當前事件的各屬性值或其編碼(對于非數值型)填入MAEF適當的行粒度,并根據當前事件在MAEF中的位置更新當前最新行粒度current和有效行計數eff_ row—count ;
[0012]為了在構建MAEF的過程中使事件等時間間隔,本發明提出“行粒度”的概念。行粒度是用戶指定的相鄰兩個事件之間的時間間隔。傳感器實際采集的數據可能是非等間隔的,且可能在一個行粒度內有多個采集值。本發明方法規定MAEF的每行對應一個行粒度,在一個行粒度內只存儲一個事件,且只存儲該粒度內最新到達的事件。這樣,MAEF不僅減少了事件數據冗余,而且MAEF中每個多屬性事件以行粒度為時間間隔,實現等間隔。
[0013]對于非數值型事件屬性,要對照步驟(2)讀入內存的編碼文件將其轉換為數值型填入相應的行粒度。[0014](4)判斷在MAEF中是否已生成d行有效數據,若已生成d行有效數據,則轉入步驟
(5);否則,轉入步驟(3);
[0015]這里,d是MAEF的長度,建立預測模型將使用MAEF中最新的d行數據,這里稱為有效數據或有效行。
[0016](5)在MAEF中確定構建各預測模型訓練樣本文件的起始行粒度start和終止行粒度 end。
[0017]隨著事件流的不斷到來,新到達的事件不斷被寫入MAEF。當MAEF的d行都被寫滿時,新到達事件將寫入MAEF的第一行。也就是說,在本發明中,MAEF是被循環使用的,用以記載事件流中最新的d個事件屬性值用來建立預測模型。因此,需要確定MAEF中最早被寫入的行粒度start和最后被寫入的行粒度end,以構建各預測模型的訓練樣本文件。
[0018](6)若建立垂直預測模型的標志model_flag=l,說明需建立垂直預測模型,則基于MAEF中存儲的各屬性值和步驟(5)確定的起始行粒度start、終止行粒度end,在內存中構建每個屬性所對應的垂直預測模型的樣本空間,并按照LIBSVM的格式要求將其輸出到磁盤上,形成與各屬性對應的訓練樣本文件,轉入步驟(7);否則,若標志model_flag Φ I,則繞過建立預測模型的步驟,轉入步驟(10);
[0019]在本發明提供的多屬性事件預測方法中,將針對每個屬性分別建立相應的預測模型。因事件各屬性在MAEF中體現為各個列,因此,針對各屬性建立的預測模型稱為垂直預測模型,其數量與多屬性事件屬性的數量相等。為此,需為每個屬性的預測模型構建其訓練樣本文件。在所構建的MAEF中,每個屬性都可視為等時間間隔的時間序列,因此,每個屬性都可按照時間序列的方式形成訓練樣本空間,并輸出至磁盤上存儲,形成相應的訓練樣本文件,以建立相應的預測模型。
[0020](7)針對多屬性事件的每個屬性,分別建立其垂直預測模型,并置建立垂直預測模型的標志model_flag為O ;
[0021]由于在構建MAEF的過程中已經將所有非數值屬性都處理為數值型數據,因此本發明將使用LIBSVM中的回歸功能建立各預測模型,具體使用的LIBSVM命令為svmtrain,在此之前首先要為各垂直預測模型選取合適的參數。標志m0del_flag為O意味著垂直預測模型已經建立,如果不準確預測計數未積累到一定程度,則對于新到達數據不需重新建立垂直預測模型,直接基于已有的預測模型進行預測即可。如果不準確預測計數積累到一定程度,標志model_f lag將被重置為1,則對于新到達數據需重建垂直預測模型。
[0022](8)若水平預測模型已經建立,即model_count=l,則轉步驟(10);否則,利用屬性值和事件類型均已知的d條歷史數據,構建水平預測模型的訓練樣本空間,并將其按照LIBSVM的格式要求輸出至磁盤,形成水平預測模型的訓練樣本文件sensor_trans_train ;
[0023]本發明中,針對事件類型建立的預測模型稱為水平預測模型,水平預測模型在多屬性事件預測中只需建立一次。
[0024](9)建立水平預測模型,并將水平預測模型已建立標志model_count置為I ;
[0025]基于水平訓練樣本文件和LIBSVM工具建立水平預測模型。首先進行參數選擇,然后使用LIBSVM工具中的svmtrain命令建立水平預測模型。
[0026](10)基于步驟(7)所建立的各屬性所對應的垂直預測模型,對各屬性下一個時間點的值進行預測;[0027]首先需建立符合LIBSVM格式要求的各垂直預測模型的測試數據文件輸出到磁盤上,然后基于建立好的各個垂直預測模型和各測試文件,分別使用LIBSVM的svmpredict命令對各屬性下一個時間點的值進行預測。
[0028](11)首先以各屬性的預測值作為輸入形成水平預測模型的測試樣本,輸出到磁盤上,建立水平預測模型的測試數據文件;然后對事件類型進行預測;若事件類型為非數值型,需對照其編碼對其進行轉換,并將轉換結果輸出到輸出設備上。
[0029]基于步驟(10)中預測的下一時間點的各屬性值,形成符合LIBSVM格式要求的水平預測模型的測試數據文件存儲于磁盤上,然后基于步驟(9)建立好的水平預測模型和測試文件對下一個時間點的事件類型進行預測。若事件類型為非數值型,本發明在建立預測模型時已經將其轉換為數值類型,預測結果也為數值類型,因此,要對照其編碼將其轉換為原來的非數值型進行輸出。
[0030](12)進行誤差統計以決定是否需重建垂直預測模型,以對預測模型進行自適應修改。
[0031 ] 每當步驟(11)預測結束后,該步驟就對預測的準確度進行統計,當“不準確預測”累積到一定程度時,自適應地對垂直預測模型進行修改。本發明提出“ ε -寬度誤差”的概念,以定義什么是“不準確預測”。
[0032]首先根據事件類型的真實值或其編碼(對于非數值型)、預測值以及用戶給定的最小誤差閾值ε計算ε-寬度誤差loss;然后,根據loss值以及不準確預測計數inaccu_count決定是否需重新建立垂直預測模型。
[0033](13)檢查用戶是否終止預測過程,若是,則整個多屬性事件預測過程結束;否則,轉入步驟(3),讀取事件流的下一個事件。
[0034]本發明的創新之處體現在:(1)設計并提供了一種稱為多屬性事件場MAEF的多屬性事件存儲結構,用于在內存中存儲最新的事件流數據,并基于此提供了一種將來自傳感器的不等間隔事件流變換為等間隔事件數據存儲于多屬性事件場的方法,用于構建預測模型的訓練樣本文件;(2)提供了針對多屬性事件的雙向建模與預測方法,包括:針對事件各屬性的垂直建模與預測方法和針對事件類型的水平建模與預測方法;(3)針對不斷更新的事件流,提供了基于ε -寬度誤差的預測模型自適應修改策略,使得預測模型始終能夠反映事件流數據的最新變化情況,提高預測準確性。
【專利附圖】
【附圖說明】
[0035]圖1是本發明無線傳感器環境下多屬性事件的預測方法的總流程圖;
[0036]圖2是本發明將當前讀取事件e的各屬性值或其編碼(對于非數值型)填入MAEF的流程圖;
[0037]圖3是本發明將當前讀取事件e的各屬性值或其編碼(對于非數值型)填入MAEF的行粒度row的流程圖;
[0038]圖4是本發明對空缺行粒度進行填充的流程圖;
[0039]圖5是本發明為每個屬性所對應的垂直預測模型選取參數的流程圖;
[0040]圖6是本發明為水平預測模型選取參數的流程圖;
[0041]圖7是本發明進行誤差統計以決定是否需重新建立垂直預測模型的流程圖。【具體實施方式】
[0042]如附圖所示:
[0043](1)對傳感器采集的事件數據的所有非數值型屬性和事件類型進行數值編碼,形成屬性值/事件類型與其編碼對應的編碼文件輸出至磁盤上存儲;同時對相關變量進行初始化;
[0044]對每個非數值型屬性進行數值編碼,形成各自的編碼文件存儲于磁盤上,每個文件存儲的是相應屬性值與其編碼的對應關系,每個非數值型屬性的編碼值為從I開始的連續自然數;如果事件類型也是非數值型,同樣對事件類型進行編碼,建立存儲它們之間對應關系的編碼文件存儲于磁盤上;同時對多屬性事件預測過程中的相關變量進行初始化,包括:將建立垂直預測模型的標志model_flag初始化為1,將水平預測模型已建立標志model_count初始化為O,將不準確預測計數inaccu_count初始化為O。
[0045]本發明針對多屬性事件預測,提出雙向建立預測模型的方法。其中,用來預測各屬性值的預測模型稱為垂直預測模型,用來預測事件類型的預測模型稱為水平預測模型。
[0046]model_flag是判斷是否需要建立垂直預測模型的標志變量。model_flag為I意味著需要執行建立垂直預測模型的過程;其值為O意味著不需執行建立垂直預測模型的過程,可利用已有的垂直預測模型直接進行預測。系統將根據預測模型的預測結果是否準確自適應地對m0del_flag的值進行重置,從而自適應地進行垂直預測模型重建。
[0047]由于水平預測模型不隨時間發生變化,因此水平預測模型在整個事件預測過程中只建立一次。水平預測模型已建立標志modelcount為0,表示水平預測模型尚未建立;model_count為I,表示水平預測模型已經建立。
[0048]不準確預測計數inaccu_count是預測誤差超出用戶規定閾值的計數。
[0049](2)將所有的編碼文件從磁盤讀入內存,以方便構建MAEF時進行編碼轉換;同時在內存中建立多屬性事件場結構MAEF,并將與MAEF相關的變量初始化,包括:刷新粒度總數]1_代;^6811初始化為O,MAEF中當前最新的行粒度current初始化為O,有效行計數eff_row_count初始化為O。
[0050]本發明為了建立多屬性事件預測模型,設計了多屬性事件場結構MAEF,并提供了基于MAEF將不等間隔事件轉換為等間隔的方法以及基于MAEF構建預測模型訓練樣本的方法。MAEF是一個d行和n列構成的內存結構。每行對應一個等間隔多屬性事件,事件場的長度d與用戶建立預測模型需要的樣本數量有關,可由用戶指定。每列分別為多屬性事件的n屬性。多屬性事件場結構MAEF如下表所示。
[0051]
【權利要求】
1.一種無線傳感器環境下多屬性事件的預測方法,其特征在于:包括以下步驟: (1)對傳感器采集的事件數據的所有非數值型屬性和事件類型進行數值編碼,形成屬性值/事件類型與其編碼對應的編碼文件輸出至磁盤上存儲;同時對相關變量進行初始化; (2)將所有的編碼文件從磁盤讀入內存,以方便構建多屬性事件場MAEF時進行編碼轉換;同時在內存中建立多屬性事件場結構MAEF,并將與MAEF相關的變量初始化; (3)從傳感器事件流讀取當前事件,將當前事件的各屬性值或非數值型屬性編碼填入MAEF適當的行粒度,并根據當前事件在MAEF中的位置更新當前最新行粒度current和有效行計數 eff_row_count ; (4)判斷在MAEF中是否已生成d行有效數據,即判斷有效行計數eff_row_count^ d是否成立,若成立,則轉入步驟(5);否則,轉入步驟(3); (5)在MAEF中確定構建各預測模型訓練樣本文件的起始行粒度start和終止行粒度end ; (6)若建立垂直預測模型的標志model_flag=l,說明需建立預測模型,則基于MAEF中存儲的各屬性值和步驟(5)確定的起始行粒度start、終止行粒度end,在內存中構建每個屬性所對應的垂直預測模型的樣本空間,并按照LIBSVM的格式要求將其輸出到磁盤上,形成與各屬性對應的訓練樣本文件,轉入步驟(7);否則,若標志model_flag Φ 1,則繞過建立預測模型的步驟,轉入步驟(10); (7)針對多屬性事件中的每個屬性,分別建立其垂直預測模型,并置建立垂直預測模型的標志model_flag為O ; (8)若水平預測模型已經建立,即m0del_C0Unt=l,則轉入步驟(10);否則,利用屬性值和事件類型均已知的d條歷史數據,構建水平預測模型的訓練樣本空間,并將其按照LIBSVM的格式要求輸出至磁盤,形成水平預測模型的訓練樣本文件sensor_trans_train ; (9)建立水平預測模型,并將水平預測模型已建立標志置為I; (10)基于步驟(7)所建立的各屬性所對應的垂直預測模型,對各屬性下一個時間點的值進行預測; (11)首先以各屬性的預測值作為輸入形成水平預測模型的測試樣本,輸出到磁盤上,建立水平預測模型的測試數據文件;然后對事件類型進行預測;若事件類型為非數值型,需對照其編碼對其進行轉換,并將轉換結果輸出到輸出設備上; (12)進行誤差統計以決定是否需重建垂直預測模型,以對預測模型進行自適應修改; (13)檢查用戶是否終止預測過程,若是,則整個多屬性事件預測過程結束;否則,轉入步驟(3),讀取事件流的下一個事件。
2.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(I)所述對傳感器采集的事件數據的所有非數值型屬性和事件類型進行數值編碼,形成屬性值/事件類型與其編碼對應的編碼文件輸出至磁盤上存儲,是對每個非數值型屬性進行數值編碼,形成各自的編碼文件存儲于磁盤上,每個文件存儲的是相應屬性值與其編碼的對應關系,每個非數值型屬性的編碼值為從I開始的連續自然數;如果事件類型也是非數值類型,同樣對事件類型進行編碼,建立存儲它們之間對應關系的編碼文件存儲于磁盤上;同時對相關變量進行初始化,是對多屬性事件預測過程中的相關變量進行初始化,包括:將建立垂直預測模型的標志model_flag初始化為I,將水平預測模型已建立標志model_count初始化為O,將不準確預測計數inaccu_count初始化為O,建立垂直預測模型的標志model_flag為I意味著需要執行建立垂直預測模型的過程,其值為O意味著不需執行建立垂直預測模型的過程,可利用已有的垂直預測模型直接進行預測,水平預測模型已建立標志model_count為O,表示水平預測模型尚未建立;model_count為I,表示水平預測模型已經建立,不準確預測計數inaCCu_Count是預測誤差超出用戶規定閾值的計數。
3.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(2)所述在內存中建立多屬性事件場結構MAEF,并將與MAEF相關的變量初始化,包括:刷新粒度總數n_refresh初始化為O,MAEF中當前最新的行粒度current初始化為O,有效行計數eff_row_count初始化為O ;所述MAEF是一個d行和η列構成的內存結構,每行對應一個等間隔多屬性事件,事件場的長度d與用戶建立預測模型需要的樣本數量有關,可由用戶指定,每列分別為多屬性事件的η個屬性,多屬性事件場結構MAEF如下表:
4.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(3)從傳感器事件流讀取當前事件,將當前各屬性值或非數值型屬性編碼填入MAEF適當的行粒度,并根據當前事件在MAEF中的位置更新當前最新行粒度current和有效行計數eff_row—count ; 所述行粒度是用戶指定的相鄰兩個事件之間的時間間隔,傳感器實際采集的數據可能是非等間隔的,且可能在一個行粒度內有多個采集值,規定MAEF的每行對應一個行粒度,在一個行粒度內只存儲一個事件,且只存儲該粒度內最新到達的事件,這樣,MAEF中每個事件及其屬性的取值以行粒度為時間間隔,實現等間隔; 從傳感器事件流讀取最新到達的事件,將事件各屬性值或非數值型屬性編碼填入MAEF適當的位置,以構建MAEF,對于在t時刻讀取的事件e (t, attr/,attr2’,...,attrn’),將其填入MAEF的適當位置,構建MAEF的具體步驟包括: (3.1)計算t時刻新讀取事件e在事件流中的行粒度e_g,公式如下:e_g=t/g+l,其中,g是用戶指定的行粒度大小; (3.2)若e_g>d+n_refresh,說明又將有d個MAEF行粒度被“刷新”,則執行n_refresh=n—refresh+d ; (3.3)計算新讀取事件e在MAEF中所在的行粒度row,公式如下:row=t/g+l_n_refresh ; (3.4)將事件e的各屬性值或其編碼填入MAEF的行粒度row ; 首先對照步驟(2)讀入內存的各個編碼文件,將事件e的η個屬性中非數值型的轉換為數值型,在此將e的n個數值型屬性分別表示為attrp attr2,…,attrn ; 然后,針對行粒度row取值的三種情況,分別處理如下: ①若row=current,則說明新讀入事件e所在的MAEF行粒度row與MAEF當前的最新行粒度current相同,此時,在該行粒度內用Btti^attr2,…,attrn覆蓋原有值,即執行MAEF [row] [ 1] =Bttr1, MAEF [row] [2] =attr2,…,MAEF[row] [n] =attrn, current 值保持不變,有效行計數efT_row_count保持不變; ②若row=current+l,貝U說明新讀入事件e在MAEF當前最新行粒度current的下一個粒度內,此時,直接將attr1; attr2,…,attrn填入MAEF的行粒度row的第I~η列中,即執行 MAEF [row] [1] =Bttr1, MAEF [row] [2] =attr2,…,MAEF [row] [n] =attrn,且將 current 變量更新,即執行current=row ;若有效行計數eff_row_count〈d,則將eff_row_count增I ; ③若row>current+l,則首先將attr^attr2,…,attrn填入MAEF的行粒度row的第I~η 列中,即執行 MAEF [row] [1] =Bttr1, MAEF [row] [2] =attr2,…,MAEF [row] [n] =attrn,且將current變量更新,即執行current=row ;同時對空缺行粒度進行填充, 若row>current+l,則說明可能傳感器采集數據過于稀疏或者用戶指定的行粒度過小出現事件在某行粒度內空缺的情況,這種情況下首先計算空缺行粒度的數量no_missing,公式為:no_missing=row-current-l,然后依次對每個空缺行粒度進行填充,設這no_missing個空缺行粒度中,第一個空缺行粒度為first_missing,填充no_missing個空缺行粒度及增加有效行計數efT_row_count的過程如下: (3.4.1)置當前的空缺行粒度row,=first_missing ; (3.4.2)若 row’ >first_missing+no_missing-l,說明空缺的 no_missing 個行粒度全部填充完畢,則判斷有效行計數efT_row_count〈d是否成立,若成立,則將efT_row_count增加(no_missing+l),即執行 eff_row_count=eff_row_count+no_missing+l ;結束該空缺行粒度填充過程;否則,若row’ < first_missing+no_missing-l,則轉入步驟(3.4.3);(3.4.3)設置 IOXn 的二維數組 att,并置:att[i] [j] =MAEF[row,_i][j],其中,10≥i≥1,n≥j≥1,按下邊公式對空缺行row’進行填充:
5.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(4)所述判斷在MAEF中是否已生成d行建立預測模型的有效數據,即判斷有效行計數row_count≥d是否成立,若成立,則轉入步驟(5);否則,轉入步驟(3); d是MAEF的長度,建立各預測模型將使用MAEF中最新的d行數據,稱為有效數據或有效行。
6.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(5)所述在MAEF中確定構建各預測模型訓練樣本文件的起始行粒度start和終止行粒度end,置 end=current,若 current=d,則置 Start=I ;否則,置 start=current+l ; 確定在構建MAEF的過程中最早被填入事件的行粒度,作為構建訓練樣本文件的起始數據start,確定MAEF中最新填入事件的行粒度,作為構建訓練樣本文件的終止數據end,利用最近d個行粒度內的事件數據按照它們發生的順序構建預測模型的訓練樣本文件;變量current總是記載MAEF中當前最新的行粒度,因此,end=current, MAEF中的d個行粒度是循環使用的,當Current=Cl時,第I個行粒度中的事件是最早填入的,故置Start=I ;否則當current d時,第(current+1)個行粒度中的事件是最早填入的,故置start=current+l ; MAEF中從行粒度start開始到行粒度end為止的數據,將用來構建各預測模型的訓練樣本文件。
7.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(6)若建立垂直預測模型的標志model_flag=l,則說明需建立垂直預測模型,則基于MAEF中存儲的各屬性值和步驟(5)確定的起始行粒度start、終止行粒度end,在內存中構建每個屬性所對應的垂直預測模型的樣本空間,并按照LIBSVM的格式要求將其輸出到磁盤上,形成與各屬性對應的訓練樣本文件,轉入步驟(7);否則,若標志model_flag Φ 1,則繞過建立預測模型的步驟,轉入步驟(10); 步驟(3)不斷地讀入事件流中新到達的事件,將事件各屬性值或其編碼填入MAEF中,當步驟(4)中判斷MAEF中已生成d行建立預測模型的有效數據時,MAEF已經被最新d個行粒度內的事件屬性或其編碼填滿,如果用attr/表示MAEF中第i個行粒度的第j個屬性值,其中,
8.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(7)針對多屬性事件中的每個屬性j (n ^≥j≥1),分別建立相應的垂直預測模型,并置建立垂直預測模型的標志model_flag為O ; 該步驟包括以下具體步驟: (7.1)為建立每個屬性j對應的垂直預測模型確定相關參數; 建立預測模型時選擇的參數直接影響預測模型的準確性,基于SVM的回歸功能建立預測模型需要確定三個參數,即懲罰系數C、不敏感損失ε和核參數ga_a (這里采用徑向基核函數),這三個參數太大或太小都會影響預測性能,其取值應在適當的范圍內,這里,為3個參數確定較寬的取值范圍:21≥gamma≥2_8,212≥C≥2-1,2≥1≥ε≥2_12,使用SVM建立預測模型的參數一般不超過上述范圍, 該步驟用來為每個屬性j (n ^ j ^ I)所對應的垂直預測模型選擇確定gamma、C、ε這3個參數,具體步驟為: (7.1.1)在各自的取值范圍內,為3個參數指定一些特定值:gamma=2' 2_7, 2^, - ,20, 2^0=2-1, 2°, 21,-,211, 212,ε =2-12, 2-11, 2,,- ,2-2, 2'針對每個參數的取值,形成多個(ga_a, C, ε )組合; (7.1.2)將MAEF中的數據從行粒度start開始至end結束的屬性值attrs;, attrsj?...? attrs;按順序分成 1、2、3、4、5 共 5 組,其中第 1、2、3、4 組長度為 dl=|_d/5」,第5組長度為d2=d-dlX4 ; (7.1.3)用1、2、3、4組作為訓練數據,第5組數據作為測試數據,基于步驟(6)生成的樣本空間,按照下面的格式分別生成名為sensor_para_longi_train_l的訓練樣本文件和名為sensor_para_longi_test_l的測試數據文件存儲至磁盤上; (7.1.4)用1、2、3組作為訓練數據,第4組數據作為測試數據,基于步驟(6)生成的樣本空間,按照下面的格式分別生成名為sensor_para_longi_train_2的訓練樣本文件和名為sensor_para_longi_test_2的測試數據文件存儲至磁盤上;(7.1.5)用1、2組作為訓練數據,第3組數據作為測試數據,基于步驟(6)生成的樣本空間,按照下面的格式分別生成名為sensor_para_longi_train_3的訓練樣本文件和名為sensor_para_longi_test_3的測試數據文件存儲至磁盤上; (7.1.6)用第I組作為訓練數據,第2組數據作為測試數據,基于步驟(6)生成的樣本空間,按照下面的格式分別生成名為sensor_para_longi_train_4的訓練樣本文件和名為sensor_para_longi_test_4的測試數據文件存儲至磁盤上; (7.1.7)針對每一組參數組合化&_&,(:,ε ),分別進行以下4次測試,并計算每次測試的誤差及4次測試的平均誤差; (7.1.7.1)對第5組數據進行測試,并計算測試誤差error_longi_l ; 首先,執行以下命令建立針對第5組數據的測試模型:
svmtrain - s3 - t2 - g gamma - c C - p ε sensor—para—longi_train_lmodel_sensor_para—longi_l 其中,參數S設置為3,表明采用的是e-SVR;參數t設置為2,表明采用的是徑向基核函數;參數g、C、P分別設置為gamma、C、ε ,對應一組參數組合(gamma, C, ε ) ;sensor_para_longi_train_l是步驟(7.1.3)基于1、2、3、4組數據生成的訓練樣本文件;model_sensor_para_longi_l是svmtrain命令生成的結果文件,是用來選擇參數的測試模型; 然后,執行如下命令對第5組數據進行測試:
svmpredict sensor_para_longi_test_lmodel_sensor_para_longi_lsensor_para_longi_output_l 其中,sensor_para_longi_test_l是步驟(7.1.3)基于第5組數據生成的測試數據文件,model_sensor_para_longi_l是svmtrain命令生成的測試模型,sensor_para_longi_output_l是svmpredict命令生成的結果文件,存儲的是對第5組數據Ittrsfltl、 attrsfM、attrsf1*3、…、altrsf1、altrs丨進行測試的結果,其文件長度為d2=d_4dl ; 最后,根據第5組的真實數據與文件sensor_para_longi_output_l中的測試結果數據計算測試誤差,設sensor_para_longi_output_l中的數據依次為:test] ^ Iestj2、…、》則測試誤差計算如下:
9.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(8)若水平預測模型已經建立,即m0del_C0Unt=l,則轉步驟(10);否則,利用屬性值和事件類型均已知的d條歷史數據,構建水平預測模型的訓練樣本空間,并將其按照LIBSVM的格式要求輸出至磁盤,形成水平預測模型的訓練樣本文件sensor_trans_train ; 這里,用attrr/表示第i條歷史數據的第j個屬性值或非數值型屬性編碼,用Obji表示第i條歷史數據的事件類型或其編碼,對于非數值型事件類型,要對照步驟(2)讀入內存的編碼文件將其轉換為數值編碼,則可為水平預測模型構建如下由d個訓練樣本對(Xi,yi)構成的訓練樣本空間,其中,d ^ i ^ I,
10.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(9)建立水平預測模型,并將水平預測模型已建立標志modelcount置為I ; 其中,建立水平預測模型的子步驟包括: (9.1)確定建立水平預測模型的參數; 選擇水平預測模型的參數與選擇垂直預測模型參數的思路相似,都是將訓練數據分成.1、2、3、4、5共5組,然后針對每一參數組合,對某些組中的數據分別進行測試,計算幾次測試的平均誤差,選擇平均誤差最小的參數組合作為建立預測模型的參數,不同的是,水平預測模型的訓練樣本之間無時序依賴關系,因此,采取與垂直預測模型參數選擇不同的測試方式,即分別用1、2、3、4組數據作為訓練數據,測試第5組數據;用2、3、4、5組數據作為訓練數據,測試第I組數據;用3、4、5、1組數據作為訓練數據,測試第2組數據;用4、5、1、2組數據作為訓練數據,測試第3組數據;用5、1、2、3組數據作為訓練數據,測試第4組數據,具體步驟包括: (9.1.1)在各自的取值范圍內,為3個參數指定一些特定值:gamma=2' 2_7, 2^, - ,20, 2^0=2-1, 2°, 21,-,211, 212,ε =2-12, 2-11, 2,,- ,2-2, 2'針對每個參數的取值,形成各種組合(ga_a, C, ε ); (9.1.2)將步驟(8)構建的水平預測模型的訓練樣本空間中的數據按順序分成1、2、3、.4、5共5組,其中第1、2、3、4組長度為dl=[d/5」》第5組長度為d2=d_4dl,其中d為MAEF長度; (9.1.3)用1、2、3、4組作為訓練數據,第5組作為測試數據,基于步驟(8)生成的訓練樣本空間,分別生成名為sensor_para_trans_train_l的訓練樣本文件和名為sensor_para_trans_test_l的測試數據文件輸出至磁盤存儲; (9.1.4)用2、3、4、5組作為訓練數據,第I組作為測試數據,基于步驟(8)生成的訓練樣本空間,分別生成名為sensor_para_trans_train_2的訓練樣本文件和名為sensor_para_trans_test_2的測試數據文件輸出至磁盤存儲;(9.1.5)用3、4、5、1組作為訓練數據,第2組作為測試數據,基于步驟(8)生成的訓練樣本空間,分別生成名為sensor_para_trans_train_3的訓練樣本文件和名為sensor_para_trans_test_3的測試數據文件輸出至磁盤存儲; (9.1.6)用4、5、1、2組作為訓練數據,第3組作為測試數據,基于步驟(8)生成的訓練樣本空間,分別生成名為sensor_para_trans_train_4的訓練樣本文件和名為sensor_para_trans_test_4的測試數據文件輸出至磁盤存儲; (9.1.7)用5、1、2、3組作為訓練數據,第4組作為測試數據,基于步驟(8)生成的訓練樣本空間,分別生成名為sensor_para_trans_train_5的訓練樣本文件和名為sensor_para_trans_test_5的測試數據文件輸出至磁盤存儲; (9.1.8)針對每一組參數組合化&1111^,(:,ε ),分別進行以下5次測試,并計算每次測試的誤差及5次測試的平均誤差; (9.1.8.1)對第 5組數據進行測試,并計算測試誤差error_trans_l ; 首先,執行以下命令建立針對第5組數據的測試模型:
svmtrain - s3 - t2 - g gamma - c C - ρ ε sensor_para_trans_train_lmodel_sensor_para_trans_l 其中,參數s設置為3,表明采用的是e-SVR;參數t設置為2,表明采用的是徑向基核函數;參數g、C、ρ分別設置為gamma、C、ε ,對應一組參數組合(gamma, C, ε ) ;sensor_para_trans_train_l是步驟(9.1.3)基于1、2、3、4組數據生成的訓練樣本文件;model_sensor_para_trans_l是svmtrain命令生成的結果文件,是用來選擇參數的測試模型。 然后,執行如下命令對第5組數據進行測試:
svmpredict sensor_para_trans_test_lmodel_sensor_para_trans_lsensor_para_trans_output_l 其中,sensor_para_trans_test_l是步驟(9.1.3)基于第5組數據生成的測試數據文件,model_sensor_para_trans_l 是 svmtrain 命令生成的測試模型,sensor_para_trans_output_l是svmpredict命令生成的結果文件,存儲的是對第5組數據obj4dl+1、obj4dl+2、…、Objd進行測試的結果,其文件長度為d2=d-4dl ; 最后,根據第5組的真實數據與文件sensor_para_trans_output_l中的測試結果數據計算測試誤差,設 sensor_para_trans_output_l 中的數據依次為!testptestj^'test^,則測試誤差計算如下:
11.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(10)基于步驟(7)所建立的各屬性所對應的垂直預測模型,對各屬性下一個時間點的值進行預測; (10.1)針對每個屬性j (η≥j≥1),基于當前MAEF中的數據和當前的起始行粒度start、終止行粒度end,生成測試樣本文件sensor_longi_predict_j,內容和格式如下:
12.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(11)首先以各屬性的預測值作為輸入形成水平預測模型的測試樣本,輸出到磁盤上,生成水平預測模型的測試數據文件;然后對事件類型進行預測;若事件類型為非數值型,需對照其編碼對其進行轉換,并將轉換結果輸出到輸出設備上; (11.1)生成水平預測模型的測試數據文件sensor_trans_predict,格式如下:
13.如權利要求1所述的無線傳感器環境下多屬性事件的預測方法,其特征在于步驟(12)進行誤差統計以決定是否需重新建立垂直預測模型,以根據預測的準確性及時對預測模型進行自適應的修改,其具體步驟包括: (12.1)計算ε -寬度誤差loss ; 設事件類型或非數值型事件類型編碼的真實值為y,預測值為夕,則ε -寬度誤差loss可計算如下:
【文檔編號】G06F19/00GK103745130SQ201410040442
【公開日】2014年4月23日 申請日期:2014年1月27日 優先權日:2014年1月27日
【發明者】林樹寬, 楊禮國, 喬建忠 申請人:東北大學