詹 麟 ,曾獻輝 ,2,代凱旋
(1.東華大學 信息科學與技術學院,上海 201620;2.數字化紡織服裝技術教育部工程研究中心,上海 201620)
物聯網的迅速發展使其成為了信息化社會的重要一環,其中通過智能家居可以將用戶使用的各種設備聯系到一起,通過各種連接技術如WiFi[1]、ZigBee[2]、藍牙[3]將原先機械式、單一化的設備變得具有可控性[4-5]和智能化[6-7],將生活質量提高了一個臺階[8-9]。
通過對智能家居環境下采集的數據進行計算和分析,文獻[10]提出了一種從家庭智能電表數據中提取用戶行為模式的統一框架,通過集成的頻繁模式增長算法和各種機器學習算法的分類來檢測用戶的異常模式。 文獻[11]通過隱馬爾科夫模型對智能家居環境下的用戶行為進行預測。 文獻[12]提出了一種基于用戶行為模式的智能家居控制策略,通過對用電量的挖掘與分析,在此基礎上設計對應的智能家居系統控制策略。 文獻[13]采用關聯規則發掘算法對智能家居下的用戶行為進行預測,優化了智能家居系統的控制策略。
但現有的研究仍有些許不足,通過各種機器學習對數據進行分類后進行異常檢測,可能實時性得不到保障[14],若用戶行為發生了概念漂移,則不能及時調整;構建數學模型局限于存在線性關系的數據集,訓練集的數據過于關注歷史數據,不能對新的行為習慣做出檢測,可能存在誤判[15];通過關聯分析對用戶異常行為進行檢測[16]比較依賴經驗值,在不同的規模下準確率也會受到一定影響。 對于以上缺陷本文提出了一種基于實時數據流的概念漂移檢測方法。 首先采集用戶家中使用智能家居的能耗和傳感器的使用數據,對這些數據進行聚類學習得出用戶的正常行為,之后以聚類為標簽對加入新的實時數據流進行分類,通過檢測聚類的異常性指數得出用戶哪些行為發生了改變,對改變后的數據進一步計算,比較LOF 數值[17]得出哪些行為數據導致了概念漂移的發生。 該算法能夠對檢測用戶異常行為的實時性做到保證,耗時非常短,且準確性較高。
在智能家居的環境下,用戶所使用設備的狀態數據通過傳感器進行采集,這些數據的背后隱含了許多用戶的行為模式,通過對采集到的數據進行分析可以掌握用戶的行為習慣,并對用戶的異常行為進行判斷。 現有的研究大多數是通過集成模型對流數據進行分類,使其能夠適應流數據中出現的概念漂移;運用機器學習以歷史數據作為訓練集,將訓練好的模型去檢測實時數據;借助于時間窗口來對數據流進行計算和分析。 本文為了進一步提高實時性以及檢測的精度,提出了基于動態時間跨度與聚類差異性指數的用戶行為異常檢測算法,其總體流程框架如圖1 所示。
從圖1 可以看出本文提出的異常行為檢測模型包含聚類模型和分類模型。 聚類模型主要對傳感器收集的離線數據集進行聚類,得到用戶正常行為模式。 分類模型主要是以聚類結果作為標簽,對數據進行分類。 用戶行為在不同的時間段中活動的頻繁次數各不相同,針對不同的頻繁次數對數據進行不同時間跨度的概念漂移檢測,在數據流發生概念漂移后,通過局部離群因子(LOF)來檢測用戶行為發生異常的時間點。

圖1 異常行為檢測的總體流程框架
在構造合適的分類和聚類模型之前,需要對輸入數據進行分析與選擇,選取合適的模型輸入數據對最后的結果有很大影響。 在智能家居環境下異常數據檢測的數據來源主要是傳感器采集到的設備狀態數據,這些數據主要分為兩種:開關型數據、數值型數據。 開關型數據主要表示在某個時間段中智能家居是否在使用,數值型數據主要表示在某個時間段中智能家居的能耗量。
對于輸入的數據還需要進行預處理操作。 由于單個數據在模型中沒有任何意義,無法體現用戶的行為模式,因此需要將不同設備的數據集合并到一起。 以時間為標準對數據進行多對一的合并,將所有設備在這個時間段內的能耗或者使用情況進行整合。 對于缺失的數據可以根據其前后數據的規律性將其補齊。 預處理完后的數據既能夠觀測到數據的完整性,也能用于后面的用戶行為模式聚類。
用戶行為必然會隨時間而發生改變,因此需要將數據采集的時間作為特征數據并將其劃分,比如一天中的不同時間段(早上、中午、晚上),是工作日還是周末,或者一年中的不同月份。 表1 所示就是對一天中不同時間段進行劃分的一種方式。

表1 根據不同時間段劃分采集時間
為了對用戶行為模式進行挖掘,需要將預處理后的數據運用聚類算法把用戶行為特征相似的數據歸納成一類,同時保證類與類之間的數據特性相差盡可能大。 因此聚類可以讓用戶能耗特征相似的數據歸在一起,將其看成一種行為模式。
本文選擇基于密度的DBSCAN 聚類算法對用戶的歷史數據進行聚類。在T 時刻所有設備的狀態或者能耗經過預處理構成一組數據,記為 Ext。 將 T1,T2,… ,Tn時 刻 的 數 據 作 為 輸 入 數 據 , 記 為 Ext1,Ext2,…,Extn,按照以下DBSCAN 聚類算法對數據進行聚類。

每一次概念漂移檢測完之后都需要更新分類模型的中心點, 保證之后檢測的正確性和實時性。如果沒有發生概念漂移則通過式(1)來更新分類模型的中心。 新的中心通過原來中心 Qj和分類到 Qj中 的 n 個 新 數 據 Ext1,Ext2,…,Extn計 算 得 出 。

如果發生概念漂移則需要去除掉LOF 超過一定閾值的數據,剔除異常點后再通過式(1)計算得出新分類的中心。
時間跨度是根據需要進行異常檢測的時間段精度大小來設定的,所以可以結合實際情況來選擇,根據時間規律或者用戶活動的頻率,將時間分成幾個階段,每個階段的跨度都不同,如表2所示。

表2 不同時間段對應的時間跨度
例如凌晨用戶活動頻次低,則選擇較大的時間跨度,比如選取4 h,晚上用戶的活動相對頻繁,選擇較小的30 min 作為時間跨度。 如果通過滑動窗口來接收需要處理的數據,在過程中會通過緩存來儲存數據,實時性難以得到保證,而本文的時間跨度能夠在保證實時性的前提下根據實際情況更加靈活地動態調整。
通過聚類算法得出的每個聚類集合都是用戶的一個行為模式,隨著時間的推移,用戶的行為會發生一定變化,與之對應的聚類中心點也可能會發生變化,通過聚類差異性指標來判斷是否發生概念漂移。 根據之前聚類得到的集合 Q1,…,Qn,將其中心作為分類的標簽,將時間跨度C 中的 n 個新的數據 S1,…,Sn,分別根據式(2)計算歐氏距離 D(Qi,Si),通過比較Si到每個集合的歐氏距離,將Si分類到歐氏距離最小的集合Q 中。

將有新數據歸類到的集合,根據原先每個數據Ext1,Ext2,…,Extn在整個集合中的隸屬度Lij,使用式(3)計算集合的聚類差異性指數B標準。


隸屬度 Lij表示第 j 個數據在第 i 個聚類集合中的重要性。
聚類差異性指數B標準表示數據集中每個數據與聚類中心的差異性,如果數據差異度比較高,則誤差 B標準會比較大,如果數據差異度比較低,則聚類差異性指數 B標準會比較小。
根據是否滿足式(5)來判斷用戶是否發生了概念漂移,即數據點的差異性是否超過用戶預先指定的閾值。

其中 B新數據是時間參數 C 中 n 個新的數據 S1,…,Sn到其分類集合的差異性;w 則為標準化閾值參數,通過式(6)根據用戶該能耗平時所用的最大值和最小值得出,其中j 為數據的列數,作用為允許新數據參數偏移的誤差控制。

得出發生概念漂移的集合之后,通過LOF 算法找到對應的異常點,從而知道發生異常行為的具體時間。 根據式(7)可以得出 P 點到 O 點的第 k 可達距。 通過式(8)可計算出點的局部 k 領域距離,之后根據式(9)可計算出點的 LOF 值。 聚類的聚合越密集,k 領域距離就會越短,密度就會越高,反之如果聚類中的點越分散,點的k 領域距離就會越長,密度也會越低。

其中 lofp表示 p 點的異常值,異常值如果越接近 1,則表明p 點與它的鄰域點的密度越接近,認為不是導致概念漂移的異常點;當異常值小于1,說明p點為密集點,不可能是異常點;如果異常值大于1,則表明p 的密度小于其鄰接點,極有可能是導致概念漂移的異常點。
通過計算得到時間跨度中n 個數據的LOF 值,為了檢測其中哪些數據為異常行為,則需要計算出臨界值 Lmax。 Lmax的選取對檢測異常極其關鍵,如果Lmax設定太高就難以檢測到異常,容易出現漏檢,相反如果Lmax設定得太低,則容易發生錯檢。 根據式(10)可以得出 Lavg,Lavg為 n 個數據的平均值;通過式(11)計算得出的 Lsta表示 n 個數據的標準偏差,反映的是數據的離散程度。 將 Lavg和 Lsta相加就可以得出LOF 的臨界值 Lmax,超出臨界值 Lmax的數據就認為是用戶的異常行為。

圖2 是異常行為檢測算法流程圖。 在輸入數據后,先通過離線數據集得到聚類的結果,將每一個類別作為分類標簽對實時數據進行分類,根據動態調整完的時間跨度對數據進行概念漂移檢測,通過聚類集合的誤差指數來判斷是否概念漂移。 如果發生了概念漂移則需要檢測導致發生概念漂移的異常點,計算每一個數據的LOF 值是否大于臨界值,剔除大于臨界值的異常點,通過中心點偏移公式對分類模型的中心點進行更新,若沒有發生概念漂移則直接對分類模型進行更新。 之后將新的模型中心作為分類標簽再次對新輸入的數據進行分類,并且重新計算聚類差異性指數,依次循環往復。

圖2 異常行為檢測算法流程圖
本文的實驗數據來源于實際采集到的智能家居環境下的各類電器設備數據。 整個采集系統有14 個傳感器,用于采集14 個設備的狀態或能耗數據,每一個傳感器設置以1 min 為一個采集周期。實驗首先將數據進行預處理,之后通過聚類得到用戶的行為模式,再結合時間跨度的大小對新數據流進行分類,通過分類集合的聚類差異性指標判斷是否發生了概念漂移,最后通過計算數據點的LOF 異常值檢測發生異常行為的時間點,具體過程如下。
在智能家居環境下傳感器采集的數據,主要包括存儲時間序列和用電能耗或用電信息,比如開關是否打開、設備在短時間內的能耗。 表3 是燈的能耗的一部分采集數據。 通過合并、篩選等方式對采集數據進行預處理,將更加清晰和完整的數據作為輸入數據。

表3 燈的能耗原始數據
由于時間戳序列的形式不方便理解,因此需要把時間戳序列轉換為日期和時間的形式。 之后是對數據進行合并,將不同設備的數據集合并到同一個數據表中,以時間為標準對數據進行多合一,將所有的設備在該時間的能耗或者使用情況進行合并,表4 列舉了一部分結果。 經過初始的處理后實驗輸入數據如表5 所示(該表僅列舉了部分數據)。

表4 預處理完的數據

表5 實驗輸入數據
系統在開始運行之前積累了2 天共2 880 條數據,將這些數據作為離線的聚類版本。 采用基于密度的DBSCAN 聚類算法對其進行初始聚類,得到了9 個類別如表 6 所示,其中數值為電器的能耗,單位為 VA。

表6 聚類結果
實驗還與K-Means 聚類和均值漂移聚類的準確性進行比較,結果如表 7 所示。 輸入相同的 2 880條數據并對其聚類,可以看到DBSCAN 聚類的正確率達到了98.5%,而K-Means 和均值漂移正確率只有96.3%和98.1%,從而得出本實驗使用DBSCAN聚類效果比較好。

表7 聚類算法比較
聚類結果一共分成了9 個類別,每一個類別都代表了用戶在某個時間段的一種行為模式。根據聚類結果可以對用戶的行為做簡單分析,例如表6 中聚類類別2 表示用戶在睡覺的時間充電,聚類類別3 表明用戶有在晚上同時使用洗衣機和洗碗機的習慣。
在聚類完成后需要以聚類結果作為標簽對實時數據進行分類,之后進行概念漂移的檢測。 實時數據為晚上10 點~12 點的時間段,在這個時間段中的時間跨度動態為2 h,對其中的數據進行分類,分類結果如表8 所示,發現有4 個類別有新數據加入。

表8 實時數據分類情況
分別計算4 個類別的數據標準誤差B標準以及時間跨度中數據歸類到該集合的數據的差異度B新數據,計算數據的標準化閾值參數w,通過式(5)判別是否發生了概念漂移。 通過計算得到4 類集合中心發生了偏移,如表 9 所示,可以看到集合類別 6 和集合類別9 發生了概念漂移。

表9 概念漂移檢測結果
本文提出的檢測算法耗時較短大約0.015 s,并且通過對時間數據的分析,新的輸入數據中的確存在用戶行為模式的改變,行為發生改變的類別為類別 6 和類別9,檢測正確率為 100%。
計算時間跨度中所有數據的LOF 值,為了能夠直觀體現, 將每個時間段對應的LOF 值繪制出來,并且根據式(12)計算得到 Lmax為 1.5,如圖 3 所示。
圖3 中圓圈中的點的 LOF 指數大于 1.5,因此認為該點是偏離正常行為的數據,并且根據序號得出異常值屬于聚類類別 6 中(序號為 30 ~60 之間)。再根據數據中的序號可以確定用戶的異常行為和行為時間點。 通過數據分析得出在聚類類別6 中存在原先關閉的設備處于使用狀態,這可能是設備使用后忘記關閉, 與原先的行為相比有了新的用電行為,行為模式發生了變化。

圖3 兩小時內每一時刻LOF 的趨勢
本文針對智能家居環境下用戶的異常行為提出了一種檢測算法。 該算法能夠在保證實時性的情況下正確檢測出概念漂移,并給出用戶行為發生異常的時間點。 通過實驗得出該算法能夠實時地對用戶行為進行檢測,耗時非常短,準確性比較高。 本研究為實現智能家居環境下用戶行為異常檢測提供了新思路,能夠有效解決用戶獨自在家時所產生的安全隱患問題,為居家人士提供有效服務和安全保障。