日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DTW动态时间规整算法

發(fā)布時(shí)間:2024/7/5 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DTW动态时间规整算法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文地址: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í)別語(yǔ)音的相似性。我們用數(shù)字表示音調(diào)高低,例如某個(gè)單詞發(fā)音的音調(diào)為1-3-2-4?,F(xiàn)在有兩個(gè)人說(shuō)這個(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)”的做法稱(chē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算法的步驟為:

  • 計(jì)算兩個(gè)序列各個(gè)點(diǎn)之間的距離矩陣。
  • 尋找一條從矩陣左上角到右下角的路徑,使得路徑上的元素和最小。
  • 我們稱(chēng)路徑上的元素和為路徑長(zhǎng)度。那么如何尋找長(zhǎng)度最小的路徑呢?

    矩陣從左上角到右下角的路徑長(zhǎng)度有以下性質(zhì):

  • 當(dāng)前路徑長(zhǎng)度 = 前一步的路徑長(zhǎng)度 + 當(dāng)前元素的大小
  • 路徑上的某個(gè)元素(i, j),它的前一個(gè)元素只可能為以下三者之一:
  • a) 左邊的相鄰元素 (i, j-1)
    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ī)則這樣寫(xiě)的原因是因?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)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。