做者:鄭培前端
Derivative Dynamic Time Warping(DDTW) 是對 Dynamic Time Warping (DTW) 的一種改進。緩解了經典DTW算法所產生的「奇點」(Singularities)問題,本文將從如下幾個方面介紹DDTW算法。算法
時間序列是幾乎每個科學學科中廣泛存在的數據形式。時間序列的常見處理任務是將一個序列與另外一個序列進行比較,以比較兩個時間序列的類似度。在某些領域,使用很是簡單的距離度量(例如歐式距離)就足夠了。app
可是,在大多狀況下,兩個序列的整體組成形狀大體相同,可是這些形狀在X軸上並不對齊。(圖1)學習
爲了找到這些序列之間的類似性,或做爲對它們進行平均以前的預處理步驟,咱們必須「扭曲」一個(或所有兩個)序列的時間軸以實現更好的比對。動態時間規整(DTW)是一種有效實現這種規整的技術。大數據
例如圖A所示,實線和虛線分別是同一個詞「pen」的兩個語音波形(在y軸上拉開了,以便觀察)。能夠看到他們總體上的波形形狀很類似,但在時間軸上倒是不對齊的,假設一個序列中的第i個點與另外一序列中的第i個點對齊將產生「悲觀差別」(pessimistic dissimilarity)。而在圖B中,DTW就能夠經過找到這兩個波形對齊的點,這樣計算它們的距離纔是正確的。 網站
假設咱們有兩個時間序列Q和C,長度分別爲n和m,其中: ui
結合連續性和單調性約束,每個格點的路徑就只有三個方向了。例如若是路徑已經經過了格點(i, j),那麼下一個經過的格點只多是下列三種狀況之一:(i+1, j),(i, j+1)或者(i+1, j+1)。 人工智能
DTW算法最重要的特徵就是經過「扭曲」X軸來解釋Y軸變量,以達到使時間序列對齊的目的。可是簡單的經過Y軸的變量值來扭曲X軸會致使「不直觀」(unintuitive)的對齊,其中一個時間序列上的單個點會映射到另外一個時間序列的一部分上。咱們稱這種咱們不指望看到的行爲爲「奇點」(singularities)。 設計
已經提出了不少臨時的方法來緩解這種奇點問題,這些方法都具備一個共同點,即基本上都限制了可能的「扭曲」。可是,它們形成的缺點是,可能阻止發現「正確的」「扭曲」。 所以,咱們引入了Derivative DTW 來改進這種問題。3d
如前文所述,DTW算法粗暴地(wildly)根據Y軸變量的值對X軸進行warp,這樣在Y軸變量有細微變更時很容易形成奇點問題,以下圖所示。而最正確的時間序列的對齊應該是特徵之間的對應(feature to feature),因而咱們考慮比DTW更高一層次的特徵選取,根據形狀(shape)來進行對齊。
那麼如何才能獲取關於形狀的信息,咱們知道一階導數能夠反映斜率,而斜率是咱們判斷時間序列形狀的一個指數,所以咱們經過考慮序列的一階導數來得到有關形狀的信息,所以將咱們的算法稱爲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算法的距離公式。在這裏咱們不去考慮繁瑣精確的一階導數計算公式,反之咱們使用簡單的導數估計方法,以增長方法的泛化性。估計導數公式以下:
爲了驗證DDTW對於奇點問題的改進,做者設計了兩個實驗分別從正反兩個方面來進行論證。
做者選取了三類在形狀,噪聲和自相關方面相差很大的三組數據集來進行實驗。這些序列高度相關但不徹底相同,特別是它們包含較小的(局部)差別。
爲了簡便地對比兩種算法的差別,咱們採用較爲簡單的K值(規整路徑的長度)來進行計算。其中K的取值範圍在max(m,n)<K<m+n-1。同時因爲在該實驗中兩條時間序列的長度類似,所以m ≤ K < 2m-1。因而咱們定義W爲warp的次數,所以咱們獲得如下公式:
W能夠反映兩種算法warp扭曲的次數,若是算法在兩個序列之間沒有發現扭曲,則W將等於零;扭曲越多,發現W的值越大。對於上文所述三個數據集,咱們進行屢次實驗並取平均值後獲得如下結果:
經過實驗,DTW嘗試粗暴(wild)的經過時間軸的扭曲來糾正序列之間的微小差別。相應的DDTW則由於考慮「更高層次的特徵」從而更不容易發現不存在的warp。
該實驗是爲了驗證兩種算法對於須要warp的時間序列的敏感性。所以做者經過一條時間序列Q與時間序列Q的複製Q'來進行實驗。簡單來講,做者經過對時間序列Q'插入三種不一樣水平的Gaussian bump以達到對時間序列在Y軸上的細微變化,再經過兩種算法對時間序列Q和Q'進行warp,觀察算法的效果。 與第一個實驗相同,咱們設定M爲錯誤warp的次數,而且在如下條件下獲得公式:
條件中的雙箭頭對應表示時間序列Q與Q'之間正確的對應關係,單箭頭對應表示由算法返回的實際對應關係。當且僅當兩個條件都符合時,咱們計算兩條時間序列對應Y軸變量的差值。公示中分母是爲了標準化而作的計算。 分析公式8咱們能夠知道,當時間序列上對應點正確匹配時,差值爲零,若是算法產生了不少奇點,那麼M的值就會越大,所以咱們能夠經過該公式比較兩種算法對於尋找正確warp的能力。實驗結果以下:
由以上實驗可知,DDTW可在時間序列之間產生出色的對齊方式;而且DDTW能夠更好地找到兩個序列之間的正確變形。
論文:Eamonn J. Keogh, Derivative Dynamic Time Warping 暫不管文實驗數據,僅提供參考代碼,供你們學習理解:momodel.cn/explore/5d8…
Mo(網址:https://momodel.cn)是一個支持 Python 的人工智能在線建模平臺,能幫助你快速開發、訓練並部署模型。
Mo 人工智能俱樂部 是由網站的研發與產品設計團隊發起、致力於下降人工智能開發與使用門檻的俱樂部。團隊具有大數據處理分析、可視化與數據建模經驗,已承擔多領域智能項目,具有從底層到前端的全線設計開發能力。主要研究方向爲大數據管理分析與人工智能技術,並以此來促進數據驅動的科學研究。
目前俱樂部每兩週在杭州舉辦線下論文分享與學術交流。但願能匯聚來自各行各業對人工智能感興趣的朋友,不斷交流共同成長,推進人工智能民主化、應用普及化。