DTW动态规划调整
来源:互联网 发布:淘宝有质量问题投诉 编辑:程序博客网 时间:2024/05/17 20:09
DTW是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。
1 DTW方法原理
在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把‘A’这个音拖得很长,或者把‘i’发的很短。另外,不同时间序列可能仅仅存在时间轴上的位移,亦即在还原位移的情况下,两个时间序列是一致的。在这些复杂情况下,使用传统的欧几里得距离无法有效地求的两个时间序列之间的距离(或者相似性)。
DTW通过把时间序列进行延伸和缩短,来计算两个时间序列性之间的相似性:
如上图所示,上下两条实线代表两个时间序列,时间序列之间的虚线代表两个时间序列之间的相似的点。DTW使用所有这些相似点之间的距离的和,称之为归整路径距离(Warp Path Distance)来衡量两个时间序列之间的相似性。
2 DTW计算方法
令要计算相似度的两个时间序列为X和Y,长度分别为|X|和|Y|。
3 归整路径(Warp Path)
归整路径的形式为W=w1,w2,…,wK,其中Max(|X|,|Y|)<=K<=|X|+|Y|。
wk的形式为(i,j),其中i表示的是X中的i坐标,j表示的是Y中的j坐标。
归整路径W必须从w1=(1,1)开始,到wK=(|X|,|Y|)结尾,以保证X和Y中的每个坐标都在W中出现。
另外,W中w(i,j)的i和j必须是单调增加的,以保证图1中的虚线不会相交,所谓单调增加是指:
我们最后要得到的归整路径是距离最短的一个归整路径:
其中Dist(wki,wkj)为任意经典的距离计算方法,比如欧几里得距离。wki是指X的第i个数据点,wkj是指Y的第j个数据点。
4 DTW实现
在实现DTW时,我们采用动态规划的思想,其中D(i,j)表示长度为i和j的两个时间序列之间的归整路径距离:
我们最后求得的归整路径距离为D(|X|,|Y|),使用动态规划来进行求解:
上图为代价矩阵(Cost Matrix) D,D(i,j)表示长度为i和j的两个时间序列之间的归整路径距离。
DTW实现的伪代码为
DTW实现的Python代码
5加速
DTW虽然使用线性规划可以快速的求解,但是在面对比较长的时间序列是,O(N2)的时间复杂度还是很大。已经有很多改进的快速DTW算法,比如FastDTW,SparseDTW,LB_Keogh,LB_Improved等等。
- DTW动态规划调整
- DTW动态规划调整
- 【动态规划】景观调整
- 调整队形(动态规划)
- 动态规划--最小调整代价
- 网易调整队形(动态规划)
- DTW 动态时间规整
- 动态时间规整DTW
- 动态时间规整DTW简述
- 动态时间规整DTW简述
- 动态时间规整(DTW)
- DTW(动态时间规整算法)
- 动态时间规整(DTW)
- DTW
- DTW
- DTW
- DTW
- DTW
- Eclipse快捷键大全
- C# 中的委托和事件
- 将多个小文件合并成大文件
- 学习makefile(三)--书写规则
- java 泛型方法
- DTW动态规划调整
- 《优秀到不能被忽略》
- 222
- javac编译原理
- swift3.0 从c语言字符串转换到swift 字符串
- Vue学习(一)
- DataBinding使用教程(二):xml标签详解
- javaWeb 简单注册登录(含数据库连接) -- (三) 实现用户注册请求的响应
- geometry-api-java 学习笔记(二)点 Point