DDTW 导数动态时间规整算法

作者:郑培

Derivative Dynamic Time Warping(DDTW) 是对 Dynamic Time Warping (DTW) 的一种改进。缓解了经典DTW算法所产生的“奇点”(Singularities)问题,本文将从以下几个方面介绍DDTW算法。

1、算法背景

时间序列是几乎每一个科学学科中普遍存在的数据形式。时间序列的常见处理任务是将一个序列与另一个序列进行比较,以比较两个时间序列的相似度。在某些领域,使用非常简单的距离度量(例如欧式距离)就足够了。

但是,在大多情况下,两个序列的总体组成形状大致相同,但是这些形状在X轴上并不对齐。(图1)

为了找到这些序列之间的相似性,或作为对它们进行平均之前的预处理步骤,我们必须“扭曲”一个(或全部两个)序列的时间轴以实现更好的比对。动态时间规整(DTW)是一种有效实现这种规整的技术。

例如图A所示,实线和虚线分别是同一个词“pen”的两个语音波形(在y轴上拉开了,以便观察)。可以看到他们整体上的波形形状很相似,但在时间轴上却是不对齐的,假设一个序列中的第i个点与另一序列中的第i个点对齐将产生“悲观差异”(pessimistic dissimilarity)。而在图B中,DTW就可以通过找到这两个波形对齐的点,这样计算它们的距离才是正确的。

(图1)
因此,DTW显示出了很好的能力,除了在数据挖掘(Keogh&Pazzani 2000,Yi et. al.1998,Berndt&Clifford 1994)上的应用,DTW还被用于手势识别(Gavrila&Davis 1995),机器人技术(Schmill et. al 1999),语音处理(Rabiner&Juang 1993),制造业(Gollmer&Posten 1995)和医药行业(Caiani et. al 1998)。

2、经典动态时间规整算法

假设我们有两个时间序列Q和C,长度分别为n和m,其中:

为了对齐这两个序列,我们需要构造一个n x m的矩阵网格,矩阵元素(i, j)表示qi和cj两个点的距离d(qi, cj)(也就是序列Q的每一个点和C的每一个点之间的相似度,距离越小则相似度越高。这里先不管顺序),一般采用欧式距离。每一个矩阵元素(i, j)表示点qi和cj的对齐。有了这个矩阵,我们就能够对两个时间序列之间的距离进行计算,并显示出一条规整路径warping path(W)。由于有许多不同的对时间轴的“扭曲”方式,因此我们能够得到很多条规整路径(W的公式如下),但我们的目标是找到一条最短的规整路径,以判断两条时间序列之间的“距离”也就是相似度,而如何快速地找到这条路径呢?我们发现动态规划(Dynamic Programming)可以为我们提供很大的方便。
Dynamic Programming算法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算的对齐的点。

w的第i个元素为w=(i,j)定义了两条时间序列的映射。并且,规整路径一般受到以下几种约束条件。
1)边界条件:定义了规整路径必须在矩阵的对角元素中开始和结束;
2)连续性:这将规整路径中的允许步骤限制为相邻的单元(包括对角相邻的单元);
3)单调性:这迫使W中的点在时间上单调进行。

结合连续性和单调性约束,每一个格点的路径就只有三个方向了。例如如果路径已经通过了格点(i, j),那么下一个通过的格点只可能是下列三种情况之一:(i+1, j),(i, j+1)或者(i+1, j+1)。

由上文所述,我们可以通过比较满足以上条件所有规整路径找出最短的规整路径,但是DP为我们提供了一个更好地方法来计算最短路径。我们首先定义一个累积距离cumulative distance γ,累积距离γ(i,j)为当前格点距离d(i,j),也就是点qi和cj的欧式距离与可以到达该点的最小的邻近元素的累积距离之和:

通过动态规划算法,我们可以较简单地得到最短的累积距离。

3、动态时间规划的“奇点”问题

DTW算法最重要的特征就是通过“扭曲”X轴来解释Y轴变量,以达到使时间序列对齐的目的。但是简单的通过Y轴的变量值来扭曲X轴会导致“不直观”(unintuitive)的对齐,其中一个时间序列上的单个点会映射到另一个时间序列的一部分上。我们称这种我们不期望看到的行为为“奇点”(singularities)。

已经提出了很多临时的方法来缓解这种奇点问题,这些方法都具有一个共同点,即基本上都限制了可能的“扭曲”。但是,它们造成的缺点是,可能阻止发现“正确的”“扭曲”。
因此,我们引入了Derivative DTW 来改进这种问题。

4、导数动态时间规整算法

如前文所述,DTW算法粗暴地(wildly)根据Y轴变量的值对X轴进行warp,这样在Y轴变量有细微变动时很容易造成奇点问题,如下图所示。而最正确的时间序列的对齐应该是特征之间的对应(feature to feature),于是我们考虑比DTW更高一层次的特征选取,根据形状(shape)来进行对齐。

4.1、DDTW算法细节

那么如何才能获取关于形状的信息,我们知道一阶导数可以反映斜率,而斜率是我们判断时间序列形状的一个指数,因此我们通过考虑序列的一阶导数来获得有关形状的信息,因此将我们的算法称为Derivative
Dynamic Time Warping(DDTW)。
如前所述,我们构造了一个n×m矩阵,其中矩阵的(i th,j th)元素包含两个点q i和c j之间的距离d(q i,c j)。DTW算法根据欧式距离来计算两个时间序列对应点之间的距离,DDTW则通过qi和cj之间估计导数差值的平方来代替DTW算法的距离公式。在这里我们不去考虑繁琐精确的一阶导数计算公式,反之我们使用简单的导数估计方法,以增加方法的泛化性。估计导数公式如下:

大家可以看到,该估计值只是通过该点及其左邻点的直线的斜率以及通过左邻点和右邻点的直线的斜率的平均值来得出的。值得注意的是该公式比仅利用两个数据点对于离群点更具有鲁棒性。另外值得注意的是该公式并不包括第一个与最后一个点,反之是运用第二个点与倒数第二个点来代替。

以下是简单的一个例子。

5、实验与结果

为了验证DDTW对于奇点问题的改进,作者设计了两个实验分别从正反两个方面来进行论证。

5.1 错误的规整(spurious warping)

作者选取了三类在形状,噪声和自相关方面相差很大的三组数据集来进行实验。这些序列高度相关但不完全相同,特别是它们包含较小的(局部)差异。

为了简便地对比两种算法的差异,我们采用较为简单的K值(规整路径的长度)来进行计算。其中K的取值范围在max(m,n)<K<m+n-1。同时由于在该实验中两条时间序列的长度相似,因此m ≤ K < 2m-1。于是我们定义W为warp的次数,因此我们得到以下公式:

W可以反映两种算法warp扭曲的次数,如果算法在两个序列之间没有发现扭曲,则W将等于零;扭曲越多,发现W的值越大。对于上文所述三个数据集,我们进行多次实验并取平均值后得到以下结果:

通过实验,DTW尝试粗暴(wild)的通过时间轴的扭曲来纠正序列之间的微小差异。相应的DDTW则因为考虑“更高层次的特征”从而更不容易发现不存在的warp。

在这里值得注意的是,由于这三组时间序列是高度相关但不相同的,并且在Y轴上包含细微的差别,所以对于这三组时间序列分别的warp其实是完全错误的(completely spurious)。也就是说两种算法找到的warp越多,那么他们对于奇点问题的识别排出就越差。因此我们可以看到,DDTW在奇点问题上对于DTW具有很大的提升。

5.2 寻找正确的“扭曲”(find the correct warping)

该实验是为了验证两种算法对于需要warp的时间序列的敏感性。因此作者通过一条时间序列Q与时间序列Q的复制Q’来进行实验。简单来说,作者通过对时间序列Q’插入三种不同水平的Gaussian bump以达到对时间序列在Y轴上的细微变化,再通过两种算法对时间序列Q和Q’进行warp,观察算法的效果。
与第一个实验相同,我们设定M为错误warp的次数,并且在以下条件下得到公式:

条件中的双箭头对应表示时间序列Q与Q’之间正确的对应关系,单箭头对应表示由算法返回的实际对应关系。当且仅当两个条件都符合时,我们计算两条时间序列对应Y轴变量的差值。公示中分母是为了标准化而做的计算。
分析公式8我们可以知道,当时间序列上对应点正确匹配时,差值为零,如果算法产生了很多奇点,那么M的值就会越大,因此我们可以通过该公式比较两种算法对于寻找正确warp的能力。实验结果如下:

由以上实验可知,DDTW可在时间序列之间产生出色的对齐方式;并且DDTW可以更好地找到两个序列之间的正确变形。

6、参考资料

论文:Eamonn J. Keogh, Derivative Dynamic Time Warping
暂无论文实验数据,仅提供参考代码,供大家学习理解:https://momodel.cn/explore/5d837ba0870b9dc68fd13fdc?type=app

关于我们

Mo(网址:https://momodel.cn)是一个支持 Python 的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。


Mo 人工智能俱乐部 是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

目前俱乐部每两周在杭州举办线下论文分享与学术交流。希望能汇聚来自各行各业对人工智能感兴趣的朋友,不断交流共同成长,推动人工智能民主化、应用普及化。

DDTW 导数动态时间规整算法相关推荐

  1. 动态时间规整算法(DTW)通俗易懂

    动态时间规整算法(Dynamic Time Warping ) 来源: -假定一个孤立词识别系统,利用模板匹配法进行识别.训练阶段,用户将词汇表种每一个词都念一遍,将其特征矢量的时间序列作为模板(te ...

  2. 基于动态时间规整算法(DTW)的语音识别技术研究-含Matlab代码

    ⭕⭕ 目 录 ⭕⭕ ⏩ 一.引言 ⏩ 二.动态时间规整算法基本原理 ⏩ 三.语音识别实例分析 ⏩ 四.参考文献 ⏩ 五.Matlab代码获取 ⏩ 一.引言 在语音识别技术的发展过程中,动态时间规整算法 ...

  3. 【语音识别】动态时间规整算法(RTW)语音识别系统【含GUI Matlab源码 341期】

    ⛄一.动态时间规整算法(RTW)语音识别 软件算法主要分为语音信号滤波去噪.预加重.分帧.端点检测.特征参数提取.模式匹配.算法的关键点和难点是特征参数提取和模式匹配.孤立词的语音识别应用程序也是基于 ...

  4. 动态时间规整算法: 从DTW到FastDTW

    目录 动态时间规整算法: 从DTW到FastDTW 总结: 简介[^1] DTW[^1] FastDTW:使用多级粗化的方法[^1] 结果 动态时间规整算法: 从DTW到FastDTW 总结: Fas ...

  5. 动态时间规整算法——DTW

    没有做过机器学习的小伙伴们对这个算法应该不是特别的了解,因为机器学习经常会用到这个算法.再将这个算法之前,我们先看一下初中的知识点. 欧几里得距离 在讲解动态时间规整算法(Dynamic Time W ...

  6. 语音识别基础算法——动态时间规整算法

    本文首发于:算法社区 dspstack.com,转发请注明出处. 前言# 动态时间规整算法,Dynamic Time Wraping,缩写为DTW,是语音识别领域的一个基础算法. 算法的提出# DTW ...

  7. 动态时间规整算法DTW

    动态时间规整算法(dynamic time warping,DTW),最早由日本学者Itakura提出,用于衡量两个时间序列的相似度,也可用于将多个测试序列与标准序列对齐,从而实现序列长度的归一化. ...

  8. 崔岩的笔记——动态时间规整算法(Dynamic Time Warping,DTW)

    什么是动态时间规整算法,他是用来干什么的 用于两个时间不同的特征序列的相似度比较. 举个例子:该算法最早的应用对象是语音识别,通过进行数据库语音特征和说话语音特征的相似度比较进行语音识别,但每个人说话 ...

  9. 动态时间规整算法(Dynamic Time Warping, DTW)之初探单词语音识别

    动态时间规整算法(DTW)是最近接触的一种提取时间序列模板方法.本文主要是一些自己的学习记录,并适当地加入自己的理解.若有见解不一致之处,欢迎交流. 1 动态时间规整(DTW)基本思想 先从单词语音时 ...

最新文章

  1. php类方法语法错误捕获,php语法错误捕获
  2. java spring 服务器关闭_通过springboot怎么停止服务器??
  3. D/A与A/D转换器
  4. 《算法图解》第四章笔记与课后练习_快速排序算法
  5. oracle db file sequential read,db file sequential read等待事件
  6. python一般用什么软件写_python用什么软件写代码
  7. 获取会话名称时错误 5_5种可重复的数据科学工具
  8. 如何在Linux命令行中替换多个文件中的字符串
  9. python setup.py install 和python setup.py develop的区别
  10. 【理财】指数基金投资指南
  11. 中国科学院微生物研究所微生物资源与大数据中心招聘启事
  12. 没想到国美竟然用oracle的团队来搭建电商平台
  13. docker logs 查看日志
  14. unraid应用_套娃自动备份unraid系统u盘_NAS存储
  15. 基于STM32与OneNet平台的智能家居系统设计(代码开源含自制APP代码)
  16. 4.2.1朴素模式匹配算法
  17. 大数据疫情可视化平台1_基于Hadoop3.2.1、Hive3.1.2、搭建疫情信息可视化系统
  18. 关于Mongodb的全面总结
  19. css适配iphoneX
  20. 2021年广西甘蔗播种面积、产量及进口情况分析:广西甘蔗产量占全国甘蔗总产量的68.56%[图]

热门文章

  1. 更改安卓系统开机画面
  2. 猜生日 Java小游戏
  3. 高中数学数列公式7种方法(方法全,例子全,归纳细)
  4. 横版格斗——技能动作概念
  5. unity实现鼠标打飞碟(Hit UFO)游戏
  6. Android 注入 看雪
  7. 关闭rabbitmq连接健康检查
  8. ARM SIMD 指令集:NEON 简介
  9. mysql创建数据库utf_MYSQL创建utf-8格式的数据库_MySQL
  10. 【考研英语】完形填空