python多维分类_DTW(多维)原理与代码实现(Python)

1.概述

​ 作为一种Metric distance, 动态时间调整算法(Dynamic Time Warping, DTW)能够测量两个不同长度的时序信号的相似程度.

​ 在很多任务中,获取的数据是一种时序数据,而最常见的任务就是分析两个时间序列的相似性,例如语音的孤立词语音识别,时序动作分类,轨迹相似度分析等领域.

2.DTW原理的一些细节(个人见解)一维变多维度(也可以使用DBA)

​ 欧式距离是计算序列中对应点的差距,并不会重复利用序列中的点.而DTW会重复使用序列中的点,从而达到扭曲对齐的.

​ 假设有两个时间序列Q和C,他们的长度分别为n和m:

$$ Q = \left{q_1,q_2,q_3,...,q_n\right} $$

$$ C = \left{c_1,c_2,c_3,...,c_n\right} $$

​ 其中qi可以为多维度的特征.当qi和cj为一维时,可以使用abs(qi-cj)来描述距离;当qi和cj为多维时,可以使用欧式距离(qi^2 - cj^2)来描述距离.

​ 之后的步骤与DTW完全相同.在DTW中采用其他的距离来代替欧式距离

​ 如果特征值qi和cj的物理特征为向量,则可以使用余弦距离;如果特征值为编码,可以考虑使用最大公共子串或者汉明距离来衡量.DTW作为一种是一种很"老"的metric learning方法,DTW性能由输入的特征值决定,特征值很差,则DTW表现很差.所以使用DTW前要做好特征提取的工作.

3.DTW的应用孤立词语音识别:这个很常见,就不再描述.

时序动作分类:提取人体骨骼点(Openpose)时间序列,然后提供一个标准动作,将输入骨骼与标准动作序列进行DTW对比,得到一个差距,然后不同的动作序列具有不同的DTW距离,这样就可以根据距离对动作的种类进行分类.参考文献

轨迹相似度分析:将两个轨迹的序列送入DTW进行对比,得到距离.这种方法相对较为笼统,可以对轨迹分段,然后再提取一

你可能感兴趣的:(python多维分类)