比如說,給定壹個樣本序列X和比對序列Y,Z:
X:3,5,6,7,7,1
Y:3,6,6,7,8,1,1
Z:2,5,7,7,7,7,2
請問是X和Y更相似還是X和Z更相似?
DTW首先會根據序列點之間的距離(歐氏距離),獲得壹個序列距離矩陣 MM,其中行對應X序列,列對應Y序列,矩陣元素為對應行列中X序列和Y序列點到點的歐氏距離:
DTW通過對時間序列波動模式的分析可得到更好的時間序列分類結果。研究表明,在時間序列分類問題上,DTW距離度量配合簡單的最小距離分類法(nearest neighbor)就可以取得較傳統歐式距離算法(如SVM、經典多層神經網絡、決策樹、Adaboost)壓倒性的優勢。
DTW更進壹步衍生出多種不同的變種,例如由Keogh和 Pazzani 提出的基於序列壹階導數的改進便取得了良好的效果;其中壹種簡單的方法叫Complexity Invariant distance (CID),其利用壹階導數信息對DTW距離做計算,在某些問題上具有突出效果。
除了DTW,還有其他考量時間序列的波動模式算法。例如Ye 和Keogh提出的Shapelet方法:考察序列中具有代表意義的子序列來作為Shapelet特征而進行分類。Lin等人提出了基於字典的方法,將序列根據特定的字典轉化為詞序列,從而進行分類。Deng提出了基於區間的方法,從區間中提取波動的特征。
除了上述方法外,聚合算法(將多種不同算法聚合在壹起)的研究也有了長足的進步。最近提出的COTE算法幾乎將上述所有不同分類算法聚合在壹起,得到了優異的分類效果。
這壹類的方法都是壹些通過某種度量關系來提取相關特征的方法,如詞袋法,通過找到該時間序列中是否有符合已有詞袋中的特征(序列的樣子),將壹個序列用詞來表示,再對詞進行分類。而其他的基於特征的方法都是利用了類似的方法,如提取統計量,基於規則等,再通過分類模型進行分類。
1、MLP、FCN、ResNet
MLP的輸入是壹個向量(數組),通過全連接的形式對整體數組的每壹個元素逐層賦予權重,並求得最後的分類,這種方法是壹種比較粗暴的學習方法,直接學習所有元素直接的線性或非線性相關關系,但是並沒有去深度挖掘數組中更好的表現特征,分類效果不佳。
FCN是將MLP中的全鏈接層用卷積層進行替代,Resnet也是,但是其中的卷積層都用壹維卷積核進行了替代。
來自於Time Series Classifification from Scratch with Deep Neural Networks: A Strong Baseline.可以看到深度學習的方法效果基本上與傳統方法相接近,甚至有所超過,其中整體表現最好的是FCN。
LSTM_FCN的方法比較簡單,是將輸入分別輸入到兩個分支中,LSTM和FCN,並在最後將兩個輸出分支進行concat進行softmax獲得分類結果。在這篇論文中,作者說這種方法取得了比FCN更好的效果。
在其他的壹些比賽方案中,也有resnet+LSTM+FC的組合形式,通過Resnet的壹維卷積先提取相關特征,然後通過LSTM學習壹維特征向量的相關關系,再進行分類,可能針對於不同的問題還是要試試才知道哪個的效果更加好。
BiGRU-CNN與以上方法相比實際上並沒有做什麽大的改進,就是將LSTM分支替換成雙向的GRU分支。