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

FastDTW是一种对动态时间规整(DTW)的优化,通过多级粗化、投影和细化实现线性时间复杂度,解决了DTW在大数据集上的效率问题。在保持较高准确性的同时,FastDTW通过限制计算区域和使用半径参数进行局部调整,避免了约束和抽象方法的局限性。实验表明,FastDTW在长序列数据中表现出接近线性的复杂度,且错误率低于其他近似算法。

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

总结:

FastDTW作者对DTW的改进点很巧妙!先通过举例说明在一些情况下目前现有的方法对DTW改进的缺陷,然后阐述自己的算法如何避免这些缺陷,最后还在三个数据集上证明在较长时间序列数据中取得线性复杂度。 说明在做算法时,在无法找到更低复杂度的方法的时候,可以考虑在牺牲一些可接受的准确度的情况下实现更低的复杂度算法!!!同时,必须通过实验证明准确度降低的程度,文中就使用正常复杂度算法和近似复杂度算法进行对比,从而计算出降低的准确率!!最后,可以吸取现有的一些改进的基础上,再进一步改进,就比在原始的DWT算法上改进的效果更好!!!!

简介1

Dynamic time warping:动态时间扭曲 (DTW) 是一种在两个时间序列之间找到最佳对齐的技术,其中一个时间序列可以通过拉伸或收缩其时间轴来非线性地“扭曲”。 这种比对可用于找到对应的区域或确定两个时间序列之间的相似性。 DTW 经常用于语音识别,以确定两个波形是否代表相同的口语短语。 在语音波形中,每个语音的持续时间和声音之间的间隔是允许变化的,但整体语音波形必须相似。 DTW 还用于许多其他学科 ,包括数据挖掘、手势识别、机器人技术、制造和医学。 一个时间序列“扭曲”到一个示例如图 所示:

在这里插入图片描述

FastDTW:动态时间规整 (DTW) 具有平方时间和空间复杂度,这限制了它在大时间序列中的使用。 后面有很多优化,本文主要解释 FastDTW,它是 DTW 的近似,具有线性时间和空间复杂度。 FastDTW 使用多级方法,从较粗的分辨率递归地投影计算并细化投影。 从理论上和经验上证明了 FastDTW 的线性时间和空间复杂度。FastDTW 与其他两种现有的近似 DTW 算法进行比较来分析 FastDTW 的准确性:约束(例如 Sakoe-Chiba Bands)和抽象。 与现有方法相比,准确性有了很大提高。使用的方法太过巧妙,如下所示:

1) 粗化——将时间序列缩小为更小的时间序列,以更少的数据点尽可能准确地表示相同的曲线。

2) 投影——在较低分辨率下找到最小距离扭曲路径,并将其用作更高分辨率最小距离扭曲路径的初始猜测。

3) 细化——通过局部调整扭曲路径来优化从较低分辨率投影的扭曲路径。

DTW1

动态时间扭曲 (DTW) 是一种在两个时间序列之间找到最佳对齐的技术,其中一个时间序列可以通过拉伸或收缩其时间轴来非线性地“扭曲”。最初的实现是使用动态规划,使用数学表达如下:

D ( i , j ) = D i s t ( i , j ) + m i n [ D ( i − 1 , j ) , D ( i , j − 1 ) , D ( i − 1 , j − 1 ) ] , 其中: i = 1 , 2 , ⋯   , x _ l e n + 1 ; j = 1 , 2 , ⋯   , y _ l e n + 1 D(i,j)=Dist(i,j)+min[D(i-1,j),D(i,j-1),D(i-1,j-1)], \\其中:i=1,2,\cdots,x\_len+1;j=1,2,\cdots,y\_len+1 D(i,j)=Dist(i,j)+min[D(i1,j),D(i,j1),D(i1,j1)],其中:i=1,2,,x_len+1;j=1,2,,y_len+1
代码实现如下2

#参考:https://github.com/slaypni/fastdtw
import numbers
import numpy as np
from collections import defaultdict
from scipy.spatial.distance import euclidean

def dtw(x, y, window=None, dist)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KPer_Yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值