DTW(Dynamic Time Warping)动态时间规整算法详解

1.概念解释及应用

按照该论文中的解释,动态时间规整(Dynamic Time Warping, DTW)算法基于动态规划的解决问题方法,用于测量两个序列之间的相似性,这些序列在时间或空间上可能有所不同。相似性的衡量是通过计算两个时间序列之间的距离来实现的。因此该算法可以运用于诸如语音识别、手写字符识别,姿态识别等方面

2.DTW实现关键技术点

1)模板函数:根据前面的关于DTW算法的概念(计算两个序列的相似度),因此是需要制作要识别的声音、动作等的模板函数,一般来说,数据点不宜过多,因为不排除会有噪声点之类的,所以需要先对所收集的曲线进行去噪处理(这里我使用的是卡尔曼滤波),然后提取相应的特征点。如下图,主要是对惯性传感器的某轴加速度进行模板提取用于姿态识别。

2)时间序列对齐:两段时间序列在某些情况下可能长度不同或在时间上有不一致的变化。例如,两个相似的动作,一个做得快,一个做得慢,DTW 通过拉伸或压缩时间轴,使它们尽可能对齐。

3)距离度量:DTW 通过计算两个时间序列中对应点的欧氏距离,来衡量它们的相似度。为了找到最佳匹配,DTW 会允许序列中的点重复使用,以最小化整体距离。

4)递归计算最优路径:DTW 使用动态规划来计算两个时间序列之间的最优路径。它会逐步比较时间序列的每个数据点,记录每个点之间的累积距离,从而找到使累积距离最小的路径。

3.DTW的计算实现

首先要明确,DTW是为了解决非等长时间序列数据的相似性计算问题而提出来的。经过时间规整后,两条数据就可以得到下图所示的对应关系,可以看到两条数据在时间轴上并不一一对应。

 假设有两个时间序列A,B,长度分别为m和n。

A=a_1,a_2,...a_m

B=b_1,b_2,...b_m

为了对齐两个序列,算法中构造了一个m\times n的矩阵,矩阵的位置\left ( i,j \right )用于存储点a_i与点b_j的距离,(通常距离为欧式距离,即d(i,j)=\sqrt{(a_i-b_j)^2}).DTW算法的目的就是从矩阵中找出一条从\left ( 1,1 \right )\left ( m,n \right )开销最小的一条路径。下图阐明了DTW算法的思想。路径W是矩阵中的连续元素(下面会给出"连续"的解释),它给出了A和B的对应关系。

 W的第k个元素定义为w_k=(i,j)_k,则:

W=w_1,w_2,...,w_k,...,w_K

其中max\left \{ m,n \right \} \leqslant K\leqslant m+n-1

根据时间序列数据的特点,路径应满足如下条件:

1.边界条件:

w_1=(1,1)w_k=(m,n).也就是开始和最后时刻的对齐是确定的,路径必须从左下角出发到右上角结束。

2.连续性:

如果w_{k-1}=\left ( a',b' \right ),那么对于下一个路径点w_k=(a,b),需要满足:

\left ( a-a' \right )\leqslant 1

\left ( b-b' \right )\leqslant 1

也就是两个时序数据在对齐的时候,不会出现遗漏,跨越某个点进行对齐

3.单调性:

如果w_{k-1}=\left ( a',b' \right ),那么对于下一个路径点w_k=(a,b),需要满足:

0\leqslant \left ( a-a' \right )

0\leqslant \left ( b-b' \right )

也就是路径上面的点必须是随着时间单调进行的。

条件2和条件3规定了我们下一步必须为向上或者向右或者向右上。

 根据上述分析,DTW算法就是要找出一条从左下角到右上角累加距离最小的一条连续路径。定义\lambda \left ( i,j \right )表示\left ( 1,1 \right )点到\left ( i,j \right )点的最小累加距离,则:

\lambda \left ( i,j \right )=d(c_i,c_j)+min\left \{ \lambda (i-1,j), \lambda (i,j-1),\lambda (i-1,j-1)\right \}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值