本文怎样加速检索时间子序列进行研究,其思想是:通过定义下界函数完成Q,S序列DTW粗略估算,并将计算结果中大于阈值的部分序列剔除,并最终完成DTW度量时只针对选入候选集中较少部分序列进行度量结算,从而降低整个DTW度量中所需的计算开销。作者在另一方面阐述了若将查询序列Q与比对序列S进行角色互换,即对子序列S完成下界函数的计算在一般情况下其计算出来的下界函数是不一样的。因此,这种角色互换的思想能够进一步降低DTW计算开销。
1.文章提到的几个前提条件:
1.1 时间子序列必须归一化处理
1.2 DWT是最好的测量两个序列间的距离
1.3 不能对任意长度建立索引
2.相关研究:
和以往的研究主要是在在几百万数据集上的近似性检索相比,这篇文章的研究是种j精确的检索,并且时间序列数据量级比以前任何论文的数据集都要大5-6倍。因此如果进行比较是没有特别的意义。
3.背景
3.1 欧式距离和DTW
ED 欧式距离,相等长度的序列Q,C,对应两点差平方和开方。
例如两个序列的ED距离是 9.8:
1,1,2,9,3
1,1,9,2,3
3.2 DTW算法
ED距离相比,它不是点与点是一一对应的,它们有多种对齐方式。可以用一个n*n的矩阵来表示:
矩阵(i,j)元素是序列Q的i的点和C的j的点的距离:d(qi, cj) ,这里的 dist 可以使用
DTW 路径是指这个矩阵中连续的元素组成的集合。这条路径使得这个矩阵的累积距离最小,而这条路则是两条时间序列之间的最佳匹配。集合长度在(N, 2N-1)之间。
例如图中的对齐方式。
而用矩阵表示为:红色就是DTW路径,有效的路径是在R线之间的路径。
在这里,我们可以假设这条路径是
现在我们需要找到一条路径使得
这条路径就是动态规划的解,它满足一个动态规划方程:对于
其初始状态是
- 如果
时,则表示最后的距离;
- 如果
时,则表示最后的距离。
- 如果
时,则表示最后的距离。
某些时候,我们可以添加一个窗口长度的限制, i 与 j 需要满足
初始条件和之前一样。
这里的
另外最优路径里不能含有相互交叉的点。
4.算法
4.1 基于ED或者DTW,已知的序列查找的优化算法
4.1.1 用平方距离
以前DTW, ED 两个有平方根计算,我们使用平方优化计算。
4.1.2 LB
对于两条时间序列
可以证明
算法复杂度是
LB_Keogh 是Keogh设计的下界函数,相比于LB_Kim以及LB_Yi具有更好的效果。
公式
u 和 l 指的是上下包络线
对公式解释一下,其实就是,首先求出query序列的上下包络线,然后对data序列与上下包络线进行比较,如果不在上下包络线的范围内,就对该点与对应的包络线上的点求欧几里得距离(此处的欧几里得距离主要是指Y轴上的距离,并非二维),最终求和得到误差,与之前得到的误差进行比较,整条data中误差最小的就是目标序列
对于任意两条长度为
4.1.3 ED 和 LB_Keogh 的早放弃
在计算ED或者LB_Keogh 时,如果目前计算的和已经超过了 best-so-far的值,应该放弃再继续计算下去。
4.1.4 DTW 的早放弃
假如已经计算了一个完全的LB_Keogh,不满足早放弃的情况,必须计算一个完全的DTW。
左上图是计算了一个完全的LB_Keogh,左下图是从K=0开始计算DTW.
如果 在任何k,
4.1.5 开发多核
使用多核可以线性加速计算。例如一个长度为421,322的时间序列,使用DTW算法单个核需要3小时2分钟,如果使用8核,需要时间仅为23分。
4.2 新奇的优化算法:UCR套件
4.2.1 Z-Normalization 的早放弃
归一化和计算ED(或者LB_Keogh)交错进行,这样的话,如果满足早放弃的条件,不仅仅距离计算的步骤会清除,并且归一化的步骤也会清除。
序列均值和平方差:
如果有k个点,计算后面m个点的均值和平方差公式如下:
算法如下:
Algorithm: Similarity Search
Procedure [nn]: = SimilaritySearch (T,Q)
其中公式:
如果dist > bestso_for可以实现距离计算和归一化处理早放弃,提高性能。
4.2.2 对早放弃的在排序
从左到右计算不一定是最好的顺序,是否有更好的计算顺序呢?
左图要计算到第几个点才知道需要早放弃,但右图只需计算5个点就能知道需要早放弃。
这样不同顺序查找就有加速上的偏差。但顺序的复杂度是
4.2.3 LB_Keogh 里 Q,C的角色互换。
如左图是上下界函数包着候选C序列,而右图上下界函数包着查询Q序列。通常,LB_keoghEQ =/ LB_KeoghEC,并且平均而言一个比另一个要超过一般的时间要大。
4.2.4 下届函数堆叠
提高时间序列检索一个最有用的方法是通过下届函数剔除大量的无用的候选区域。自然而然,我们需要进一步研究下届函数。一般不能确定哪一个下界函数最有用,因为需要平衡下界函数太紧或者太松。太紧的话会导致大量有用的区域被剔除,而太松的话会不能有效提高检索速度。
上图中列举的下界函数与加速之间的关系。LBKimFL算法复杂度最低,但太松。LBKim与
LB_Yi算法复杂度是