DTW (Dynamic Time Warping) 動態時間規整


在時間序列中,需要比較相似性的兩段時間序列的長度可能並不相等,比較顯著的例子是在語音識別領域表現為語速不同,不同人的語速不同,同一個人說同一句話的語速也會不同,那如何計算時間序列下的相似度呢?這時候會發現歐式距離有點失效了,因為長度不一致了,這時候就出現了DTW算法,它相當於對某個時間序列在時間軸進行了某種扭曲(Warping), 達到一定程度的對齊再計算相似度。

DTW可以計算兩個時間序列的相似度,尤其適用於不同長度、不同節奏的時間序列(比如不同的人讀同一個詞的音頻序列)。DTW將自動warping扭曲 時間序列(即在時間軸上進行局部的縮放),使得兩個序列的形態盡可能的一致,得到最大可能的相似度。

DTW采用了動態規划DP(dynamic programming)的方法來進行時間規整的計算,可以說,動態規划方法在時間規整問題上的應用就是DTW

下面測試程序顯示了 6組時間序列 的DTW結果,左上和右下的兩組相似度較高,其DTW計算的距離(Warping Distance)也確實比較小。

 

DTW加速

  DTW雖然使用線性規划可以快速的求解,但是在面對比較長的時間序列是,O(N2)的時間復雜度還是很大。已經有很多改進的快速DTW算法,比如FastDTW,SparseDTW,LB_Keogh,LB_Improved等等。

 

參考文獻:

  [1]. FastDTW: Toward Accurate Dynamic Time Warping in Linear Time and Space. Stan Salvador, Philip Chan. 

  [2]. Wikipedia: Dynamic Time Warping

  [3]. Speech Recognition: 11.2 Dynamic Time Warping

https://www.jianshu.com/p/4c905853711c
https://blog.csdn.net/lin_limin/article/details/81241058
https://blog.csdn.net/ZHUQIUSHI123/article/details/84453560
https://blog.csdn.net/zouxy09/article/details/9140207
 https://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069036.html
https://github.com/davidmoten/fastdtw/tree/master/src
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM