【时间序列】DTW算法详解

article/2025/9/12 8:51:22

作者 | 追光者

研究 | 机器学习与时间序列

出品 | AI蜗牛车

1.DTW

1.1 时序相似度

在时间序列数据中,一个常见的任务是比较两个序列的相似度,作为分类或聚类任务的基础。那么,时间序列的相似度应该如何计算呢?

经典的时间序列相似性度量方法总体被分为两 类: 锁步度量(lock-step measures) 和弹性度量(elastic measures) . 锁步度量是时间序列进行 “一对一”的比 较; 弹性度量允许时间序列进行 “一对多”的比较.

——《时间序列数据挖掘的相似性度量综述》

最简单的相似度计算方法可能是计算两个时间序列的欧氏距离。欧氏距离属于锁步度量

假设有两个时间序列,Q和C,如果直接用欧氏距离计算相似度的话,如果存在时间步不对齐,序列长短不一等问题...

如上图1所示,如果序列长短不一,或时间步不对齐的时候,欧氏距离是无法有效计算两个时间序列的距离,特别是在峰值的时候。

图2则是DTW算法,首先将其中一个序列进行线性放缩进行某种“扭曲”操作,以达到更好的对齐效果,可以存在一对多mapping的情况,适用于复杂时间序列,属于弹性度量

1.2 DTW算法

动态时间规整在60年代由日本学者Itakura提出,用于衡量两个长度不同的时间序列的相似度。把未知量伸长或缩短(压扩),直到与参考模板的长度一致,在这一过程中,未知序列会产生扭曲或弯折,以便其特征量与标准模式对应

首先假设有两条序列Q和C,他们的长度分别是n和m

用一个 矩阵来对比两个序列,warping路径会穿越这个矩阵,warping路径的第k个元素表示为 ,横纵代表的是两个序列对齐的点

约束条件

1)边界条件: ,表示两条序列首尾必须匹配,各部分的先后次序匹配。

2)连续性:   如果 ,则必须满足 。这条约束表示在匹配过程中多对一和一对多的情况只能匹配周围一个时间步的的情况,也就是不可能跨过某个点去匹配,只能和自己相邻的点对齐。这样可以保证Q和C中的每个坐标都在wraping路径中出现。

3)单调性: 如果 ,且 ,则必须满足 ,表示warping路径一定是随时间单调递增的。

满足以上约束条件的warping路径有很多,所以问题的本质是最优化问题——找出最优warping路径,数学语言表示为:

解法思路是通过动态规划算法,数学语言描述为:

时间复杂度

单调性与连续性约束直观上表示为如下三种可能

1.3 优化方法

1.3.1 使用平方距离

原始DTW计算距离使用的是平方根计算,但是在排序任务中,平方或平方根不会对结果有影响,但是平方根计算资源消耗大,所以可以改为平方距离

1.3.2 Lower Bounding

顾名思义,这个优化方法的主要思想是先通过计算LB(lower bounding)处理掉不可能是最有匹配序列的序列,计算LB的主要有LB_Kim 和 LB_keogh等方法,这里只介绍一下LB_keogh,感兴趣可自行查阅资料。

首先上公式

如上图所示,首先找到找到序列的上包络线U和下包络线L,计算候选序列超出上下包络线区域的部分之和作为下界。

1.3.3 Early Abandoning

从 K=0 开始逐步计算DTW并且和K后面的LB_keogh部分累加,判断距离是否大于目前最好的匹配序列,在这个过程中,一旦发现大于当前最好匹配得距离,则放弃该序列停止DTW

1.3.4 Reordering Early Abandoning

如下图所示,如果要早停的话,从序列的起点按顺序计算不一定可以得到最优的结果。所以可以对序列进行排序先。首先对序列进行z归一化,

除了以上优化方法,还有计算卷LB_Keogh时转换Query/Data,级联下界(Cascading Lower Bounds)等优化方法。

1.4 总结

优点:

1.支持非等长序列

2.支持有断点序列

缺点:

1.不是一个严格的距离度量,因为它不符合三角形不等式,在一个度量空间中,距离必须符合三角形不等式。

2.对噪音敏感,所以需要对DTW的算法进行优化,不然时间复杂度很高

参考

  1. 《Searching and Mining Trillions of Time Series Subsequences under Dynamic Time Warping 》——Thanawin Rakthanmanon, Bilson Campana, Abdullah Mueen, Gustavo Batista2 , Brandon Westover1 , Qiang Zhu, Jesin Zakaria, Eamonn Keogh

  2. 《时间序列数据挖掘的相似性度量综述》 ——陈海燕, 刘晨晖,孙 博

  3. 《时间序列数据挖掘中的动态时间弯曲研究综述》——李海林,梁叶,王少春

更多精彩内容(请点击图片进行阅读)

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

个人微信

备注:昵称+学校/公司+方向

如果没有备注不拉群!

拉你进AI蜗牛车交流群


http://chatgpt.dhexx.cn/article/g9tk7pB2.shtml

相关文章

学习dtw-python库内容 动态弯曲距离(DTW)具体实现

文章目录 一、install 数据包二、函数功能三、函数的参数以及含义四、具体实现 一、install 数据包 简单的pip install一下就好了,注意最后提示Successfully installed dtw-python-1.3.0 pip install dtw-python二、函数功能 执行 DTW 算法,并计算两个…

DTW距离

DTW(dynamic-time-wraping) 当两个时间序列等长时,我们可以使用欧氏距离来度量两者的相似性。但是当两个时间序列不等长时,欧氏距离就难以度量两者的相似性了。因此,国外学者提出了动态时间弯曲距离(Dynamic time war…

【时间序列】动态时间规整(DTW)算法简介(python)

简介 动态时间规整:(Dynamic Time Warping,DTW) 定义:用于比较不同长度的两个数组或时间序列之间的相似性或计算两者间的距离。 例1:a [1,2,3],b[3,2,2] 例2:a[1,2,3],b[2,2,2,3,4] 例1好计算,但对于例2&am…

【积】fast-DTW及其代码详解

fast-DTW 在解说中适合一个单特征的时间序列,在附录中修改了距离函数从而适合多个特征的时间序列。且距离函数用的是L1距离。如果是其他距离函数,修改即可。 1. DTW常用的加速手段 1.1 限制 亦即减少D的搜索空间,下图中阴影部分为实际的探…

DTW算法(语音识别)

DTW主要是应用在孤立词识别的算法,用来识别一些特定的指令比较好用,这个算法是基于DP(动态规划)的算法基础上发展而来的。这里介绍语音识别就先介绍下语音识别的框架,首先我们要有一个比对的模版声音,然后需…

时间序列匹配之dtw的python实现(一)

简介 Dynamic Time Warping(动态时间序列扭曲匹配,简称DTW)是时间序列分析的经典算法,用来比较两条时间序列之间的距离,发现最短路径。笔者在github上搜索dtw时发现了两个比较经典的库:dtw和dtw-python。d…

Python dtw(dynamic time warping)模块

dtw是一个用于计算动态时间扭曲距离的python模块。它可以作为时间序列之间的相似性度量。 dtw模块官方文档:https://www.cnpython.com/pypi/dtw DTW(dynamic time warping)的基本思想: 参考链接:https://zhuanlan.zhihu.com/p/117634492

时间序列相似性度量-DTW

1. 背景 最近项目中遇到求解时间序列相似性问题,这里序列也可以看成向量。在传统算法中,可以用余弦相似度和pearson相关系数来描述两个序列的相似度。但是时间序列比较特殊,可能存在两个问题: 两段时间序列长度不同。如何求相似…

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

算法笔记-DTW动态时间规整 简介简单的例子定义讨论 约束条件步模式标准化点与点的距离函数 具体应用场景 分类点到点匹配 算法笔记-DTW动态时间规整 动态时间规整/规划(Dynamic Time Warping, DTW)是一个比较老的算法,大概在1970年左右被提出来,最早用…

DTW学习笔记1.0

目录 DTW算法的目的: DTW算法实现: 以下图两段序列为例: DTW代码实现: Dynamic programming function 示例: 单变量示例: 比较序列相似性示例: 缺点: DTW算法的目的&#xf…

动态时间规整—DTW算法

简述 Dynamic Time Warping(DTW)诞生有一定的历史了(日本学者Itakura提出),它出现的目的也比较单纯,是一种衡量两个长度不同的时间序列的相似度的方法。应用也比较广,主要是在模板匹配中&#…

语音信号处理之(一)动态时间规整(DTW)

语音信号处理之(一)动态时间规整(DTW) zouxy09qq.com http://blog.csdn.net/zouxy09 这学期有《语音信号处理》这门课,快考试了,所以也要了解了解相关的知识点。呵呵,平时没怎么听课&#xff…

【机器学习】【DTW】

转自:https://blog.csdn.net/zouxy09/article/details/9140207 一、概述 在大部分的学科中,时间序列是数据的一种常见表示形式。对于时间序列处理来说,一个普遍的任务就是比较两个序列的相似性。 在时间序列中,我们通常需要比较…

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

目录 动态时间规整算法: 从DTW到FastDTW总结:简介[^1]DTW[^1]FastDTW:使用多级粗化的方法[^1]结果 动态时间规整算法: 从DTW到FastDTW 总结: FastDTW作者对DTW的改进点很巧妙!先通过举例说明在一些情况下目前现有的方法对DTW改进…

机器学习算法(二十三):DTW(Dynamic Time Warping,动态时间调整)

目录 1 DTW(动态时间调整) 2 算法的实现 3 例子 4 python实现 ​​​​​​​5 DTW的加速算法FastDTW 5.1 标准DTW算法 5.2 DTW常用加速手段 5.3 FastDTW​​​​​​​ 1 DTW(动态时间调整) 动态时间调整算法是大多用于检…

初识DTW(动态时间规整)算法及Python实现例

目录 1. 概要 2. 时序列相似度度量 3. DTW基本算法 4. Python实现 5. Next Action 1. 概要 DTW( Dynamic Time Warping,动态时间规整)是基于动态规划(Dynamic Programming)策略对两个时序列通过非线性地进行时域对…

DTW基本原理

设时间归正函数为:,式中,N为路径长度,c(n)(i(n),j(n))表示第n个匹配点对是由参考模板的第i个特征矢量与待测模板的第j个特征矢量构成的匹配点对。两者之间的距离称为局部匹配距离。DTW算法就是通过局部优化的方法实现加权距离总和…

DTW算法——Matlab实现

概述 DTW (Dynamic time warping)算法是可以度量两个独立时间序列的相似度的一种方法。曾被广泛应用在单词音频的匹配上。该方法主要用来解决在两段序列的时长不同的情况下,进行相似度的判断。 上图中,左侧时长相等,…

DTW简介

dtw算法主要针对序列匹配提出的,尤其是当序列出现一定的飘移,欧氏距离度量就会失效。dtw常用在语音匹配当中,在图像处理里面也有一定的应用。 现在有两个序列X,Y. X[2,3,4,7,9,2,1,2,1],Y[1,1,1,1,2,3,3,4,7,8,9,1,1,1,1] 绘制在坐标轴上如…

DTW算法

dtw算法主要针对序列匹配提出的,尤其是当序列出现一定的飘移,欧氏距离度量就会失效。dtw常用在语音匹配当中,在图像处理里面也有一定的应用。 现在有两个序列X,Y. X[2,3,4,7,9,2,1,2,1],Y[1,1,1,1,2,3,3,4,7,8,9,1,1,1,1] 绘制在坐标轴上如…