DTW算法挖掘亿万级时序数据,其优化能耐几何?

概述

常见的距离度量尺度有:欧式距离,马氏距离、曼哈顿距离。

欧式距离在n维空间中表示为:
欧几里得距离

常用于计算两个等长序列的相似性,序列可以包含股票、DNA等。对于不等长的序列,计算相似性关键是在于计算之前或者过程中,找到两个时序数据上点的对应关系,因为它不像等长数据已经存在了数据点的一一对应关系。

等长数据,比如:比较近10天两只开盘股票走势k线图
不等长数据,比如:相同时间内不同抽样频率(Hz)的心电图、两段“麻烦请开门”的语音音频

因此,日本学者Itakura最早提出 Dynamic Time Warping(下文简称DTW,中文常翻译为“动态时间规整”)算法,它出现的目的也比较单纯,是一种衡量两个长度不同的时间序列的相似度的方法——在对齐两个序列的过程中通过定义的距离计算公式计算序列的相似度。其应用广泛,主要在于模版匹配,如孤立词语音识别、手势识别、DNA序列配对等。

这里,距离计算公式包括(但不限于)上文提到的欧式距离。

DTW通过把时间序列进行延伸和缩短,来计算两个时间序列性之间的相似性,规整后两个序列之间的距离应该在所有对齐方案中是最小的,即达到feature-to-feature的对齐。

原理

'dtw算法原理'

以上面的Q,C序列为例,DTW算法的求解过程的直观理解为构建一个nxn的矩阵(此处假设Q和C的时间序列长度都为n——当然也可以不等长——矩阵中的元素(i,j)表示序列Q的时间点qi和序列C的时间点cj之间的欧式距离),目标是在矩阵中找到一条从(0,0)到(n,n)的路径,使得路径上的所有元素之和最小。

“矩阵中的元素(i,j)表示序列Q的时间点qi和序列C的时间点cj之间的欧式距离”,下图进行说明。


1.png

“目标是在矩阵中找到一条从(0,0)到(n,n)的路径,使得路径上的所有元素之和最小”,下图进行说明。


2.png

这里提及dtw的几个约束:

  1. local constraint(在矩阵中表示为定义的“步”的方向都得朝向右上角,每一步都得离终点更近,否则会导致crossing line)
  2. global constraint(不可跨越一定限度的数据点进行对齐,否则会导致对齐密度不均衡)
  3. start&ending contraint(头尾数据点各自对齐)
  4. weight(路径权重的设置,平衡业务偏好和local内的距离偏好)
  5. distance(距离度量方式)

允许在对齐过程中,有些点被跳过,没有被对齐——取决于定义的“步”。
由于矩阵中路径上的每个点都能分解为一个“多点到达”的子问题结构,因此dtw就是通过动态规划法(dp,dynamic programming)进行求解的一个例子。

在后面给出的DTW算法的python简单实现中,通过在循环中约束i和j的关系实现global constraint——通过简单画图可以了解。

问题与优化

那简单介绍完DTW的原理之后便引入了这篇论文《KDD2012 Best Paper-"Searching and Mining Trillions of Time Series Subsequences under Dynamic Time Warping”》[1]。

上文提到,DTW在多个领域都有所应用。随着互联网的到来和数据量的爆发(很多生产环境数据量早已突破万亿级别,而学术界仍停留在百万、十亿级数据集的研究上),原始DTW的实现弊病暴露,场景的应用对算法的性能提出了更高的要求,而该论文的核心正是通过对其他论文的review,现有优化方式的review以及对提出的计算优化方案的review来告诉我们,优化后的DTW(论文称为UCR suite)仍然是最强最快的时序相似度计算方式。

论文首先指出以下假设或事实:

  1. 标准化(Z-normalization)非常重要,不仅需要在整个数据集上做,在计算两序列相似度之前,还需要在两个序列上单独做。
  2. 在巨量数据集数据库中检索变长序列,理论上可行,但实际上不可行。

已知的优化方法:

  1. 计算过程中欧式距离使用平方代替平方根,直到获得最小距离(的平方)时再开方获得最终结果。
  2. 使用lower bound技术,伪代码思想如下:
Algorithm Lower_Bounding_Sequential_Scan(Q)
best_so_far = infinity; 
for all sequences in database 
    LB_dist = lower_bound_distance(Ci,Q); 
        if LB_dist < best_so_far
            true_dist = DTW(Ci,Q);
            if true_dist < best_so_far
                best_so_far = true_dist;
                index_of_best_match= i;
            endif
        endif
endfor

lower bound具体计算方法有多种,如稳重提到的LB_kim,LB_keogh。

  1. 在计算欧式距离或lower bound时采用早停技术。
  2. 因为计算DTW真实距离(最优路径)时采用 DTW(Q1:K,C1:K) + LB_Keogh(QK+1:n,CK+1:n)作为实时的距离(为真实距离的lower bound,K为任一中间数据点序号),在此采用早停技术。
  3. 使用多核机器并行计算(众所周知)。

论文提出的新的优化方法:

  1. 标准化比计算欧几里得距离的耗时还要长一些,因此考虑在标准化过程中结合计算欧式距离或lower bound,引入早停技术。
  2. 对时序进行重排序

We conjecture that the universal optimal ordering is to sort the indices based on the absolute values of the Z-normalized Q.
For this we simply take each Ci and sort them, largest first, by their sum of their contributions to the Euclidean distance.
We compared this empirically optimal ordering with our predicted ordering (sorting the indices on the absolute values of Q) and found the rank correlation is 0.999.

  1. 对备查序列建立包络,而不是查询序列。
  2. 将多种lower bound计算方式串联。
    • 因为lower bound技术实证有助于加速搜索过程,因此在研究界对此的研究很繁荣。每一种的紧度(tightness)和计算速度都不尽相同。下图为证:[图片上传失败...(image-6d35f9-1571736906097)]
      可见,紧度和计算复杂度是成正比的,因此没有最佳的技术,只有最合适的技术。作者的想法是将这些技术从复杂度低到高串联起来,如果计算完和lower bound计算完距离后没有超过目前最小距离(the best-so-far),那就接着计算上述方案(早停版的DTW)——不管是O(1)还是O(nR),都远小于O(n2)。
  3. 另外,对于存在重抽样的序列(如[2.34, 2.34, 2.34, 2.01, 2.01, 2.01, 1.99, 1.99, 1.99,... ]),除了使用以上UCR-dtw方法,作者有以下建议:
    1. 先对原数据的子集按照比例n下采样,使用UCR-dtw算法计算出距离rD;
    2. 再在完整数据集上运行,提前设置参照距离为rD*10。
    3. 如此之后,在特定数据集上能提升3倍的速度。

未完待续,欢迎留言交流。
此处可获取代码,结合理解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353