DTW动态时间规整算法
原文地址:https://blog.csdn.net/qcyfred/article/details/53824507
https://zhuanlan.zhihu.com/p/43247215
動(dòng)態(tài)時(shí)間規(guī)整(DTW)算法簡(jiǎn)介
相忘天涯,深藏于心19 人贊同了該文章DTW最初用于識(shí)別語音的相似性。我們用數(shù)字表示音調(diào)高低,例如某個(gè)單詞發(fā)音的音調(diào)為1-3-2-4?,F(xiàn)在有兩個(gè)人說這個(gè)單詞,一個(gè)人在前半部分拖長(zhǎng),其發(fā)音為1-1-3-3-2-4;另一個(gè)人在后半部分拖長(zhǎng),其發(fā)音為1-3-2-2-4-4。
現(xiàn)在要計(jì)算1-1-3-3-2-4和1-3-2-2-4-4兩個(gè)序列的距離(距離越小,相似度越高)。因?yàn)閮蓚€(gè)序列代表同一個(gè)單詞,我們希望算出的距離越小越好,這樣把兩個(gè)序列識(shí)別為同一單詞的概率就越大。
先用傳統(tǒng)方法計(jì)算兩個(gè)序列的歐幾里得距離,即計(jì)算兩個(gè)序列各個(gè)對(duì)應(yīng)的點(diǎn)之間的距離之和。
距離之和 = |A(1)-B(1)| + |A(2)-B(2)| + |A(3)-B(3)| + |A(4)-B(4)| + |A(5)-B(5)| + |A(6)-B(6)| = |1-1| + |1-3| + |3-2| + |3-2| + |2-4| + |4-4| = 6如果我們?cè)试S序列的點(diǎn)與另一序列的多個(gè)連續(xù)的點(diǎn)相對(duì)應(yīng)(相當(dāng)于把這個(gè)點(diǎn)所代表的音調(diào)的發(fā)音時(shí)間延長(zhǎng)),然后再計(jì)算對(duì)應(yīng)點(diǎn)之間的距離之和。如下圖:B(1)與A(1)、A(2)相對(duì)應(yīng),B(2)與A(3)、A(4)相對(duì)應(yīng),A(5)與B(3)、B(4)相對(duì)應(yīng),A(6)與B(5)、B(6)相對(duì)應(yīng)。
這樣的話,
距離之和 = |A(1)-B(1)| + |A(2)-B(1)| + |A(3)-B(2)| + |A(4)-B(2)| + |A(5)-B(3)| + |A(5)-B(4)| + |A(6)-B(5)| + |A(6)-B(6)| = |1-1| + |1-1| + |3-3| + |3-3| + |2-2| + |2-2| + |4-4| + |4-4| = 0我們把這種“可以把序列某個(gè)時(shí)刻的點(diǎn)跟另一時(shí)刻多個(gè)連續(xù)時(shí)刻的點(diǎn)相對(duì)應(yīng)”的做法稱為時(shí)間規(guī)整(Time Warping)。
現(xiàn)在我們用一個(gè)6*6矩陣M表示序列A(1-1-3-3-2-4)和序列B(1-3-2-2-4-4)各個(gè)點(diǎn)之間的距離,M(i, j)等于A的第i個(gè)點(diǎn)和B的第j個(gè)點(diǎn)之間的距離,即
我們看到傳統(tǒng)歐幾里得距離里對(duì)應(yīng)的點(diǎn):
- A(1)-B(1)
- A(2)-B(2)
- A(3)-B(3)
- A(4)-B(4)
- A(5)-B(5)
- A(6)-B(6)
它們正好構(gòu)成了對(duì)角線,對(duì)角線上元素和為6。
時(shí)間規(guī)整的方法里,對(duì)應(yīng)的點(diǎn)為:
- A(1)A(2)-B(1)
- A(3)A(4)-B(2)
- A(5)-B(3)B(4)
- A(6)-B(5)B(6)
這些點(diǎn)構(gòu)成了從左上角到右下角的另一條路徑,路徑上的元素和為0。
因此,DTW算法的步驟為:
我們稱路徑上的元素和為路徑長(zhǎng)度。那么如何尋找長(zhǎng)度最小的路徑呢?
矩陣從左上角到右下角的路徑長(zhǎng)度有以下性質(zhì):
b) 上面的相鄰元素 (i-1, j)
c) 左上方的相鄰元素 (i-1, j-1)
假設(shè)矩陣為M,從矩陣左上角(1,1)到任一點(diǎn)(i, j)的最短路徑長(zhǎng)度為L(zhǎng)min(i, j)。那么可以用遞歸算法求最短路徑長(zhǎng)度:
起始條件:
遞推規(guī)則:
遞推規(guī)則這樣寫的原因是因?yàn)楫?dāng)前元素的最短路徑必然是從前一個(gè)元素的最短路徑的長(zhǎng)度加上當(dāng)前元素的值。前一個(gè)元素有三個(gè)可能,我們?nèi)∪齻€(gè)可能之中路徑最短的那個(gè)即可。
編輯于 2018-08-29算法時(shí)間序列分析?贊同 19??5 條評(píng)論?分享?收藏?總結(jié)
以上是生活随笔為你收集整理的DTW动态时间规整算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CV模型,全目标检测等
- 下一篇: 训练数据量中关于batch_size,i