[发明专利]一种基于摘要的时间序列数据索引构建方法有效
申请号: | 201710051558.6 | 申请日: | 2017-01-20 |
公开(公告)号: | CN106844664B | 公开(公告)日: | 2020-04-17 |
发明(设计)人: | 曹朝;曲大成;张林 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2455;G06F16/248 |
代理公司: | 北京理工正阳知识产权代理事务所(普通合伙) 11639 | 代理人: | 毛燕 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 摘要 时间 序列 数据 索引 构建 方法 | ||
1.一种基于摘要的时间序列数据索引构建方法,其特征在于:是将时间序列数据分成小的时间片段,然后用线性拟合的方法压缩表示每个时间片段以形成该片段的摘要,对于压缩后的摘要数据构建树状索引结构;当需要可视化查询时,基于构建的索引结构采用增量式可视化技术而且索引结构建立一次,可供多次查询使用,通过以下步骤实现:
步骤1:基于时间序列数据,初始化系统参数;
其中,系统参数包括时间序列标号、分段最大误差以及树状索引结构中间节点的子节点个数基准、时间序列片段数组以及保存索引结构时初始化内存缓冲区的大小;
其中,时间序列标号,记为i,代表时间序列数据T中第i个时刻,此第i个时刻的值记为vi,第i时刻记为ti,下标i是大于等于0的整数;将原始时间序列分段时最大的误差,即分段最大误差记为ε;树状索引结构中间节点的子节点个数基准记为B,B是一个大于0的整数;时间序列片段数组,记为U,初始化为空;保存索引结构时初始化内存缓冲区的大小,记为X,单位是兆字节;
步骤2:对时间序列数据进行分段,输出时间序列片段并保存到时间序列片段数组中;
步骤3:采用拟合函数对步骤2输出的每一段时间序列片段进行拟合,得到每一段时间序列片段的数据摘要信息,具体为:
将步骤2输出结果,时间序列片段数组U中的每一项采用线性回归进行拟合,并记录每一项的数据摘要信息下标j对应时间序列片段在U中的顺序,j是大于0小于|U|的整数,|U|代表数组U的长度;
其中,ts和te分别代表时间序列片段的开始时刻和结束时刻,vs和ve分别表示ts时刻和te时刻的值,e代表用线性拟合后的直线代替时间序列数据产生的误差,即拟合误差,M代表每一时刻的值累加后的和,P代表每一时刻和该时刻的值相乘后累加的和;
vs根据公式(1)计算,ve根据公式(2)计算,e根据公式(3)计算,M根据公式(4)计算,P根据公式(5)计算;
vs=f(ts) (1)
其中,f(ts)代表ts时刻函数f(t)的值,f(t)代表拟合后直线的函数表达式,用公式(6)表示;
ve=f(te) (2)
其中,f(te)代表te时刻函数f(t)的值;
其中,V(t)代表时间序列数据中t时刻对应的值;代表从ts到te时刻对V(t)与f(t)差值的平方求和;
其中,代表从ts到te时刻对V(t)求和;
其中,代表从ts到te时刻对V(t)与t的乘积求和;
f(t)=ηt+θ (6)
其中η和θ分别为f(t)的拟合斜率和拟合偏置,分别用公式(7)和公式(8)计算:
其中,代表从ts到te时刻对的平方求和,
代表从ts到te时刻对和V(t)的乘积求和;
步骤4:利用步骤3得到的数据摘要信息,构建树状索引结构,具体为:
步骤4将步骤3中每一项数据摘要信息,当作树中最底层节点,自下而上合并产生上层节点,构建树状索引结构;
其中,自下而上合并产生上层节点,即由下一层节点合并产生上一层节点的过程如下:
步骤4.1:顺序读取一个下一层节点到数据缓冲区中,数据缓冲区用来暂时保存读到的节点数据,判断节点数据的数量,并进行相应操作:
4.1A:当数据缓冲区节点数量达到2*B时,跳至步骤4.2;
4.1B:当数据缓冲区节点数量不足2*B且读取的节点不是最后一个节点时,跳回步骤4.1;否则,若数据缓冲区节点数量不足2*B且读取的节点是最后一个节点,跳转至步骤4.5;
步骤4.2:合并相邻两个节点为一个节点,将合并产生节点的拟合误差作为合并代价,计算数据缓冲区中合并任意两个相邻节点的合并代价,采用自下而上的方式,选择合并代价最小的两个节点合并,产生一个合并节点;
其中,将“合并相邻两个节点为一个节点”中相邻两个节点的一个节点记为N1,另一个节点记为N2,产生的合并节点记为Na,且
合并过程是将N1和N2的数据摘要信息计算出合并节点Na的数据摘要信息;
在公式(9)-(20)中,用下标k用来区分不同的节点,即用下标k用来区分不同的节点,即k为1时对应节点N1,k为2时对应节点N2,k为a时对应节点Na;和分别表示节点Nk对应的时间序列片段的开始时刻和结束时刻,和分别表示节点Nk对应的时间序列片段开始时刻的值和结束时刻的值,根据公式(9)计算,根据公式(10)计算;
其中,和分别代表时刻和时刻fa(t)的值,并分别记为和和分别为节点Na数据摘要信息中的开始时刻和结束时刻,且节点Na的开始时刻为节点N1的开始时刻节点Na的结束时刻为节点N2的结束时刻fa(t)表示对和之间的时间序列片段采用线性回归拟合后直线的函数表达式,用公式(11)表示,
其中,ηa是fa(t)的拟合斜率,Ma为节点N1中M1和节点N2中M2相加的和,表示节点N1对应的时间序列片段的开始时刻,表示节点N2对应的时间序列片段的结束时刻;
ea为节点Na的拟合误差,同时也看作为N1和N2的合并代价,拟合误差越小,合并代价越小,反之,拟合误差越大,合并代价越大,ea根据公式(12)计算;
其中,e1表示节点N1的拟合误差,e2表示节点N2的拟合误差;f1(t)表示对节点N1对应的时间序列片段,采用线性回归拟合后直线的函数表达式,f2(t)表示节点N2对应的时间序列片段,采用线性回归拟合后直线的函数表达式;表示节点N2对应的时间序列片段的开始时刻,表示节点N1对应的时间序列片段的结束时刻;θ1、θ2和θa分别是f1(t)、f2(t)和fa(t)的拟合偏置;η1和η2分别是f1(t)和f2(t)的拟合斜率;M1和M2分别表示节点N1和N2对应的时间序列片段每一时刻的值累加后的和,且Ma为节点N1中M1和节点N2中M2相加的和;P1和P2分别表示节点N1和N2对应时间序列片段每一时刻和对应的值相乘后累加的和;
表示从到时刻对f1(t)和fa(t)差值的平方求和;
表示从到时刻对f2(t)和fa(t)差值的平方求和;
表示从到时刻对f1(t)和(f1(t)-fa(t))的乘积求和;
表示从到时刻对f2(t)和(f2(t)-fa(t))的乘积求和;节点N1中P1和节点N2中P2相加的和为Pa;
f1(t)和f2(t)分别用公式(13)和公式(14)表示:
其中,和分别表示节点N1和N2对应的时间序列片段开始时刻的值;
fa(t)、f1(t)和f2(t)的拟合斜率ηa、η1和η2分别用公式(15)、(16)和(17)表示:
其中,n1表示相邻的第一个节点N1可以覆盖的时间范围,n2表示相邻的第二个节点N2可以覆盖的时间范围,na表示合并节点Na可以覆盖的时间范围;和分别表示节点N1和N2对应的时间序列片段结束时刻的值;
n1根据公式(18)计算,n2根据公式(19)计算,na根据公式(20)计算;
步骤4.3:将步骤4.2中选择出来的合并代价最小的两个节点用合并节点替换,判断节点数量并进行相应的操作:
4.3A:当数据缓冲区中的节点数量大于2时,跳转回步骤4.2;
4.3B:当数据缓冲区中只剩下2个节点时,将合并产生数据缓冲区中第1个节点的下一层节点数量记为C1,其中下标1代表数据缓冲区中第一个节点;
步骤4.4:保存数据缓冲区中的第一个节点为上一层节点;然后,清空数据缓冲区;再将合并产生第2个节点的2*B-C1个下一层节点读入数据缓冲区,然后跳转回步骤4.1;
步骤4.5:将数据缓冲区中小于2*B个的节点合并成一个上一层节点;
步骤4.6:在上一层节点中添加指针和子节点的索引,指向对应的子节点,同时在每一层节点上都添加右指针,指向右边相邻的节点;
其中,上一层节点为父节点,合并产生上一层节点的下一层节点为对应父节点的子节点;上一层节点和下一层节点之间用指针来建立对应的父子关系;
步骤5:保存步骤4生成的树状索引结构。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710051558.6/1.html,转载请声明来源钻瓜专利网。