动态时间规整DTW(Dynamic Time Warping )
动态时间规整DTW(Dynamic Time Warping )
原文:https://blog.csdn.net/raym0ndkwan/article/details/45614813
算法笔记-DTW动态时间规整
- 简介
- 简单的例子
- 定义
- 讨论
- 约束条件
- 步模式
- 标准化
- 点与点的距离函数
- 具体应用场景
- 分类
- 点到点匹配
算法笔记-DTW动态时间规整
动态时间规整/规划(Dynamic Time Warping, DTW)是一个比较老的算法,大概在1970年左右被提出来,最早用于处理语音方面识别分类的问题。
1.简介
简单来说,给定两个离散的序列(实际上不一定要与时间有关),DTW能够衡量这两个序列的相似程度,或者说两个序列的距离。同时DTW能够对两个序列的延展或者压缩能够有一定的适应性,举个例子,不同人对同一个词语的发音会有细微的差别,特别在时长上,有些人的发音会比标准的发音或长或短,DTW对这种序列的延展和压缩不敏感,所以给定标准语音库,DTW能够很好得识别单个字词,这也是为什么DTW一直被认为是语音处理方面的专门算法。实际上,DTW虽然老,但简单且灵活地实现模板匹配,能解决很多离散时间序列匹配的问题,视频动作识别,生物信息比对等等诸多领域都有应用。
例如下图,有两个呈现正弦规律序列,其中蓝色序列是稍微被拉长了。即使这两个序列,不重合,但是我们也可以有把握说这两个序列的相似程度很高(或者说这两个序列的距离很小)。
DTW能够计算这两个序列的相似程度,并且给出一个能最大程度降低两个序列距离的点到点的匹配。见下图,其中黑色与红色曲线中的虚线就是表示点点之间的一个对应关系。

也就是说,两个比对序列之间的特征是相似的,只是在时间上有不对齐的可能,这个算法名中的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首先会根据序列点之间的距离(欧氏距离),获得一个序列距离矩阵 MM,其中行对应X序列,列对应Y序列,矩阵元素为对应行列中X序列和Y序列点到点的欧氏距离:
X和Y的距离矩阵:
最后,两个序列的距离,由损失矩阵最后一行最后一列给出,在这里也就是2。
同样的,计算X和Z的距离矩阵:

所以,X和Y的距离为2,X和Z的距离为3,X和Y更相似。
3.定义
有一个具体例子作为帮助,我们再来定义DTW算法。

4.讨论
实际上,虽然这个算法简单,但是有很多值得讨论的细节。
约束条件
首先,路径的寻找不是任意的,一般来说有三个约束条件:

步模式

标准化
序列的累积距离,可以被标准化,因为长的测试序列累积距离很容易比短的测试序列累积距离更大,但这不一定说明后者比前者与样本序列更相似,可以通过标准化累积距离再进行比较。不同的步模式会需要的不同的标准化参数。
点与点的距离函数
除了测试序列以外,DTW唯一需要的输入,就是距离函数dd(除了欧氏距离,也可以选择Mahalanobis距离等),所以不需要考虑输入的具体形式(一维或多维,离散或连续),只要能够给定合适的距离函数,就可以DTW比对。前面说到,DTW是对时间上的压缩和延展不敏感,但是对值的大小是敏感的,可以通过合理选取距离函数来让DTW适应值大小的差异。
5.具体应用场景
这里讨论两个具体应用DTW的可能场景:
分类
气象指数在旱季和雨季的样本序列分别为X1和X2,现有一段新的气象指数Y,要判断该气象指数测得时,是雨季还旱季?
算出DTW(X1,Y)和DTW(X2,Y),小者即为与新测得气象指数更贴近,根据此作判断。
DTW就是一个很好的差异比较的工具,给出的距离(或标准化距离)能够进一步输入到KNN等分类器里(KNN就是要找最近的邻居,DTW能够用于衡量“近”与否),进行进一步分类,比对。
点到点匹配
给定标准语句的录音X,现有一段新的不标准的语句录音Y,其中可能缺少或者掺入了别的字词。如何确定哪些是缺少的或者哪些是掺入别的?
通过DTW的扭曲路径,我们可以大致得到结论:
DTW的输出是很丰富的,除了距离外,还提供了扭曲路径,可用于点到点的匹配,这个信息是非常丰富的,能够看到序列的比对,发现异常的序列
动态时间规整DTW(Dynamic Time Warping )的更多相关文章
- 使用动态时间规整 (DTW) 解决时间序列相似性度量及河流上下游污染浓度相似性识别分析
时间序列相似性度量方法 时间序列相似性度量常用方法为欧氏距离ED(Euclidean distance)和动态时间规整DTW(Dynamic Time Warping).总体被分为两类: 锁步度量(l ...
- 动态时间规整-DTW算法
作者:桂. 时间:2017-05-31 16:17:29 链接:http://www.cnblogs.com/xingshansi/p/6924911.html 前言 动态时间规整(Dynamic ...
- 动态时间规整DTW
动态时间规整DTW 1 概述 动态时间规整是一个计算时间序列之间距离的算法,是为了解决语音识别领域中语速不同的情况下如何计算距离相似度的问题. 相对于用经典的欧式距离来计算相似度而言,DTW在数据点个 ...
- 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
动态时间规整DTW 在日常的生活中我们最经常使用的距离毫无疑问应该是欧式距离,但是对于一些特殊情况,欧氏距离存在着其很明显的缺陷,比如说时间序列,举个比较简单的例子,序列A:1,1,1,10,2, ...
- 动态时间规整(DTW) 转载
Dynamic Time Warping(DTW)诞生有一定的历史了(日本学者Itakura提出),它出现的目的也比较单纯,是一种衡量两个长度不同的时间序列的相似度的方法.应用也比较广,主要是在模板匹 ...
- 语音信号处理之(一)动态时间规整(DTW)
语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com 原文:http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要 ...
- 语音信号处理之动态时间规整(DTW)(转)
这学期有<语音信号处理>这门课,快考试了,所以也要了解了解相关的知识点.呵呵,平时没怎么听课,现在只能抱佛脚了.顺便也总结总结,好让自己的知识架构清晰点,也和大家分享下.下面总结的是第一个 ...
- 【VS开发】【智能语音处理】语音信号处理之(一)动态时间规整(DTW)
语音信号处理之(一)动态时间规整(DTW) zouxy09@qq.com http://blog.csdn.net/zouxy09 这学期有<语音信号处理>这门课,快考试了,所以也要了解了 ...
- Dynamic Time Warping 动态时间规整算法
转自:http://www.cnblogs.com/luxiaoxun/archive/2013/05/09/3069036.html Dynamic Time Warping(DTW)是一种衡量两个 ...
随机推荐
- ceph中查看一个rbd的image的真实存储位置
1.新建一个image存储 rbd create hzb-mysql --size 2048 2.查看hzb-mysql的所有对象 一个rbd image实际上包含了多个对象(默认情况下是image_ ...
- 使用word写CSDN博客文章
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- 2015-08-13T17:39:15
ACTION里 Date upateTime; 有setter getter 页面字符串 是'2015-08-13T17:39:15' 该字符串可以直接映射成Date .
- 编写高质量代码改善C#程序的157个建议——建议143:方法抽象级别应在同一层次
建议143:方法抽象级别应在同一层次 看下面代码: class SampleClass { public void Init() { //本地初始化代码1 //本地初始化代码2 RemoteInit( ...
- Python Selenium 之常用API
Selenium WebDriver下提供许多用来与浏览器.元素.鼠标.键盘.弹框.下拉菜单和列表的交互和设置方法.这些是计算机模拟人工进行自动化测试所必要依赖的方法.下面将用列表的方式总结出常用的A ...
- mysql中判断记录是否存在方法比较【转】
把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入. 我这里总结了判断记录是否存在的常用方法: sql语句:select count(*) from tablename ...
- CLR via C# 读书笔记-27.计算限制的异步操作(上篇)
前言 学习这件事情是一个习惯,不能停...另外这篇已经看过两个月过去,但觉得有些事情不总结跟没做没啥区别,遂记下此文 1.CLR线程池基础 2.ThreadPool的简单使用练习 3.执行上下文 4. ...
- WinForm使用Label控件模拟分割线(竖向)
用Label控件进行模拟 宽度设为1:this.lblPagerSpliter1.Size = new System.Drawing.Size(1, 21); 去掉边框:this.lblPagerSp ...
- TVS
TVS 电子电路中二极管是非常常见的元器件,按照材料主要分为锗二极管.硅二极管.按用途的不同又可分为瞬态二极管.整流二极管.检波二极管.稳压二极管.变容二极管.光电二极管.发光二极管.开关二极管.快速 ...
- vue.js 知识点(四)
看完了vue.js的官方文档,大概对这些知识有了那么一点的了解了,但是很多具体的运用还不太清楚,现在就总结一下,关于其中的一些知识点的运用: v-bind: 动态绑定指令,默认情况下,是给html ...