DDTW 導數動態時間規整算法

DDTW 導數動態時間規整算法

做者:鄭培前端

Derivative Dynamic Time Warping(DDTW) 是對 Dynamic Time Warping (DTW) 的一種改進。緩解了經典DTW算法所產生的「奇點」(Singularities)問題,本文將從如下幾個方面介紹DDTW算法。算法

一、算法背景

時間序列是幾乎每個科學學科中廣泛存在的數據形式。時間序列的常見處理任務是將一個序列與另外一個序列進行比較,以比較兩個時間序列的類似度。在某些領域,使用很是簡單的距離度量(例如歐式距離)就足夠了。app

image.png

可是,在大多狀況下,兩個序列的整體組成形狀大體相同,可是這些形狀在X軸上並不對齊。(圖1)學習

爲了找到這些序列之間的類似性,或做爲對它們進行平均以前的預處理步驟,咱們必須「扭曲」一個(或所有兩個)序列的時間軸以實現更好的比對。動態時間規整(DTW)是一種有效實現這種規整的技術。大數據

例如圖A所示,實線和虛線分別是同一個詞「pen」的兩個語音波形(在y軸上拉開了,以便觀察)。能夠看到他們總體上的波形形狀很類似,但在時間軸上倒是不對齊的,假設一個序列中的第i個點與另外一序列中的第i個點對齊將產生「悲觀差別」(pessimistic dissimilarity)。而在圖B中,DTW就能夠經過找到這兩個波形對齊的點,這樣計算它們的距離纔是正確的。 網站

image.png
(圖1) 所以,DTW顯示出了很好的能力,除了在數據挖掘(Keogh&Pazzani 2000,Yi et. al.1998,Berndt&Clifford 1994)上的應用,DTW還被用於手勢識別(Gavrila&Davis 1995),機器人技術(Schmill et. al 1999),語音處理(Rabiner&Juang 1993),製造業(Gollmer&Posten 1995)和醫藥行業(Caiani et. al 1998)。

二、經典動態時間規整算法

假設咱們有兩個時間序列Q和C,長度分別爲n和m,其中: ui

image.png
爲了對齊這兩個序列,咱們須要構造一個n x m的矩陣網格,矩陣元素(i, j)表示qi和cj兩個點的距離d(qi, cj)(也就是序列Q的每個點和C的每個點之間的類似度,距離越小則類似度越高。這裏先無論順序),通常採用歐式距離。每個矩陣元素(i, j)表示點qi和cj的對齊。有了這個矩陣,咱們就可以對兩個時間序列之間的距離進行計算,並顯示出一條規整路徑warping path(W)。因爲有許多不一樣的對時間軸的「扭曲」方式,所以咱們可以獲得不少條規整路徑(W的公式以下),但咱們的目標是找到一條最短的規整路徑,以判斷兩條時間序列之間的「距離」也就是類似度,而如何快速地找到這條路徑呢?咱們發現動態規劃(Dynamic Programming)能夠爲咱們提供很大的方便。 Dynamic Programming算法能夠歸結爲尋找一條經過此網格中若干格點的路徑,路徑經過的格點即爲兩個序列進行計算的對齊的點。
image.png
w的第i個元素爲w=(i,j)定義了兩條時間序列的映射。而且,規整路徑通常受到如下幾種約束條件。 1)邊界條件:定義了規整路徑必須在矩陣的對角元素中開始和結束; 2)連續性:這將規整路徑中的容許步驟限制爲相鄰的單元(包括對角相鄰的單元); 3)單調性:這迫使W中的點在時間上單調進行。

結合連續性和單調性約束,每個格點的路徑就只有三個方向了。例如若是路徑已經經過了格點(i, j),那麼下一個經過的格點只多是下列三種狀況之一:(i+1, j),(i, j+1)或者(i+1, j+1)。 人工智能

image.png
由上文所述,咱們能夠經過比較知足以上條件全部規整路徑找出最短的規整路徑,可是DP爲咱們提供了一個更好地方法來計算最短路徑。咱們首先定義一個累積距離cumulative distance γ,累積距離γ(i,j)爲當前格點距離d(i,j),也就是點qi和cj的歐式距離與能夠到達該點的最小的鄰近元素的累積距離之和:
image.png
經過動態規劃算法,咱們能夠較簡單地獲得最短的累積距離。

三、動態時間規劃的「奇點」問題

DTW算法最重要的特徵就是經過「扭曲」X軸來解釋Y軸變量,以達到使時間序列對齊的目的。可是簡單的經過Y軸的變量值來扭曲X軸會致使「不直觀」(unintuitive)的對齊,其中一個時間序列上的單個點會映射到另外一個時間序列的一部分上。咱們稱這種咱們不指望看到的行爲爲「奇點」(singularities)。 設計

image.png

已經提出了不少臨時的方法來緩解這種奇點問題,這些方法都具備一個共同點,即基本上都限制了可能的「扭曲」。可是,它們形成的缺點是,可能阻止發現「正確的」「扭曲」。 所以,咱們引入了Derivative DTW 來改進這種問題。3d

四、導數動態時間規整算法

如前文所述,DTW算法粗暴地(wildly)根據Y軸變量的值對X軸進行warp,這樣在Y軸變量有細微變更時很容易形成奇點問題,以下圖所示。而最正確的時間序列的對齊應該是特徵之間的對應(feature to feature),因而咱們考慮比DTW更高一層次的特徵選取,根據形狀(shape)來進行對齊。

image.png

4.一、DDTW算法細節

那麼如何才能獲取關於形狀的信息,咱們知道一階導數能夠反映斜率,而斜率是咱們判斷時間序列形狀的一個指數,所以咱們經過考慮序列的一階導數來得到有關形狀的信息,所以將咱們的算法稱爲Derivative Dynamic Time Warping(DDTW)。 如前所述,咱們構造了一個n×m矩陣,其中矩陣的(i th,j th)元素包含兩個點q i和c j之間的距離d(q i,c j)。DTW算法根據歐式距離來計算兩個時間序列對應點之間的距離,DDTW則經過qi和cj之間估計導數差值的平方來代替DTW算法的距離公式。在這裏咱們不去考慮繁瑣精確的一階導數計算公式,反之咱們使用簡單的導數估計方法,以增長方法的泛化性。估計導數公式以下:

image.png
你們能夠看到,該估計值只是經過該點及其左鄰點的直線的斜率以及經過左鄰點和右鄰點的直線的斜率的平均值來得出的。值得注意的是該公式比僅利用兩個數據點對於離羣點更具備魯棒性。另外值得注意的是該公式並不包括第一個與最後一個點,反之是運用第二個點與倒數第二個點來代替。
image.png
如下是簡單的一個例子。
image.png

五、實驗與結果

爲了驗證DDTW對於奇點問題的改進,做者設計了兩個實驗分別從正反兩個方面來進行論證。

5.1 錯誤的規整(spurious warping)

做者選取了三類在形狀,噪聲和自相關方面相差很大的三組數據集來進行實驗。這些序列高度相關但不徹底相同,特別是它們包含較小的(局部)差別。

image.png

爲了簡便地對比兩種算法的差別,咱們採用較爲簡單的K值(規整路徑的長度)來進行計算。其中K的取值範圍在max(m,n)<K<m+n-1。同時因爲在該實驗中兩條時間序列的長度類似,所以m ≤ K < 2m-1。因而咱們定義W爲warp的次數,所以咱們獲得如下公式:

image.png

W能夠反映兩種算法warp扭曲的次數,若是算法在兩個序列之間沒有發現扭曲,則W將等於零;扭曲越多,發現W的值越大。對於上文所述三個數據集,咱們進行屢次實驗並取平均值後獲得如下結果:

image.png

經過實驗,DTW嘗試粗暴(wild)的經過時間軸的扭曲來糾正序列之間的微小差別。相應的DDTW則由於考慮「更高層次的特徵」從而更不容易發現不存在的warp。

image.png
在這裏值得注意的是,因爲這三組時間序列是高度相關但不相同的,而且在Y軸上包含細微的差異,因此對於這三組時間序列分別的warp實際上是徹底錯誤的(completely spurious)。也就是說兩種算法找到的warp越多,那麼他們對於奇點問題的識別排出就越差。所以咱們能夠看到,DDTW在奇點問題上對於DTW具備很大的提高。

5.2 尋找正確的「扭曲」(find the correct warping)

該實驗是爲了驗證兩種算法對於須要warp的時間序列的敏感性。所以做者經過一條時間序列Q與時間序列Q的複製Q'來進行實驗。簡單來講,做者經過對時間序列Q'插入三種不一樣水平的Gaussian bump以達到對時間序列在Y軸上的細微變化,再經過兩種算法對時間序列Q和Q'進行warp,觀察算法的效果。 與第一個實驗相同,咱們設定M爲錯誤warp的次數,而且在如下條件下獲得公式:

image.png

條件中的雙箭頭對應表示時間序列Q與Q'之間正確的對應關係,單箭頭對應表示由算法返回的實際對應關係。當且僅當兩個條件都符合時,咱們計算兩條時間序列對應Y軸變量的差值。公示中分母是爲了標準化而作的計算。 分析公式8咱們能夠知道,當時間序列上對應點正確匹配時,差值爲零,若是算法產生了不少奇點,那麼M的值就會越大,所以咱們能夠經過該公式比較兩種算法對於尋找正確warp的能力。實驗結果以下:

image.png
image.png

由以上實驗可知,DDTW可在時間序列之間產生出色的對齊方式;而且DDTW能夠更好地找到兩個序列之間的正確變形。

六、參考資料

論文:Eamonn J. Keogh, Derivative Dynamic Time Warping 暫不管文實驗數據,僅提供參考代碼,供你們學習理解:momodel.cn/explore/5d8…

關於咱們

Mo(網址:https://momodel.cn)是一個支持 Python 的人工智能在線建模平臺,能幫助你快速開發、訓練並部署模型。


Mo 人工智能俱樂部 是由網站的研發與產品設計團隊發起、致力於下降人工智能開發與使用門檻的俱樂部。團隊具有大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具有從底層到前端的全線設計開發能力。主要研究方向爲大數據管理分析與人工智能技術,並以此來促進數據驅動的科學研究。

目前俱樂部每兩週在杭州舉辦線下論文分享與學術交流。但願能匯聚來自各行各業對人工智能感興趣的朋友,不斷交流共同成長,推進人工智能民主化、應用普及化。

image.png
相關文章
相關標籤/搜索