最近讀了SIGKDD在2010年的最佳論文,Searching and Mining Trillions of Time Series Subsequences under Dynamic。這篇文章對DTW(Dynamic Time Warping)算法改進并成功的應用在了萬億級別的數據集上。
DTW
DTW有三個約束條件:
- 邊界條件:所選路徑必須從左下角出發,右上角結束
- 連續性:不能跨過某個點去匹配,只能匹配和自己相鄰的點
-
單調性:點與點的匹配是單調的,不可以跨越點。
結合連續性和單調性約束,每一個格點的路徑就只有三個方向了。例如如果路徑已經通過了格點(i, j),那么下一個通過的格點只可能是下列三種情況之一:(i+1, j),(i, j+1)或者(i+1, j+1)。
使用改進DTW的四個前提
-
Time Series Subsequences must be Normalized
為了使兩個子序列的比較更有意義,所以子序列必須被歸一化。論文使用有槍和無槍舉了例子,在歸一化后的準確率更高。
來自論文 - Dynamic Time Warping is the Best Measure
DTW經過很多的測試,驗證了DTW在搜索子序列上是最好的方式了。 - Arbitrary Query Lengths cannot be Indexed
無法索引任意長度的索引。如果長度太長,可能會超出內存的承受范圍,并在使用任意長度的時候,會使歸一化沒有多少意義。 - There Exists Data Mining Problems that we
are Willing to Wait Some Hours to Answer
對于億級別的數據,可能會花費一些時間等待結果,所以如果你沒有要求立即得出結果,就可以使用這種方法。
當前對DTW的優化
- Using the Squared Distance
DTW和歐式距離在計算的時候都使用了開根的操作,然而這一操作顯然是多余的。當我們不開根號時,其距離排序也不會因此而改變,反而會減低時間的消耗。 -
Lower Bounding
一個典型的加快序列搜索速度的方式是計算一個相似度下界,一旦當前序列的相似度低于下界,就停止計算,轉去計算下一個子序列。文中提了兩種計算下界的方式
來自論文
-
只計算Q和C的開頭或結尾作為LB,時間復雜度為
,還有一種方式是計算兩段序列的最大值和最小值的差值作為
-
Early Abandoning of
and
在計算ED或的時候,當累計的誤差大于best-so-far時,停止計算。
圖片來自于論文 -
Early Abandoning of
在計算之前需要計算
,一旦
超過了閾值,那么
也不用計算。
圖片來自于論文 Exploiting Multicores
Exploiting Multicores指的是多核計算,很簡單,不用過多解釋。
新的優化方式(UCR優化)
-
Early Abandoning Z-Normalization
在對子序列進行比較前,需要計算均值和方差來對序列進行歸一化。然后可以在標準化的過程中計算DTW,這樣就可以節約大量時間。并且此方法可以和提前停止結合起來,一旦超過LB,就停止歸一化和計算DTW。這樣節約了大量時間。偽代碼如下:
來自論文
為了避免累計浮點誤差,每一百萬條子序列執行一次完全標準化
-
Reordering Early Abandoning
傳統計算距離或者歸一化的時候,直接從左到右計算。然而這種方式一定是最好的嗎?論文提出使用重排的方式,可以減少計算。下圖的左邊是傳統方式,右邊是新的方式,左邊計算了9次才知道這段不可以用,右邊找了5次。
來自論文
文章給出了選擇最優順序的方法,對Q序列Normalized后的絕對值排序作索引,選擇Q是因為搜索時Q序列會和很多序列比較。因為
序列大部分是高斯分布,均值為0,所以Q排序后的normalized值和0的距離最大,一開始距離計算就最大,可以更早的停止。
原文如下:
We conjecture that the universal optimal ordering is to sort the
indices based on the absolute values of the Z-normalized Q. The
intuition behind this idea is that the value at Qi will be compared
to many Ci’s during a search. However, for subsequence search,
with Z-normalized candidates, the distribution of many Ci’s will
be Gaussian, with a mean of zero. Thus, the sections of the query that are farthest from the mean, zero, will on average have the largest contributions to the distance measure. -
Reversing the Query/Data Role in
在這里需要交換Q和C的角色,對C做Lower Bounding
來自論文 -
Cascading Lower Bounds
使用多種方式計算LB而不是局限于一種方式計算LB,這是為最有效的方式。具體的
在計算LB時,按照時間復雜度從低到高,一步步的使用不同的方式計算LB,每一步都可以剪枝掉很多計算,并不同的剪枝方式側重點不同,可以更有效地剪枝。
使用這種方式可以在大數據集上計算DTW時剪枝掉超過99.9999%的運算。
來自論文
實驗和結論
為了確保改進的DTW的有效性,作者使用改進的DTW共進行了分別在金融、EEG數據集、DNA、姿勢數據上進行了四個實驗。在這四個實驗上都取得了較大的領先。
參考文獻
- https://zhuanlan.zhihu.com/p/87630320
- Searching and Mining Trillions of Time Series Subsequences under Dynamic
Time Warping - https://blog.csdn.net/zhaoyin214/article/details/102651244
- https://blog.csdn.net/zouxy09/article/details/9140207