时间序列分析——DTW算法详解

Python026

时间序列分析——DTW算法详解,第1张

DTW(dynamic time warping)是时间序列分析中一个很早(1994年,论文的年纪比我都大)也很经典的算法了。它其实借用的是经典算法的“动态规划”的思想。一般来说,时间序列数据如果要做分类,那么大体可以将实验步骤分为:数据预处理(去噪或数据增强),数据表征,选取分类器(机器学习算法还需要选取合适的距离计算方法)。虽然DTW算法也给出了路径,但我实在想不出如何利用path,因此我更倾向于将DTW算法归为距离计算方法。

第一部分Introduction不再介绍。直接介绍第二部分:Dynamic Time Warping

作者首先提到,dtw算法成功应用在了语音识别领域——研究者将现实中一个单词的发音(其实就是一条时间序列)与模板库中单词的发音去一个个匹配。怎么衡量匹配程度的大小呢?

衡量时间序列之间的相似性,其特点是允许时间上的伸缩,找到一个最佳路径去匹配样本。所谓最佳,其实就是最小化样本之间的距离总和。

DTW不要求样本有同样的长度以及范围,只要给定样本的起始边界,保证它们是连续单向(可以理解为随着时间)进行的就可以了。

获得 dtw_score这个代表距离的分数之后,我们就可以应用到分类,聚类等任务中的常用方法,比如KNN,SVM中了

https://www.ics.uci.edu/~pazzani/Publications/sdm01.pdf

DBA:

这个方法就是迭代地优化一个初始序列,

使得它和其他序列的DTW平方距离最小。

不过这个初始序列怎么确定呢,

作者通过一些实验发现,

初始长度取平均长度,

然后根据数据集中的一个随机样本取初始值,

可以取得不错的效果。

Adptive Scalilng: 融合距离最近的相邻坐标。

https://arxiv.org/pdf/1703.01541v2.pdf