c 最大子序列和_DTW的时间序列检索和挖掘加速思想的理解

本文怎样加速检索时间子序列进行研究,其思想是:通过定义下界函数完成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,对应两点差平方和开方。

1d269bfed639d2c7d21bbe8dd353fff9.png

例如两个序列的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 可以使用

equation?tex=L%5E%7B1%7D%2C+L%5E%7B2%7D%2C+L%5E%7Bp%7D%2C+L%5E%7B%5Cinfty%7D 范数。

DTW 路径是指这个矩阵中连续的元素组成的集合。这条路径使得这个矩阵的累积距离最小,而这条路则是两条时间序列之间的最佳匹配。集合长度在(N, 2N-1)之间。

例如图中的对齐方式。

8192266282ca9600417fd155700fb7f1.png

而用矩阵表示为:红色就是DTW路径,有效的路径是在R线之间的路径。

4da0d0cdf8b30d31278a13a1846412a8.png

在这里,我们可以假设这条路径是

equation?tex=W%3A+%5C%7Bw_%7B1%7D%2C%5Ccdots%2Cw_%7BK%7D%5C%7D ,其中
equation?tex=W 的每个元素表示时间序列
equation?tex=Q 中的第
equation?tex=i 个元素和时间序列
equation?tex=C+ 中的第
equation?tex=j 个元素之间的距离. i.e.
equation?tex=w_%7Bk%7D%3D%28q_%7Bi%7D-c_%7Bj%7D%29%5E%7B2%7D

现在我们需要找到一条路径使得

equation?tex=W%5E%7B%2A%7D+%3D+argmin_%7BW%7D%28%5Csqrt%7B%5Csum_%7Bk%3D1%7D%5E%7BK%7Dw_%7Bk%7D%7D%29.

这条路径就是动态规划的解,它满足一个动态规划方程:对于

equation?tex=1%5Cleq+i%5Cleq+n%2C+1%5Cleq+j%5Cleq+n ,有

equation?tex=DTW%28i%2Cj%29%3D+dist%28q_%7Bi%7D%2Cc_%7Bj%7D%29+%2B+%5Cmin%28DTW%28i-1%2Cj-1%29%2C+DTW%28i-1%2Cj%29%2C+DTW%28i%2Cj-1%29%29.

其初始状态是

equation?tex=DTW%280%2C0%29%3D0%2C+DTW%28i%2C0%29%3D%5Cinfty%2C+DTW%280%2Cj%29%3D%5Cinfty%2C
equation?tex=%5Cforall+1%5Cleq+i%5Cleq+n%2C+1%5Cleq+j%5Cleq+n. 最终的取值
equation?tex=DTW%28n%2Cn%29 就是我们需要的解,也就是两条时间序列的 DTW 距离。按照上面的算法,DTW 算法的时间复杂度是
equation?tex=O%28n%5E%7B2%7D%29 。特别地,
  1. 如果
    equation?tex=dist%28q_%7Bi%7D%2Cc_%7Bj%7D%29+%3D+%28q_%7Bi%7D-c_%7Bj%7D%29%5E%7B2%7D 时,则
    equation?tex=%5Csqrt%7BDTW%28n%2Cn%29%7D 表示最后的距离;
  2. 如果
    equation?tex=dist%28q_%7Bi%7D%2Cc_%7Bj%7D%29+%3D+%7Cq_%7Bi%7D-c_%7Bj%7D%7C 时,则
    equation?tex=DTW%28n%2Cn%29 表示最后的距离。
  3. 如果
    equation?tex=dist%28q_%7Bi%7D%2Cc_%7Bj%7D%29+%3D+%7Cq_%7Bi%7D-c_%7Bj%7D%7C%5E%7Bp%7D 时,则
    equation?tex=%28DTW%28n%2Cn%29%29%5E%7B1%2Fp%7D 表示最后的距离。

某些时候,我们可以添加一个窗口长度的限制, i 与 j 需要满足

equation?tex=%7Ci-j%7C%5Cleq+w%2C 这里的
equation?tex=w 表示窗口长度。因此算法的描述如下:

初始条件和之前一样。

equation?tex=DTW%28i%2Cj%29+%3D+dist%28q_%7Bi%7D%2Cc_%7Bj%7D%29+%2B+%5Cmin%28DTW%28i-1%2Cj-1%29%2C+DTW%28i-1%2Cj%29%2C+DTW%28i%2Cj-1%29%29%2C

这里的

equation?tex=j 取值范围是:对每一个
equation?tex=1%5Cleq+i%5Cleq+n%2C 需要
equation?tex=+j 满足
equation?tex=%5Cmax%281%2Ci-w%29+%5Cleq+j%5Cleq+%5Cmin%28m%2Ci%2Bw%29.

另外最优路径里不能含有相互交叉的点。

4.算法

4.1 基于ED或者DTW,已知的序列查找的优化算法

4.1.1 用平方距离

以前DTW, ED 两个有平方根计算,我们使用平方优化计算。

4.1.2 LB

对于两条时间序列

equation?tex=Q
equation?tex=C 而言,可以分别提取它们的四个特征,那就是最大值,最小值,第一个元素的值,最后一个元素的值。这样可以计算出 LB_Kim

equation?tex=LBKim%28Q%2CC%29+%3D+%5Cmax%5C%7B%7C%5Cmax%28Q%29-%5Cmax%28C%29%7C%2C%7C%5Cmin%28Q%29-%5Cmin%28C%29%7C%2C%7CFirst%28Q%29-First%28C%29%7C%2C%7CLast%28Q%29-Last%28C%29%7C+%5C%7D.

可以证明

equation?tex=LBKim%28Q%2CC%29%5Cleq+DTW%28Q%2CC%29.

算法复杂度是

equation?tex=O%28n%29

LB_Keogh 是Keogh设计的下界函数,相比于LB_Kim以及LB_Yi具有更好的效果。

公式

ff10e4623d79f2ddeac80504ba690252.png

u 和 l 指的是上下包络线

对公式解释一下,其实就是,首先求出query序列的上下包络线,然后对data序列与上下包络线进行比较,如果不在上下包络线的范围内,就对该点与对应的包络线上的点求欧几里得距离(此处的欧几里得距离主要是指Y轴上的距离,并非二维),最终求和得到误差,与之前得到的误差进行比较,整条data中误差最小的就是目标序列

90242b2f6715ad5718b6bf2a5aa06384.png

对于任意两条长度为

equation?tex=n 的时间序列
equation?tex=Q
equation?tex=C ,有不等式
equation?tex=LBKeogh%28Q%2CC%29%5Cleq+DTW%28Q%2CC%29 成立。

4.1.3 ED 和 LB_Keogh 的早放弃

在计算ED或者LB_Keogh 时,如果目前计算的和已经超过了 best-so-far的值,应该放弃再继续计算下去。

4.1.4 DTW 的早放弃

假如已经计算了一个完全的LB_Keogh,不满足早放弃的情况,必须计算一个完全的DTW。

b6f0a8ab3ddf5aac91cdc58e14a98f94.png

左上图是计算了一个完全的LB_Keogh,左下图是从K=0开始计算DTW.

如果 在任何k,

equation?tex=DTW%28Q_%7B1%3AK%7D%2CC_%7B1%3AK%7D%29+%2B+LB_Keogh%28Q_%7BK%2B1%3An%7D%2CC_%7BK%2B1%3An%7D%29+
equation?tex=%5Cgt best-so-far 时就可以停止计算。

4.1.5 开发多核

使用多核可以线性加速计算。例如一个长度为421,322的时间序列,使用DTW算法单个核需要3小时2分钟,如果使用8核,需要时间仅为23分。

4.2 新奇的优化算法:UCR套件

4.2.1 Z-Normalization 的早放弃

归一化和计算ED(或者LB_Keogh)交错进行,这样的话,如果满足早放弃的条件,不仅仅距离计算的步骤会清除,并且归一化的步骤也会清除。

序列均值和平方差:

equation?tex=%5Cmu+%3D+1%2Fm%5Csum_%7B%7D%7Bx_%7Bi%7D%7D

equation?tex=%5Csigma%5E%7B2%7D+%3D+1%2Fm%5Csum%7Bx_%7Bi%7D%5E%7B2%7D%7D+-+%5Cmu%5E%7B2%7D

如果有k个点,计算后面m个点的均值和平方差公式如下:

equation?tex=%5Cmu+%3D+1%2Fm%28%5Csum_%7Bi%3D1%7D%5E%7Bk%7D%7Bx_%7Bi%7D+-+%5Csum_%7Bi%3D1%7D%5E%7Bk-m%7D%7Bx_%7Bi%7D%7D+%7D%29

equation?tex=%5Csigma%5E%7B2%7D+%3D+1%2Fm%28%5Csum_%7Bi%3D1%7D%5E%7Bk%7D%7Bx_%7Bi%7D%5E2+-+%5Csum_%7Bi%3D1%7D%5E%7Bk-m%7D%7Bx_%7Bi%7D%7D%5E2+%7D%29+-+%5Cmu%5E2

算法如下:

Algorithm: Similarity Search

Procedure [nn]: = SimilaritySearch (T,Q)

equation?tex=best%5C_so%5C_far+%E2%86%90+%E2%88%9E%2C+count%E2%86%90+0+

equation?tex=Q+%E2%86%90+z%5C_normalize%28Q%29+

equation?tex=++while+%5C+%21next%28T%29+

equation?tex=i%E2%86%90+mod%28count%2Cm%29+

equation?tex=X%5Bi%5D+%E2%86%90next%28T%29+

equation?tex=ex%E2%86%90+ex%2BX%5Bi%5D%2C+++ex%5E2%E2%86%90+ex%5E2%2BX%5Bi%5D%5E2+

equation?tex=if%5C+count+%E2%89%A5+m-1+ :

equation?tex=%C2%B5%E2%86%90+ex%2Fm%2C+++%CF%83%E2%86%90+sqrt%28ex%5E2%2Fm+-+%C2%B5%5E2%29+

equation?tex=+j%E2%86%90+0%2C+dist%E2%86%90+0+

equation?tex=while+%5C++j+%3C+m+%5C+and+%5C+dist+%3C+best%5C_so%5C_far+

equation?tex=dist%E2%86%90+dist+%2B+%28Q%5Bj%5D-%28X%5Bmod%28i%2B1%2Bj%2Cm%29%5D-%C2%B5%29%2F%CF%83%29%5E2+

equation?tex=j%E2%86%90+j%2B1+

equation?tex=if+%5C+dist+%3C+best%5C_so%5C_far+ :

equation?tex=best%5C_so%5C_far+%E2%86%90dist%2C+++nn%E2%86%90+count+

equation?tex=ex%E2%86%90+ex-X%5Bmod%28i%2B1%2Cm%29%5D+

equation?tex=ex%5E2%E2%86%90+ex%5E2-X%5Bmod%28i%2B1%2Cm%29%5D%5E2+

equation?tex=count++%E2%86%90+count%2B1+

其中公式:

equation?tex=dist%E2%86%90+dist+%2B+%28Q%5Bj%5D-%28X%5Bmod%28i%2B1%2Bj%2Cm%29%5D-%C2%B5%29%2F%CF%83%29%5E2+

如果dist > bestso_for可以实现距离计算和归一化处理早放弃,提高性能。

4.2.2 对早放弃的在排序

从左到右计算不一定是最好的顺序,是否有更好的计算顺序呢?

b4de1e68a5a12e8cc866bf861301559e.png

左图要计算到第几个点才知道需要早放弃,但右图只需计算5个点就能知道需要早放弃。

这样不同顺序查找就有加速上的偏差。但顺序的复杂度是

equation?tex=n%EF%BC%81 。是否有一个比较通用的方法能简单地找到这样一个顺序。我们都知道Guassian分布的均值是0,也就是在0的地方分布的概率最大,如果从0开始查找概率就更大。

4.2.3 LB_Keogh 里 Q,C的角色互换。

1fe6014fe2384d98b3aa201ce7947dc0.png

如左图是上下界函数包着候选C序列,而右图上下界函数包着查询Q序列。通常,LB_keoghEQ =/ LB_KeoghEC,并且平均而言一个比另一个要超过一般的时间要大。

4.2.4 下届函数堆叠

提高时间序列检索一个最有用的方法是通过下届函数剔除大量的无用的候选区域。自然而然,我们需要进一步研究下届函数。一般不能确定哪一个下界函数最有用,因为需要平衡下界函数太紧或者太松。太紧的话会导致大量有用的区域被剔除,而太松的话会不能有效提高检索速度。

441d22f1d7d932e3eba3c7259a3606d4.png

上图中列举的下界函数与加速之间的关系。LBKimFL算法复杂度最低,但太松。LBKim与

LB_Yi算法复杂度是

equation?tex=O%28n%29 ,和LB
KimFL一样,太松。折中的LBKeoghEQ等。因此可以使用LBKimFL进行粗选,使用Early_abandoning_DTW相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值