CN106778874A - 一种可回溯的动态时间弯曲并行计算方法 - Google Patents
一种可回溯的动态时间弯曲并行计算方法 Download PDFInfo
- Publication number
- CN106778874A CN106778874A CN201611187462.4A CN201611187462A CN106778874A CN 106778874 A CN106778874 A CN 106778874A CN 201611187462 A CN201611187462 A CN 201611187462A CN 106778874 A CN106778874 A CN 106778874A
- Authority
- CN
- China
- Prior art keywords
- sequence
- dtw
- length
- new
- checkpoint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Abstract
本发明公开一种可回溯的动态时间弯曲并行计算方法,其包括以下步骤:步骤1:获取两条时间序列A和B;步骤2:将A、B作为序列X、Y,定义初值为‑1的临时变量V;步骤3:对序列X分割为X1、X2,对X2进行倒置,对Y倒置生成序列Y2;步骤4:采用多线程分块方式计算X1和Y、X2和Y2的DTW矩阵D1和D2;步骤5:对D1和D2的最后一列的数值t1j和t2j倒序相加,并结合V的值确定检查点坐标;步骤6:用检查点的纵坐标将Y截取成两条新的序列Y3、Y4,并分别进行迭代计算;步骤7:将所有检查点坐标在序列A和序列B生成的DTW矩阵中标出并相连即为A序列与B序列的DTW回溯路径。本发明解决了使用DTW算法计算相似度时因回溯所造成的时间和空间复杂度过高的问题。
Description
技术领域
本发明涉及一种可回溯的动态时间弯曲并行计算方法。
背景技术
目前在时间序列相似度比较方法相关技术中,最常用的方法包括:欧氏距离、动态时间弯曲(以下简称DTW)。欧氏距离通过计算序列中每两点间的距离来度量序列的相似性,虽然有着计算简单有效的优点,但是缺点也十分明显:在计算序列长度不相等的序列时不够精确,同时无法处理两段序列的相似部分长度不相等时的情况。
相对的,DTW算法就可以有效的弥补欧氏距离的缺陷。对于序列中的相似部分不等长的情况,DTW可以对不等长部分进行动态的弯曲对齐并找到两条序列中点的一一对应。由此在精确度上相比欧氏距离也会有一个提高。
DTW算法的缺点在于它的时间复杂度和空间复杂度过高。计算两条序列时需要生成两条序列的矩阵并对矩阵中的每一个点都进行一次计算,也正因为如此DTW算法在计算长序列相似度时会面临很大的困难。
DTW算法在计算完两条序列的相似度后,还能进行一个回溯操作来找出两条序列间点的一一对应关系。Hirschberg使用了一种方法,让每次进行DTW矩阵计算的时候只需要保存矩阵两行或者两列的空间,同时还能在相似度计算出来后进行回溯操作。但是该方法在降低了空间复杂度的情况下,增加了矩阵计算所需要的时间。
发明内容
本发明的目的在于克服现有技术为了解决时间序列间使用DTW算法计算相似度时因为需要回溯所造成的时间和空间复杂度过高的问题,提供一种可回溯的动态时间弯曲并行计算方法。
本发明采用的技术方案是:
一种可回溯的动态时间弯曲并行计算方法,其包括以下步骤:
步骤1:获取两条需要求出DTW相似度的时间序列A和B;
步骤2:将A、B作为序列X、Y,同时定义一个临时变量V,将V赋初值为-1;
步骤3:对序列X进行对半分割为X1、X2,对X2进行倒置,对Y进行倒置生成新序列Y2;
步骤4:采用多线程分块方式计算X1和Y、X2和Y2的DTW矩阵D1和D2;
步骤5:对D1和D2的最后一列的数值t1j和t2j进行倒序相加,并结合V的值确定检查点坐标;当V等于-1时,则记录下倒序相加后最小值处的两个数值t1k和t2k,将t1k所在坐标作为检查点,同时该最小值为A与B的DTW相似度;
当V不等于-1时,取倒序相加后值等于V的点为检查点,记录并保存下检查点的坐标;
步骤6:用步骤5中检查点的纵坐标将Y截取成两条新的序列Y3、Y4,
当X1的长度大于1,则将t1k作为V,并创建一个新线程,再将X1、Y3作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X1长度等于1,则不再进行迭代;
当X2的长度大于1,则将t2k作为V,并创建一个新线程,并将X2、Y4作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X2长度等于1,则不再进行迭代;
步骤7:当步骤6中的所有迭代都完成之后,将所有找到的检查点坐标在序列A和序列B生成的DTW矩阵中标出,矩阵中的所有检查点相连即为A序列与B序列的DTW回溯路径。
进一步地,所述检查点是序列A和B构成的DTW矩阵中回溯路径上的一个点,回溯路径中的所有点都被称为检查点。
进一步地,步骤3中当序列X的长度为偶数时,将序列X分割为长度相等的X1和X2;当序列X的长度为奇数时,将序列X分割为X1和X2。其中X1的长度为X2的长度加1。
本发明采用以上技术方案,使用多线程一起进行矩阵计算的流水线,对每一个矩阵直接使用一个线程来计算的方式,使得运算更为简便,避免了而在第ε次计算后,由于会生成2ε个矩阵,继续分块会导致运算更为复杂的问题。本发明在矩阵计算过程中每个线程只需要保存后续计算需要用到的值,且矩阵的计算结束后,只需要保存计算完成的矩阵最后一列的数值。本发明有效地解决了时间序列间使用DTW算法计算相似度时因为需要回溯所造成的时间和空间复杂度过高的问题。
附图说明
以下结合附图和具体实施方式对本发明做进一步详细说明;
图1为本发明一种可回溯的动态时间弯曲并行计算方法的流程示意图;
图2为本发明一种可回溯的动态时间弯曲并行计算方法的多线程流水线计算示意图;
图3为本发明一种可回溯的动态时间弯曲并行计算方法的回溯路径示意图。
具体实施方式
本发明公开一种可回溯的动态时间弯曲并行计算方法,其包括以下步骤:
步骤1:获取两条需要求出DTW相似度的时间序列A和B;
步骤2:将A、B作为序列X、Y,同时定义一个临时变量V,将V赋初值为-1;
步骤3:对序列X进行对半分割为X1、X2,对X2进行倒置,对Y进行倒置生成新序列Y2;
步骤4:采用多线程分块方式计算X1和Y、X2和Y2的DTW矩阵D1和D2;
步骤5:对D1和D2的最后一列的数值t1j和t2j进行倒序相加,并结合V的值确定检查点坐标;当V等于-1时,则记录下倒序相加后最小值处的两个数值t1k和t2k,将t1k所在坐标作为检查点,同时该最小值为A与B的DTW相似度;
当V不等于-1时,取倒序相加后值等于V的点为检查点,记录并保存下检查点的坐标;
步骤6:用步骤5中检查点的纵坐标将Y截取成两条新的序列Y3、Y4,
当X1的长度大于1,则将t1k作为V,并创建一个新线程,再将X1、Y3作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X1长度等于1,则不再进行迭代;
当X2的长度大于1,则将t2k作为V,并创建一个新线程,并将X2、Y4作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X2长度等于1,则不再进行迭代;
步骤7:当步骤6中的所有迭代都完成之后,将所有找到的检查点坐标在序列A和序列B生成的DTW矩阵中标出,矩阵中的所有检查点相连即为A序列与B序列的DTW回溯路径。
进一步地,所述检查点是序列A和B构成的DTW矩阵中回溯路径上的一个点,回溯路径中的所有点都被称为检查点。
进一步地,步骤3中当序列X的长度为偶数时,将序列X分割为长度相等的X1和X2;当序列X的长度为奇数时,将序列X分割为X1和X2。其中X1的长度为X2的长度加1。
下面就具体实施例对本发明做详细说明
如图1-3之一所示,一种可回溯的动态时间弯曲并行计算方法,其包括以下步骤:
步骤1:输入两条需要求出DTW相似度的时间序列A={x1,x2,...xm}和B={y1,y2,...yn}。
步骤2:对于A、B中的子序列X、Y定义一种数据格式:{Xstart,Xend,Ystart,Yend,V}。
其中:Xstart和Xend为序列X的第一个和最后一个元素在序列A中的位置,Ystart和Yend为序列Y的第一个和最后一个元素在序列B中的位置,因此序列X和序列Y的长度为(Xend-Xstart+1)与(Yend-Ystart+1)。V是用于之后查找检查点时所需要用的临时值,V的初始值为-1。例如对于原始输入序列A、B,数据格式为{1,m,1,n,-1}。
步骤3:对序列X进行分割操作,若X长度为偶数,则将X切分为X1={x1,x2,...x(Xend-Xstart+1)/2}和X2={x(Xend-Xstart+1)/2+1,x(Xend-Xstart+1)/2+2,...x(Xend-Xstart+1)}两部分。若X长度为奇数,则将X切分为X1={x1,x2,...x(Xend-Xstart+2)/2}和X2={x(Xend-Xstart+2)/2+1,x(Xend-Xstart+2)/2+2,...x(Xend-Xstart+1)}两部分。对切分后的X2进行倒序处理,即X2={x(Xend-Xstart+1),x(Xend-Xstart),...x(Xend-Xstart+1)/2+1}或X2={x(Xend-Xstart+1),x(Xend-Xstart),...x(Xend-Xstart+2)/2+1},同时对Y进行倒序处理后形成新的序列Y2={y(Yend-Ystart+1),y(Yend-Ystart),...y1}。
步骤4:通过多线程流水线计算的方式分别计算出X1和Y、X2和Y2之间的DTW距离矩阵
其中:dij的计算方式如下:dij=DTW(xi,yj)。
xi表示X1或者X2的第i个序列;yj表示Y或者Y2的第j个序列;DTW()表示使用DTW算法的公式计算两条序列的DTW相似度。
多线程流水线计算方式如图2所示,现有p个进程,在前ε次计算时,对矩阵划分为r个部分,每个部分使用一个线程单独计算。线程在计算时按照行计算的方式,优先计算矩阵中每一行的数值。而根据DTW算法公式的矩阵计算特性,对于任意一列中的某行处的数值,只有当这个数值被计算出来之后,下一列同一行的数值才能开始计算,因此当第一个线程的第一行计算完成后,第二个线程才能开始自身的第一行计算,而此时第一个线程就开始第二行的计算,以此类推。由此形成一条多线程一起进行矩阵计算的流水线。而在第ε次计算后,由于会生成2ε个矩阵,继续分块会导致运算更为复杂,因此采用对每一个矩阵直接使用一个线程来计算的方式。
在矩阵计算过程中每个线程只需要保存后续计算需要用到的值,例如在计算第i列时,根据DTW矩阵的计算特点,只需要保存第i-1列的数值和当前正在计算的第i列。矩阵的计算结束后,只需要保存计算完成的矩阵最后一列的数值。
步骤5:对于步骤4中计算好的X1和Y的DTW距离矩阵D1、X2和Y2的DTW距离矩阵D2,将D1矩阵中最后一列的纵坐标j处的数值t1j与D2矩阵中最后一列的纵坐标n-j处的数值t2j相加,j=1,2,...(Yend-Ystart+1)。
此时若数据格式中的V为-1,则从所有t1j和t2j相加后的结果中取出最小值Dv,以及构成Dv的两个数值t1k和t2k。将t1k的序号k,即t1k在矩阵D1中的纵坐标取出。同时Dv就为序列A与B的DTW相似度。
若数据格式中的V不为-1,则从所有t1j和t2j相加后的结果中找出相加的值等于V的两个数值t1k和t2k,将t1k的序号k,即t1k在矩阵D1中的纵坐标取出。
若X长度为偶数,则生成一个新的坐标((Xend-Xstart+1)/2,k),若X长度为奇数,则新坐标为((Xend-Xstart+2)/2,k)。该坐标被称为原序列A与B的一个检查点。
步骤6:找出步骤5中的检查点后,k可以将序列Y划分为两个部分,分别是Y3={y1,y2,...yk}与Y4={yk+1,yk+2,...yn}。记录下X1和Y3、X2和Y4的数据格式{Xstart,(Xend-Xstart+1)/2,Ystart,k,t1k}、{(Xend-Xstart+1)/2+1,Xend,k+1,Yend,t2j},判断若序列X1的长度大于1,则将X1和Y3重新放回步骤2中,将X1作为步骤2中的X,Y3作为步骤2中的Y,同时传入数据格式{Xstart,(Xend-Xstart+1)/2,Ystart,k,t1k}作为输入,重新进行整个计算步骤的流程,否则提取X1和Y3的数据格式中的Xstart和Ystart生成的坐标(Xstart,Ystart)当作检查点。同理对X2和Y4进行同上述X1和Y3相同的操作,判断若X2的长度大于1,则将X2和Y4重新放回步骤2中,将X2作为步骤2中的X,Y4作为步骤2中的Y,同时传入数据格式{(Xend-Xstart+1)/2+1,Xend,k+1,Yend,t2j}作为输入,重新进行整个计算步骤的流程。
步骤7:将所有找到的检查点坐标在序列A和序列B生成的DTW矩阵中列出,矩阵中的所有坐标相连即为A序列与B序列的DTW回溯路径。
如图3所示,A点为上述步骤第一次迭代时所找出的检查点。A点将矩阵划分为了四个部分,第二次的迭代会在两个起始点到A点之间的两个部分处进行,如图3中的D点到A点的部分与E点到A点的部分。而B点和C点为第二次迭代时找出的检查点,这两个点又将各自的区域划分为了四个部分。以此类推,第i次迭代可以找出2i个检查点,直到迭代完成,最终所有检查点可以连接成一条回溯路径。
本发明采用以上技术方案,使用多线程一起进行矩阵计算的流水线,对每一个矩阵直接使用一个线程来计算的方式,使得运算更为简便,避免了而在第ε次计算后,由于会生成2ε个矩阵,继续分块会导致运算更为复杂的问题。本发明在矩阵计算过程中每个线程只需要保存后续计算需要用到的值,且矩阵的计算结束后,只需要保存计算完成的矩阵最后一列的数值。本发明有效地解决了时间序列间使用DTW算法计算相似度时因为需要回溯所造成的时间和空间复杂度过高的问题。
Claims (3)
1.一种可回溯的动态时间弯曲并行计算方法,其特征在于:其包括以下步骤:
步骤1:获取两条需要求出DTW相似度的时间序列A和B;
步骤2:将A、B作为序列X、Y,同时定义一个临时变量V,将V赋初值为-1;
步骤3:对序列X进行对半分割为X1、X2,对X2进行倒置,对Y进行倒置生成新序列Y2;
步骤4:采用多线程分块方式计算X1和Y、X2和Y2的DTW矩阵D1和D2;
步骤5:对D1和D2的最后一列的数值t1j和t2j进行倒序相加,并结合V的值确定检查点坐标;当V等于-1时,则记录下倒序相加后最小值处的两个数值t1k和t2k,将t1k所在坐标作为检查点,同时该最小值为A与B的DTW相似度;
当V不等于-1时,取倒序相加后值等于V的点为检查点,记录并保存下检查点的坐标;
步骤6:用步骤5中检查点的纵坐标将Y截取成两条新的序列Y3、Y4,
当X1的长度大于1,则将t1k作为V,并创建一个新线程,再将X1、Y3作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X1长度等于1,则不再进行迭代;
当X2的长度大于1,则将t2k作为V,并创建一个新线程,并将X2、Y4作为新的序列X和Y,与新的V一起作为步骤2的输出,跳转执行步骤3;当X2长度等于1,则不再进行迭代;
步骤7:当步骤6中的所有迭代都完成之后,将所有找到的检查点坐标在序列A和序列B生成的DTW矩阵中标出,矩阵中的所有检查点相连即为A序列与B序列的DTW回溯路径。
2.根据权利要求1所述一种可回溯的动态时间弯曲并行计算方法,其特征在于:所述检查点是序列A和B构成的DTW矩阵中回溯路径上的一个点,回溯路径中的所有点都被称为检查点。
3.根据权利要求1所述一种可回溯的动态时间弯曲并行计算方法,其特征在于:步骤3中当序列X的长度为偶数时,将序列X分割为长度相等的X1和X2;当序列X的长度为奇数时,将序列X分割为X1和X2;其中X1的长度为X2的长度加1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187462.4A CN106778874A (zh) | 2016-12-20 | 2016-12-20 | 一种可回溯的动态时间弯曲并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611187462.4A CN106778874A (zh) | 2016-12-20 | 2016-12-20 | 一种可回溯的动态时间弯曲并行计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106778874A true CN106778874A (zh) | 2017-05-31 |
Family
ID=58896357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611187462.4A Pending CN106778874A (zh) | 2016-12-20 | 2016-12-20 | 一种可回溯的动态时间弯曲并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106778874A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116485282A (zh) * | 2023-06-19 | 2023-07-25 | 浪潮通用软件有限公司 | 一种基于多维指标动态竞争的数据分组方法、设备及介质 |
-
2016
- 2016-12-20 CN CN201611187462.4A patent/CN106778874A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116485282A (zh) * | 2023-06-19 | 2023-07-25 | 浪潮通用软件有限公司 | 一种基于多维指标动态竞争的数据分组方法、设备及介质 |
CN116485282B (zh) * | 2023-06-19 | 2023-09-29 | 浪潮通用软件有限公司 | 一种基于多维指标动态竞争的数据分组方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943874B (zh) | 知识图谱处理方法、装置、计算机设备及存储介质 | |
Zhao et al. | Initial guess by improved population-based intelligent algorithms for large inter-frame deformation measurement using digital image correlation | |
KR101644998B1 (ko) | Convolutional Neural Network를 이용하여 비정상 입력 데이터를 검출하는 방법 및 장치 | |
Wilkerson et al. | Simplifying the homology of networks via strong collapses | |
US11132600B2 (en) | Method and device for neural architecture search optimized for binary neural network | |
US20220398373A1 (en) | Multi-stage fpga routing method for optimizing time division multiplexing | |
CN105469110B (zh) | 基于局部线性迁移的非刚性变换图像特征匹配方法及系统 | |
CN109948002A (zh) | 基于平衡kd树的非结构网格最近壁面距离求解方法 | |
JP2019075114A (ja) | アクティベーション演算とコンボリューション演算を同時に遂行するための方法及び装置、そしてこのための学習方法及び学習装置 | |
CN106778874A (zh) | 一种可回溯的动态时间弯曲并行计算方法 | |
CN104809161A (zh) | 一种对稀疏矩阵进行压缩和查询的方法及系统 | |
CN106295710A (zh) | 基于非几何约束的图像局部特征匹配方法、装置及终端 | |
CN105488754A (zh) | 基于局部线性迁移和仿射变换的图像特征匹配方法及系统 | |
CN109116300A (zh) | 一种基于非充分指纹信息的极限学习定位方法 | |
CN109308360A (zh) | 信道参数寻找方法、装置、存储介质和计算机设备 | |
Huang et al. | Truncated nuclear norm minimization for tensor completion | |
CN110717601A (zh) | 一种基于有监督学习和无监督学习的反欺诈方法 | |
Wu et al. | Ambiguity group based location recognition for multiple power line outages in smart grids | |
CN109993338B (zh) | 一种链路预测方法及装置 | |
CN104572990A (zh) | 用于检索的方法和装置 | |
Zhu et al. | Distributed sensor network localization using combination and diffusion scheme | |
CN104850624A (zh) | 近重复记录的相似度评估方法 | |
CN105469112A (zh) | 基于局部线性迁移和刚性模型的图像特征匹配方法及系统 | |
CN102201119A (zh) | 一种基于控制点无偏变换的图像配准方法及系统 | |
Adlerborn et al. | Parallel variants of the multishift QZ algorithm with advanced deflation techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170531 |