发明名称 在时间序列数据库中查找给定时间序列的近似序列的方法
摘要 本发明属于数据挖掘技术领域,具体为一种在海量时间序列数据库中查找给定时间序列的近似序列的方法。该方法包括:采用树状索引的结点表示方式;根据索引的算法框架,逐条构建索引;选择最优策略进行结点分裂;最后基于DSTree索引进行查询,海量时间序列数据库中查找给定时间序列的近似序列。本发明提出的索引方法,根据时间序列的数据分布情况调整索引子序列长度和维度,新的索引表示方式也满足提供距离上界的需求,大幅提高查询效率。
申请公布号 CN102737124B 申请公布日期 2017.02.15
申请号 CN201210197177.6 申请日期 2012.06.15
申请人 复旦大学 发明人 王鹏;汪卫;;祝然威
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞;盛志范
主权项 一种在海量时间序列数据库中查找给定时间序列的近似序列的方法,其特征在于具体步骤为:(一)构建树结构索引:在海量时间序列插入数据库时,利用索引构建算法逐条构建树结构索引,构建索引的算法步骤如下:(1)对于新插入的时间序列X和索引结点N,N的初始值为根结点,首先计算X的平均值和标准差m<sub>Q</sub>、s<sub>Q</sub>,更新索引结点N的平均值上、下界:m<sub>u</sub>、m<sub>l</sub>,和标准差上、下界:s<sub>u</sub>、s<sub>l</sub>;(2)如果索引结点N是叶结点,将时间序列X放入索引结点N指向的文件F中,并执行步骤(3)‑步骤(5),否则跳过步骤(3)‑步骤(5),直接执行步骤(6);(3)如果索引结点N中时间序列数量超过指定的阈值th,选择一个最优结点分裂策略SP;(4)把索引结点N设为非叶子结点,新建两叶子结点作为N的子结点;(5)将索引结点N结点对应的F文件中的时间序列逐条插入到子结点中;(6)判断时间序列X属于索引结点N的哪个子结点,将X插入对应的子结点;其中,步骤(3)中,所述一个最优结点分裂策略SP从如下3种结点分裂策略中选择,并按照该策略对叶子节点进行分裂;所述3种结点分裂策略分别如下:(a)根据平均值纵向分裂:假设选中将要分裂的索引结点N所指向的时间序列平均值的取值范围为[μ<sub>l</sub>,μ<sub>u</sub>],其中μ<sub>l</sub>,μ<sub>u</sub>分别表示平均值上、下界,那么将N分裂为两个新结点N<sub>l</sub>,N<sub>r</sub>,它们所指向的时间序列的平均值取值范围分别为<img file="FDA0001040113950000011.GIF" wi="626" he="135" />(b)根据标准差纵向分裂:假设选中将要分裂的索引结点N所指向的时间序列方差的取值范围为[σ<sub>l</sub>,σ<sub>u</sub>],其中σ<sub>l</sub>,σ<sub>u</sub>分别表示标准差上、下界,那么将N分裂为两个新结点N<sub>l</sub>,N<sub>r</sub>,它们所指向的时间序列的标准差取值范围分别为<img file="FDA0001040113950000012.GIF" wi="629" he="135" />(c)根据时间跨度横向分裂:假设选中将要分裂的索引结点N所指向的时间序列的时间取值范围为[r<sub>i‑1</sub>+1,r<sub>i</sub>],其中r<sub>i</sub>表示时间第i段时间序列中最后一个点的时刻,那么将N分裂为两个部分S<sub>1</sub>和S<sub>2</sub>,它们所指向的时间序列的时间取值范围分别为<img file="FDA0001040113950000013.GIF" wi="882" he="135" />再从S<sub>1</sub>和S<sub>2</sub>中选择一个, 根据平均值或者标准差进行纵向分裂,得到R<sub>1</sub>,R<sub>2</sub>两个值域,再依据R<sub>1</sub>,R<sub>2</sub>对N进行划分;其中,假设被选中的S<sub>1</sub>平均值取值范围为[μ<sub>l</sub>,μ<sub>u</sub>],则R<sub>1</sub>,R<sub>2</sub>分别为<img file="FDA0001040113950000021.GIF" wi="622" he="134" />对于3种分裂策略,最优策略SP的选择依据是:(a)定义结点计算指标:<img file="FDA0001040113950000022.GIF" wi="438" he="64" />其中μ<sub>u</sub>,μ<sub>l</sub>分别表示节点包含的所有时间序列的平均值的上、下界,σ<sub>u</sub>表示标准差上界;(b)对于结点N的三种分裂策略,用N<sub>l</sub>,N<sub>r</sub>表示分裂后结点,分别计算分裂策略的收益B:<img file="FDA0001040113950000023.GIF" wi="477" he="122" />其中<img file="FDA0001040113950000024.GIF" wi="234" he="59" />和<img file="FDA0001040113950000025.GIF" wi="78" he="58" />分别是原始节点N、分裂得到的两个节点N<sub>l</sub>和N<sub>r</sub>的质量;选择B值最大的策略对N进行分裂;(二)基于DSTree索引的查询:索引构建完成后,在海量时间序列数据库中查找给定时间序列的近似序列,其步骤为:(1)对于待查的时间序列Q,先以步骤(一)的构建树结构索引算法,计算得出距离Q最近的索引结点N<sub>0</sub>,对于时间序列Q,其均值记为μ<sub>Q</sub>,标准差记为σ<sub>Q</sub>;索引节点N中的均值最大值为μ<sub>u</sub>,最小值为μ<sub>l</sub>;标准差最大值为σ<sub>u</sub>,最小值为σ<sub>l</sub>;由表1得出Q与N<sub>0</sub>之间的均值和标准差上下界UB<sub>μ</sub>/n、LB<sub>μ</sub>/n、UB<sub>σ</sub>/n和LB<sub>σ</sub>/n,取LB<sub>μ</sub>/n和LB<sub>σ</sub>/n之和为Q与N<sub>0</sub>之间距离平方的下界LB<sub>dist</sub>,开方可得距离下界初始值BSF;(2)接下来从根结点root开始自顶向下广度优先遍历索引树,对于树中的一个结点N,若N与Q的距离下界LB<sub>dist</sub>大于BSF,则忽略N及其所有子孙结点;若N与Q距离下界LB<sub>dist</sub>小于BSF,更新BSF,遍历N的所有子结点;对于遍历过程中小于BSF的叶子结点N<sub>leaf</sub>,将其中包含的每一条序列取出与Q直接计算距离,用最小距离更新BSF;索引遍历结束时,BSF的值为最小距离,所对应的序列即最近似序列:表1.时间序列与时间序列集合距离上、下界计算表<img file="FDA0001040113950000031.GIF" wi="1789" he="872" /><tables num="0001" wi="151"><table><tgroup cols="3"><colspec colname="c001" colwidth="34%" /><colspec colname="c002" colwidth="32%" /><colspec colname="c003" colwidth="33%" /><tbody><row><entry morerows="1">Case </entry><entry morerows="1">UB<sub>σ</sub>/n </entry><entry morerows="1">LB<sub>σ</sub>/n </entry></row><row><entry morerows="1">σ<sub>Q</sub>≤σ<sub>l</sub></entry><entry morerows="1">(σ<sub>u</sub>+σ<sub>Q</sub>)<sup>2</sup></entry><entry morerows="1">(σ<sub>l</sub>‑σ<sub>Q</sub>)<sup>2</sup></entry></row><row><entry morerows="1">σ<sub>l</sub>≤σ<sub>Q</sub>≤σ<sub>u</sub></entry><entry morerows="1">(σ<sub>u</sub>+σ<sub>Q</sub>)<sup>2</sup></entry><entry morerows="1">0 </entry></row><row><entry morerows="1">σ<sub>u</sub>≤σ<sub>Q</sub></entry><entry morerows="1">(σ<sub>u</sub>+σ<sub>Q</sub>)<sup>2</sup></entry><entry morerows="1">(σ<sub>u</sub>‑σ<sub>Q</sub>)<sup>2</sup></entry></row></tbody></tgroup></table></tables>                                                                     。
地址 200433 上海市杨浦区邯郸路220号