DTW算法挖掘億萬級時序數據,其優化能耐幾何?

概述

常見的距離度量尺度有:歐式距離,馬氏距離、曼哈頓距離。

歐式距離在n維空間中表示為:
歐幾里得距離

常用于計算兩個等長序列的相似性,序列可以包含股票、DNA等。對于不等長的序列,計算相似性關鍵是在于計算之前或者過程中,找到兩個時序數據上點的對應關系,因為它不像等長數據已經存在了數據點的一一對應關系。

等長數據,比如:比較近10天兩只開盤股票走勢k線圖
不等長數據,比如:相同時間內不同抽樣頻率(Hz)的心電圖、兩段“麻煩請開門”的語音音頻

因此,日本學者Itakura最早提出 Dynamic Time Warping(下文簡稱DTW,中文常翻譯為“動態時間規整”)算法,它出現的目的也比較單純,是一種衡量兩個長度不同的時間序列的相似度的方法——在對齊兩個序列的過程中通過定義的距離計算公式計算序列的相似度。其應用廣泛,主要在于模版匹配,如孤立詞語音識別、手勢識別、DNA序列配對等。

這里,距離計算公式包括(但不限于)上文提到的歐式距離。

DTW通過把時間序列進行延伸和縮短,來計算兩個時間序列性之間的相似性,規整后兩個序列之間的距離應該在所有對齊方案中是最小的,即達到feature-to-feature的對齊。

原理

'dtw算法原理'

以上面的Q,C序列為例,DTW算法的求解過程的直觀理解為構建一個nxn的矩陣(此處假設Q和C的時間序列長度都為n——當然也可以不等長——矩陣中的元素(i,j)表示序列Q的時間點qi和序列C的時間點cj之間的歐式距離),目標是在矩陣中找到一條從(0,0)到(n,n)的路徑,使得路徑上的所有元素之和最小。

“矩陣中的元素(i,j)表示序列Q的時間點qi和序列C的時間點cj之間的歐式距離”,下圖進行說明。


1.png

“目標是在矩陣中找到一條從(0,0)到(n,n)的路徑,使得路徑上的所有元素之和最小”,下圖進行說明。


2.png

這里提及dtw的幾個約束:

  1. local constraint(在矩陣中表示為定義的“步”的方向都得朝向右上角,每一步都得離終點更近,否則會導致crossing line)
  2. global constraint(不可跨越一定限度的數據點進行對齊,否則會導致對齊密度不均衡)
  3. start&ending contraint(頭尾數據點各自對齊)
  4. weight(路徑權重的設置,平衡業務偏好和local內的距離偏好)
  5. distance(距離度量方式)

允許在對齊過程中,有些點被跳過,沒有被對齊——取決于定義的“步”。
由于矩陣中路徑上的每個點都能分解為一個“多點到達”的子問題結構,因此dtw就是通過動態規劃法(dp,dynamic programming)進行求解的一個例子。

在后面給出的DTW算法的python簡單實現中,通過在循環中約束i和j的關系實現global constraint——通過簡單畫圖可以了解。

問題與優化

那簡單介紹完DTW的原理之后便引入了這篇論文《KDD2012 Best Paper-"Searching and Mining Trillions of Time Series Subsequences under Dynamic Time Warping”》[1]。

上文提到,DTW在多個領域都有所應用。隨著互聯網的到來和數據量的爆發(很多生產環境數據量早已突破萬億級別,而學術界仍停留在百萬、十億級數據集的研究上),原始DTW的實現弊病暴露,場景的應用對算法的性能提出了更高的要求,而該論文的核心正是通過對其他論文的review,現有優化方式的review以及對提出的計算優化方案的review來告訴我們,優化后的DTW(論文稱為UCR suite)仍然是最強最快的時序相似度計算方式。

論文首先指出以下假設或事實:

  1. 標準化(Z-normalization)非常重要,不僅需要在整個數據集上做,在計算兩序列相似度之前,還需要在兩個序列上單獨做。
  2. 在巨量數據集數據庫中檢索變長序列,理論上可行,但實際上不可行。

已知的優化方法:

  1. 計算過程中歐式距離使用平方代替平方根,直到獲得最小距離(的平方)時再開方獲得最終結果。
  2. 使用lower bound技術,偽代碼思想如下:
Algorithm Lower_Bounding_Sequential_Scan(Q)
best_so_far = infinity; 
for all sequences in database 
    LB_dist = lower_bound_distance(Ci,Q); 
        if LB_dist < best_so_far
            true_dist = DTW(Ci,Q);
            if true_dist < best_so_far
                best_so_far = true_dist;
                index_of_best_match= i;
            endif
        endif
endfor

lower bound具體計算方法有多種,如穩重提到的LB_kim,LB_keogh。

  1. 在計算歐式距離或lower bound時采用早停技術。
  2. 因為計算DTW真實距離(最優路徑)時采用 DTW(Q1:K,C1:K) + LB_Keogh(QK+1:n,CK+1:n)作為實時的距離(為真實距離的lower bound,K為任一中間數據點序號),在此采用早停技術。
  3. 使用多核機器并行計算(眾所周知)。

論文提出的新的優化方法:

  1. 標準化比計算歐幾里得距離的耗時還要長一些,因此考慮在標準化過程中結合計算歐式距離或lower bound,引入早停技術。
  2. 對時序進行重排序

We conjecture that the universal optimal ordering is to sort the indices based on the absolute values of the Z-normalized Q.
For this we simply take each Ci and sort them, largest first, by their sum of their contributions to the Euclidean distance.
We compared this empirically optimal ordering with our predicted ordering (sorting the indices on the absolute values of Q) and found the rank correlation is 0.999.

  1. 對備查序列建立包絡,而不是查詢序列。
  2. 將多種lower bound計算方式串聯。
    • 因為lower bound技術實證有助于加速搜索過程,因此在研究界對此的研究很繁榮。每一種的緊度(tightness)和計算速度都不盡相同。下圖為證:[圖片上傳失敗...(image-6d35f9-1571736906097)]
      可見,緊度和計算復雜度是成正比的,因此沒有最佳的技術,只有最合適的技術。作者的想法是將這些技術從復雜度低到高串聯起來,如果計算完和lower bound計算完距離后沒有超過目前最小距離(the best-so-far),那就接著計算上述方案(早停版的DTW)——不管是O(1)還是O(nR),都遠小于O(n2)。
  3. 另外,對于存在重抽樣的序列(如[2.34, 2.34, 2.34, 2.01, 2.01, 2.01, 1.99, 1.99, 1.99,... ]),除了使用以上UCR-dtw方法,作者有以下建議:
    1. 先對原數據的子集按照比例n下采樣,使用UCR-dtw算法計算出距離rD;
    2. 再在完整數據集上運行,提前設置參照距離為rD*10。
    3. 如此之后,在特定數據集上能提升3倍的速度。

未完待續,歡迎留言交流。
此處可獲取代碼,結合理解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377