在之前的时间序列相似度算法中,时间戳都是一一对应的,但是在实际的场景中,时间戳有可能出现一定的偏移,但是两条时间序列却又是十分相似的。例如正弦函数 和余弦函数 ,只是平移了 个长度而已。本文将会介绍一些基于形状的时间序列的距离算法,并且介绍如何在给定时间序列的情况下,在时间序列数据库中寻找相似的时间序列。

基于动态规划的相似度计算的典型代表就是 DTW(Dynamical Time Warping )和 Frechet 距离。在这里将会主要介绍 DTW 算法。详细来说,DTW 算法是为了计算语音信号处理中,由于两个人说话的时长不一样,但是却是类似的一段话,欧几里德算法不完全能够解决这类问题。在这种情况下,DTW 算法就被发展出来。DTW 算法是为了计算两条时间序列的**匹配点,假设我们有两条时间序列 和 ,长度都是 ,并且 和 。首先我们可以建立一个 的矩阵, 位置的元素是 ,这里的 dist 可以使用 范数。其次,我们想找到一条路径,使得这个矩阵的累积距离最小,而这条路则是两条时间序列之间的**匹配。在这里,我们可以假设这条路径是 ,其中 的每个元素表示时间序列 中的第 个元素和时间序列 中的第 个元素之间的距离. i.e. 。

相似的时间序列的搜索问题一般是这样的:

Question 1. 给定一条时间序列 和一个时间序列的数据库 通过某种相似度或者距离计算方法,计算出给定的时间序列 与时间序列数据库中 中最相似的时间序列。

Question 2. 给定一条时间序列 和一个时间序列的数据库 以及正整数 从数据库 中寻找与给定的时间序列 最相似的 条时间序列。

DTW 算法的下界 LB_Kim

对于两条时间序列 和 而言,可以分别提取它们的四个特征,那就是最大值,最小值,第一个元素的值,最后一个元素的值。这样可以计算出 LB_Kim

但是,如果是基于 DTW 的距离计算方法,每次都要计算两条时间序列的 DTW 距离,时间复杂度是 。于是就有学者研究是否存在 DTW 距离的下界表示,也就是说找到一个合适的下界,Lower Bound of DTW。每次判断 Lower Bound of DTW 是否小于当前的最小距离,如果下界高于最小距离,就不需要进行 DTW 的计算;否则开始计算 DTW 的值。如果下界的计算速度足够快,并且下界足够精准的话,可以大量的压缩搜索的时间。于是,Keogh 提出了下界的计算方法。

对于任意两条长度为 的时间序列 和 ,对于任意的窗口 有不等式 成立。

本文初步介绍了 DTW 算法以及它的下界算法,包括 LB_Kim LB_Keogh 等,以及时间序列数据库的搜索算法。