算法笔记-DTW动态时间规整

算法笔记-DTW动态时间规整

动态时间规整/规划(Dynamic Time Warping, DTW)是一个比较老的算法,大概在1970年左右被提出来,最早用于处理语音方面识别分类的问题。

1.简介

简单来说,给定两个离散的序列(实际上不一定要与时间有关),DTW能够衡量这两个序列的相似程度,或者说两个序列的距离。同时DTW能够对两个序列的延展或者压缩能够有一定的适应性,举个例子,不同人对同一个词语的发音会有细微的差别,特别在时长上,有些人的发音会比标准的发音或长或短,DTW对这种序列的延展和压缩不敏感,所以给定标准语音库,DTW能够很好得识别单个字词,这也是为什么DTW一直被认为是语音处理方面的专门算法。实际上,DTW虽然老,但简单且灵活地实现模板匹配,能解决很多离散时间序列匹配的问题,视频动作识别,生物信息比对等等诸多领域都有应用。

例如下图,有两个呈现正弦规律序列,其中蓝色序列是稍微被拉长了。即使这两个序列,不重合,但是我们也可以有把握说这两个序列的相似程度很高(或者说这两个序列的距离很小)。
Two Sine Waves

DTW能够计算这两个序列的相似程度,并且给出一个能最大程度降低两个序列距离的点到点的匹配。见下图,其中黑色与红色曲线中的虚线就是表示点点之间的一个对应关系。
Two Sine Waves DTW mapped

也就是说,两个比对序列之间的特征是相似的,只是在时间上有不对齐的可能,这个算法名中的Time Warping,指的就是对时间序列进行的压缩或者延展以达到一个更好的匹对。

2.简单的例子

比如说,给定一个样本序列X和比对序列Y,Z:

X:3,5,6,7,7,1

Y:3,6,6,7,8,1,1
Z:2,5,7,7,7,7,2

请问是X和Y更相似还是X和Z更相似?

DTW首先会根据序列点之间的距离(欧氏距离),获得一个序列距离矩阵 M ,其中行对应X序列,列对应Y序列,矩阵元素为对应行列中X序列和Y序列点到点的欧氏距离:

X和Y的距离矩阵:

X/Y 3 6 6 7 8 1 1
3 0 3 3 4 5 2 2
5 2 1 1 2 3 4 4
6 3 0 0 1 2 5 5
7 4 1 1 0 1 6 6
7 4 1 1 0 1 6 6
1 2 5 5 6 7 0 0

然后根据距离矩阵生成1损失矩阵(Cost Matrix)或者叫累积距离矩阵 Mc ,其计算方法如下:
1. 第一行第一列元素为 M 的第一行第一列元素,在这里就是0;
2. 其他位置的元素 ( Mc(i,j) )的值则需要逐步计算,具体值的计算方法为 Mc(i,j)=Min(Mc(i1,j1),Mc(i1,j),Mc(i,j1))+M(i,j) ,得到的 Mc 如下:

X/Y 3 6 6 7 8 1 1
3 0 3 6 10 15 17 19
5 2 1 2 4 7 11 15
6 5 1 1 2 4 9 14
7 9 2 2 1 2 8 14
7 13 3 3 1 2 8 14
1 15 8 8 7 8 2 2

最后,两个序列的距离,由损失矩阵最后一行最后一列给出,在这里也就是2。

同样的,计算X和Z的距离矩阵:

X/Z 2 5 7 7 7 7 2
3 1 2 4 4 4 4 1
5 3 0 2 2 2 2 3
6 4 1 1 1 1 1 4
7 5 2 0 0 0 0 5
7 5 2 0 0 0 0 5
1 1 4 6 6 6 6 1

和损失矩阵:

X/Z 2 5 7 7 7 7 2
3 1 3 7 11 15 19 20
5 4 1 3 5 7 9 12
6 8 2 2 3 4 5 9
7 13 4 2 2 2 2 7
7 18 6 2 2 2 2 7
1 19 10 8 8 8 8 3

所以,X和Y的距离为2,X和Z的距离为3,X和Y更相似。

3.定义

有一个具体例子作为帮助,我们再来定义DTW算法。

假设给定两个序列,样本序列 X=(x1

  • 0
    点赞
  • 219
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值