摘要:針對時間序列離群點檢測問題,提出了基於CNN-AutoEncoder和集成學習的CAE-ENSEMBLE深度神經網絡算法,並通過大量的實驗證明CAE-ENSEMBLE算法能有效提高時間序列離群點檢測的准確度與效率。
本文分享自華為雲社區《VLDB'22 CAE-ENSEMBLE論文解讀》,作者:雲數據庫創新Lab。
導讀
本文(Unsupervised Time Series Outlier Detection with Diversity-Driven Convolutional Ensembles)是由華為雲數據庫創新Lab聯合丹麥Aalborg University與電子科技大學發表在頂會VLDB’22的文章。該文章針對時間序列離群點檢測問題,提出了基於CNN-AutoEncoder和集成學習的CAE-ENSEMBLE深度神經網絡算法,並通過大量的實驗證明CAE-ENSEMBLE算法能有效提高時間序列離群點檢測的准確度與效率。VLDB是CCF推薦的A類國際學術會議,是數據庫和數據挖掘領域頂級學術會議之一。
1. 摘要
隨着交通、醫療和金融等方面的全面數字化,大量的傳感器被布置在我們生活的環境中,產生了各種各樣的時間序列數據,隨即催生出大量新的應用。本文研究時間序列的離群點檢測問題,盡管過去有很多相關的研究,現有的離群點檢測方法在算法的准確性與效率方面還是存在不足。本文針對這些問題提出了相應的解決方法,主要貢獻如下:
- 提出了CAE-ENSEMBLE算法,本算法包括基於CNN的自編碼器和多樣性驅動的集成學習方法,其中基於CNN的自編碼器用於對時間序列的時間依賴進行高效建模,多樣性驅動的集成學習方法進一步提升了算法的准確性。
- 本文提出了一種無監督的超參數選擇方法,減少了對昂貴標簽數據的依賴。
- CAE-ENSEMBLE算法的表現在真實的時間序列數據集上擊敗了現有的方法。
2. 背景
時間序列離群點檢測 給定一個長度為CC的時間序列\mathcal{T}=<s_1, s_2, ..., s_C>T=<s1,s2,...,sC>,即在第tt時刻的觀測值為s_tst。 離群點檢測的目標在於給每個觀測值s_tst計算一個離群點分數\mathcal{OS}(s_t)OS(st),這個離群點分數越大,這個觀測值越可能是離群點。比如可以根據領域知識預先設定一個閾值\epsilonϵ,那么如果\mathcal{OS}(s_t)>\epsilonOS(st)>ϵ, s_tst就被認為是離群點。
由於自動編碼器屬於無監督模型,且對時間序列數據具有強大的學習能力,本文采用自動編碼器作為基本模型,用於時間序列離群點檢測。具體來說,我們首先將原始時間序列\mathcal{T}T輸入到編碼器中進行表示學習,然后將學習到的表示輸入到解碼器中進行復原,得到重建的時間序列\hat{\mathcal{T}}T^,最后計算重建差異(reconstruction error),即\mathcal{T}T與\hat{\mathcal{T}}T^之間的差異,作為離群點分數。
如下圖中時刻3的觀測值的重建差異很大,它就很有可能是一個離群點。
自動編碼器 自動編碼器由一個編碼器(Encoder)和解碼器(Decoder)組成,給定輸入X = [x_1, x_2, ..., x_C]X=[x1,x2,...,xC],則相對應的自動編碼器輸出為\hat{X} = [\hat{x}_1, \hat{x}_2, ..., \hat{x}_C]X^=[x^1,x^2,...,x^C],用於離群點檢測的自動編碼器目標函數為:
其中\theta_{AE}θAE代表自動編碼器的參數。我們將重建損失RE定義為||x_i - \hat{x}_i||^2∣∣xi−x^i∣∣2,若重建損失RE超過設定好的閾值\epsilonϵ,則代表這個點為離群點。
本文提及了6種編碼器:普通自動編碼器AE(由全連接層組成)、基於RNN的自動編碼器RAE、基於CNN的自動編碼器、集成的普通自動編碼器AE-Ensemble、集成的基於RNN的自動編碼器RAE-Ensemble、集成的基於CNN的自動編碼器CAE-Ensemble。這六種編碼器在建模時間依賴、效率和多樣性方面的區別如下圖所示。
3. CAE-ENSEMBLE算法設計
CAE-ENSEMBLE算法設計如下圖所示,包含數據預處理、集成的CAE模型和無監督超參選擇三部分,我們將從這三部分分別介紹本模型。
A. 數據預處理
數據預處理的目的在於將原始的時間序列數據處理為時間序列窗口數據,並用於模型訓練和測試。防止減少不同特征對最后重構損失RE的影響,我們首先將原始數據進行標准化,公式如下:
其中\muμ與\sigmaσ分別是訓練集中觀測值xx的均值和標准差。
將數據標准化后,設定滑動窗口大小為ww,然后對當前的時間序列觀測數據進行滑動窗口,若原始時間序列為\mathcal{T}=<s_1, s_2, ..., s_C>T=<s1,s2,...,sC>,則第一個窗口為<s_1, s_2, ..., s_w><s1,s2,...,sw>,第二個窗口為<s_2, s_3, ..., s_{w+1}><s2,s3,...,sw+1>。
B. 集成的CAE模型CAE-ENSEMBLE
在本節中,首先,我們將介紹如何用基於CNN的自動編碼器對時間序列數據進行建模,然后介紹多樣性驅動的集成方法構建CAE-ENSEMBLE模型。
(1). 基於CNN的自動編碼器(Convolutional Sequence-to-Sequence Autoencoder CAE)
本文采用基於CNN的自動編碼器CAE作為集成學習的基礎模型,並對時間序列進行建模,CAE結合了卷積神經網絡CNN與Seq2Seq模型,結構如下圖所示。首先,我們將一個滑動窗口的時間序列數據輸入到由一維卷積組成的編碼器中學習數據的時間依賴,然后將同樣的數據和編碼器學到的隱藏表示一起輸入到由一維卷積組成的解碼器中進行特征學習,最后利用注意力機制組合編碼器和解碼器學習到的特征,並用於重構時間序列。
在數據輸入階段,我們首先對原始滑動窗口數據進行特征嵌入,包含位置與觀測嵌入兩種方法,具體實現如下圖所示。
在編碼階段,編碼器采用堆疊的卷積層學習時間序列的時序特征,下圖給出了一個由三層卷積網絡組成的編碼器示例。
解碼器與編碼器類似,但存在輕微的不同,我們利用padding的方式確保在tt時刻的輸入不晚於tt,下圖給出了一個由三層卷積網絡組成的解碼器示例。
然后,利用注意力機制學習局部的時間依賴,注意力機制公式如下。
最終,對解碼器最后一層網絡生成的隱藏特征,利用全連接層進行重構,公式如下:
其中,D^{(L+1)}D(L+1)代表解碼器最后一層學習到的隱藏特征。
(2). 多樣性驅動的集成方法(Diversity-driven Ensembles)
為了解決現有方法准確度低和訓練成本高的問題,我們將CAE作為基礎模型,提出了一個新穎的多樣性驅動的集成方法CAE-ENSEMBLE,如下圖所示。與傳統方法不同的是,我們一個一個的生成基礎模型,而不是采取分別生成的方式。同時,我們還設計了一個用於保證模型多樣性的目標函數,防止模型過於相似,以提高准確度。同時,我們在訓練模型時,將一部分前一個模型的參數遷移到當前訓練的基本模型中,這個操作可以顯著地減少訓練時間,提升效率。
目標函數 CAE-ENSEMBLE目標函數包含兩部分:重構損失\mathcal{J}_{f_m}Jfm和模型的多樣度損失\mathcal{K}_{f_m}Kfm,公式如下。
離群點分數計算 為了防止過擬合,我們采用多個模型計算出來的離群點分數\mathcal{OS}(x_t)OS(xt)的中位數作為最終的離群點分數。
其中MM代表基礎模型的個數。
C. 無監督超參選擇
本文有三個重要的超參:滑動窗口大小ww,參數轉移比例\betaβ,平衡參數\lambdaλ,由於我們的方法是無監督的,首先,我們將划分無標簽的訓練集和驗證集,然后我們為這三個參數設定一個范圍,然后利用隨機搜索,通過最小化重構損失確定一個最優的超參組合,,其中利用重構損失可以使得我們的算法不需要標簽,達到無監督的作用。同時,在尋找某個參數的最優值的過程中,我們會將另外兩個參數固定在默認值。具體算法如下圖所示。
4. 實驗
本文選擇了五個常見的公開數據集ECG、SMD、MSL、SMAP、WADI,並選取了10個baseline與本文提出的CAE-ENSEMBEL算法比較。根據上述的無監督超參選擇方法,對不同數據集設定的超參設置如下。
實驗結果 我們在五個數據集上分別做了對比實驗,用Precision、Recall、F1、PR和ROC作為評價手段,總體的精度結果如下圖,可以發現CAE-Ensemble的結果在大部分情況下優於baselines。
我們還在ECG與SMAP兩個數據集上對對離群點的比例KK做了敏感度分析,發現在ECG數據上,K選5效果最好,而在SMAP數據上,K選12效果最優。
我們對模型的四個部分分別進行了消融實驗,從實驗結果中可以看出每個模塊對於我們的任務都有一定的貢獻。
同時,我們去除了模型的多樣性部分,並與完整的模型進行對比,發現CAE-Ensemble模型在多樣性方面遠遠超過去除多樣性的模型。
最后我們還對比了不同模型的訓練時間,結果如下圖,可以看出我們的模型在提升精度的同時,也提升了算法的效率。
5. 總結
本文針對時間序列的離群點檢測問題,提出了基於CNN-AutoEncoder和集成學習的CAE-ENSEMBLE算法,通過大量的實驗測試,證明了CAE-ENSEMBLE算法表現比現有的無監督方法優異,並能提高離群點檢測的精度和效率。
華為雲數據庫創新lab官網:https://www.huaweicloud.com/lab/clouddb/home.html