时间序列分类算法简介及其在能耗数据分类上的应用
本文首先簡要介紹最近幾年來時間序列分類算法的最新研究成果,包括dynamic time warping的各種改進技術和相關研究,以及最新的聚合式算法(ensemble algorithm)。其次以根據能耗數據來監測服務器運行程序的研究為實例,介紹如何對實際應用中的時間序列數據進行更準確的分類。
一、時間序列分類算法綜述
??時間序列分類問題(Time Series Classification, TSC)是數據挖掘中的一個經典問題。其核心問題定義如下:
給定時間序列集合S,對任意時間序列x屬于S, 其所屬類別(label)為lx。給出任意測試數據x‘,求預測其可能所屬的類別。
??比如有一些人參與不同的運動項目。 假定我們采集了不同項目的運動軌跡數據集,那么給定一個未知的人的運動軌跡,判斷其參與的運動項目就是個典型的時間序列分類問題。
??上述問題與基于歐式距離的經典分類問題并無差別。然而在實際中,經典分類算法在時間序列分類上的表現一般較差,其根本原因在于時間序列數據與傳統的空間點數據存在關鍵不同:對于一個時間序列x,其每一個時刻的測量值對應于傳統歐式空間的一個維度。在傳統的歐氏空間中,維度之間的關聯關系是有限的,不同維度的數值大小可以千差萬別。然而對于一個時間序列,其所有的信息都包含在不同時刻的變化中。時間序列通常會按照某一些模式變化,因此其數據在不同維度的上的關聯性非常重要。基于此差異,時間序列數據無法很好地被傳統基于歐式距離的分類算法所求解。
??由于歐式距離不能很好地針對時間序列的波動模式進行分類,研發更適合時間序列分類的距離度量就成為關鍵,這其中最經典的時間序列距離度量就是Dynamic Time Warping (DTW)。 DTW的原理如下:
?
圖1
??針對序列x和y,DTW計算在卷曲時間軸的情況下兩個序列最好的匹配結果,并以這個匹配結果來計算他們之間的距離。如上圖所示,x和y兩個序列有相同的模式但是y序列在時間上移后了。如用歐式距離,x與y因距離較大很可能會被歸為不同類別; 而DTW可以準確判別出x和y模式上的類似并得出一個較小的距離度量。實際上,DTW不僅可以考慮到上述簡單的平移情形,還能考慮到時間軸上局部的縮放變形等。DTW通過對時間序列波動模式的分析可得到更好的時間序列分類結果。研究表明,在時間序列分類問題上,DTW距離度量配合簡單的最小距離分類法(nearest neighbor)就可以取得較傳統歐式距離算法(如SVM、經典多層神經網絡、決策樹、Adaboost)壓倒性的優勢。
?
??DTW更進一步衍生出多種不同的變種,例如由Keogh和 Pazzani 提出的基于序列一階導數的改進便取得了良好的效果;其中一種簡單的方法叫Complexity Invariant distance (CID),其利用一階導數信息對DTW距離做計算,在某些問題上具有突出效果。
??除了DTW,還有其他考量時間序列的波動模式算法。例如Ye 和Keogh提出的Shapelet方法:考察序列中具有代表意義的子序列來作為Shapelet特征而進行分類。Lin等人提出了基于字典的方法,將序列根據特定的字典轉化為詞序列,從而進行分類。Deng提出了基于區間的方法,從區間中提取波動的特征。
??除了上述方法外,聚合算法(將多種不同算法聚合在一起)的研究也有了長足的進步。最近提出的COTE算法幾乎將上述所有不同分類算法聚合在一起,得到了優異的分類效果。想要進一步了解上述主要算法的細節以及更全面的時間序列分類算法綜述,請參考“The Great Time Series Classification Bake Off: An Experimental Evaluation of Recently Proposed Algorithms. Extended Version”
二、基于能耗數據來監測服務器運行程序
??時間序列分類算法具有廣泛的應用。下面介紹一個在不干擾server運行狀態下,基于服務器的能耗數據來判斷正在運行的程序的應用。
??該應用的核心技術路線如下:
首先在一個server上運行各種不同的程序,采集運行程序時server的能耗時間序列;運用這些數據(程序名作為label)訓練一個分類模型;然后給定任意檢測到的能耗數據,判斷正在運行的程序。
??我們收集了13類數據進行實驗。這些數據一共有3000條,每條長度為200個時間節點。這些數據記錄了不同程序運行時server的能耗(W)數據。
??為了顯示時間序列分類算法的優勢,我們首先采用傳統的分類算法分析這些數據。結果顯示,在所測試的算法中,即便是表現最好random forest其分類準確率僅達63%左右, 而標準的多層神經網、SVM及基于歐式距離的算法只有50%左右的準確率。之所以準確率較低,是因為當我們把時間序列看作歐式空間中的點數據集時,其可分性非常差。
?
圖2
??將基于八種不同方法(從經典PCA到效果領先的基于流形學習的降維方法)所采集的數據投射到一個二維空間,可以得到如圖2所示的效果圖。可以看到,并沒有一種方法可以呈現出非常好的類別分布。
?
??鑒于此,我們提出基于DTW的時間序列分類方法對能耗數據進行分類與判斷:
??首先,雖然采用DTW距離可將分類準確度提高至84%,但分類速度慢,因此我們提出一種考察局部模式信息、對DTW距離函數加以改進的方案,即Local Time Warping (LTW)。 LTW被設計為非交換率,也就是LTW(x, y)可能不等于LTW(y, x):將LTW與最近臨分類算法相配合來判斷一個序列x’屬于哪一類時,我們只需要找哪個訓練數據y離x’最近,而不需要x‘也離y很近。這么做可使距離衡量的定義更為寬松,從而可對復雜分布的數據進行更好地分類。采用LTW這一DTW距離函數改進方案,算法的時間效率可提升近10倍(相對于經典DTW實現),分類準確率可達到88%。
??同時,我們引入基于LSTM(Long Short Term Memory Neural Network)的分類算法。LSTM是一個具有序列數據建模能力的神經網絡。隨著深度學習的蓬勃發展,它的突出效果也日益顯現。我們采用了一個經典的LSTM層來對數據進行分類,結構如下:
?
?
圖3
?
??經測試,LSTM算法的分類準確率也達到88%左右。
??傳統聚合算法并沒有考慮到LSTM。LSTM在上述問題上的優異表現證明可以聚合LSTM與傳統基于DTW的方法。雖然兩種算法的分類效果類似(88%),但由于兩者在原理上截然不同,可以預見他們準確預測的樣本會有明顯差別。我們將LTW和LSTM合二為一:將兩者的分類概率向量簡單相加,便可取得93%左右的實際分類效果。
??綜上,這種聚合LTW和LSTM的時間分類算法,對server能耗序列進行分類的準確率可達93%。這說明僅僅利用server的能耗數據,我們就有很大概率準確檢測server內部正在運行何種程序。這樣的檢測機制可以推廣到所有的電器。
三、結語
??本文簡單總結了現有基于DTW的分類方法,并針對服務器能耗數據提出了一種聚合改進的距離衡量方法LTW和LSTM神經網絡的方法,實現了93%的分類準確率。
??時間序列分類問題是一個非常有意思的問題,尤其是當對比DTW和LSTM的不同作用機制時。運用DTW計算距離,針對不同的序列對,計算中的序列index warping是不同的。DTW實際采用動態規劃來計算距離。這是一個嚴格意義的程序而不是一個簡單的計算公式。而LSTM是一個固定的訓練好的神經網絡。針對不同的序列,其網絡權重在訓練好之后都不會變化,卻可以達到類似DTW的效果。這是否在某種程度上證明LSTM可以類比動態規劃呢?
?
https://mp.weixin.qq.com/s/8Hp6x4MPaVnP4cW3vADzvQ
總結
以上是生活随笔為你收集整理的时间序列分类算法简介及其在能耗数据分类上的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c/c++反混淆方法
- 下一篇: 如何用TensorFlow训练聊天机器人