当前位置: 首页 > 专利查询>复旦大学专利>正文

一种内存索引结构-距离树的构建及基于距离树的相似性连接算法制造技术

技术编号:13877791 阅读:57 留言:0更新日期:2016-10-22 16:26
本发明专利技术属于数据挖掘技术领域,具体为一种内存索引结构‑距离树构建及基于距离树的相似性连接算法。本发明专利技术针对海量高维数据的相似性连接问题,提出了一种新型内存索引结构‑距离树。基于距离树的相似性连接算法是一种高效的分区‑过滤两阶段算法:第一阶段,距离树可以根据数据的潜在分布对数据进行有效的分区,同时在每个分区内部保存分区过程中产生的计算;第二阶段,在每个分区内部,距离树可以利用保存的计算剪枝精算阶段大量不必要的计算。实验证明,距离树比已有的相似性连接算法具有更高的效率。

【技术实现步骤摘要】

本专利技术属于数据挖掘
,具体涉及海量高维数据相似性连接方法,此外,还涉及内存索引结构的设计。
技术介绍
相似性连接就是在给定的数据集中,找到在相似性函数度量下,所有相似性值大于用户给定阈值的数据对。相似性连接问题在很多应用当中都是基本问题。随着物理硬件性能的不断提高,人们能获取的数据量越来越大,数据复杂性也越来越高。然而,在无序的并且没有索引的数据集上进行相似性连接的计算成本非常大。现在数据规模增长的非常快,因此在很多科学应用中,相似性连接是一个瓶颈,这将阻止它们发展到更大的规模。除了数据量的快速增长,现实世界的应用中的数据模型变得越来越复杂和密集,数据维度越来越高,也因此增大了计算的复杂性。目前的研究主要关注的是基于磁盘的相似性连接算法,因此在内存连接计算方面缺乏有效性和可扩展性。暴力算法,也就是对数据集中任意两条数据记录进行比较,计算成本会随着数据个数指数性增长,问题的关键是暴力算法对于现实数据是不可行的。例如,使用皮尔森相关系数作为度量函数,对长为1000的105条时间序列数据集用暴力算法计算任意两条序列的相似度,要花费超过2个小时的时间。在过去的二十几年的相关研究中,实验证明在相似性连接过程中采用一些剪枝策略是一个可行的办法。其中数据分区-精算是一种典型的两阶段剪枝计算模型。然而,已有的技术TOUCH、PBSM等主要关注于如何对数据分区然后在各自的分区中进行进一步的精确计算。也就是说,数据分区和数据精确计算是两个独立的阶段。事实上,可以利用数据分区阶段的计算来剪掉精算阶段很多不必要的计算。本专利技术提出了一种新型索引结构,名为距离树。基于距离树的相似性查询连接是两阶段内存相似性连接算法。距离树首先根据数据的潜在分布对数据进行分区,只有同一或相邻分区内的数据之间才有可能存在相似性。同时,在同一分区内部,距离树通过树结点之间的位置信息保存了分区阶段的计算。在精确计算阶段,距离树不需要对分区中所有的数据进行两两比较,利用分区内部的结点之间的位置关系,只有相邻的结点之间需要进行比较计算,可以剪掉大量不必要的计算。
技术实现思路
本专利技术的目的在于针对海量高维数据的相似性连接查询算法的复杂性,提出一种能够简化计算的相似性连接算法。其中,还包括提出一种内存索引结构-距离树的构建方法。本专利技术提出的相似性连接算法,是在给定的数据集中,找到在相似性函数度量下,所有相似性值大于用户给定阈值的数据对。本专利技术主要包含两个方面:(1)设计一种新型索引结构,名为距离树,这种距离树可以有效的对数据进行分区,从而进行剪枝,以提高执行效率;(2)提出基于距离树的相似性连接处理算法。下面分别对这两部分进行介绍。1、距离树结构和构建方法距离树是一种分层次的树形结构。距离树的示例如图1所示,它包含两种结点:内部结点和叶结点。叶结点用于存储数据,内部结点用于存储指向其子结点的指针。距离树每个结点包含如下信息:(1)结点在树中的层次L。根结点的层次是0,根节点的子节点的层次是1,依此类推;(2)以当前结点为根结点的记录个数C;(3)位置信息pos。节点N的pos取值表示结点N中的记录和N的层次所对应的参照点的距离与的倍数关系。pos的计算方法如下,对于第i层的节点N,其包含的任意记录x和参照点rL的距离满足如下关系:其中,d(x,rL)表示x和rL的距离,是相似度阈值。构建距离树需要设置三个参数。第一个是参照点的队列,记为,距离树从根结点开始每增加一层高度,需要从R中取出一个点当作该层的中心点;第二个是叶结点能容纳的记录条数的最大数据量,记为Ψ,如果叶结点中插入的数据个数大于等于Ψ,该叶结点需要按照某种策略分裂成多个叶结点,同时自身会变成内部结点,只有叶结点能存储具体数据;第三个是用户指定的相似度阈值。本专利技术提供的距离树的构建方法,分为两个阶段:第一是初始化阶段,第二是数据插入阶段。初始化阶段,主要是计算参照点列表和初始化根节点。数据插入阶段,将所有记录插入到距离树中,并在此过程中构建出距离树。下面分别对两个阶段进行叙述。(一)初始化阶段。选取一组合适的参考点把给定的数据集划分成几个交互尽可能少的分区,可以减少大量的比较计算。算法使用主成分分析(PCA)算法来选取参照点,实验证明,PCA是一种有效的分区方法。主成分分析(Principal Component Analysis,PCA),将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。在很多情形下,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映的信息方面尽可能保持原有的信息。参照点选取好之后,开始初始化距离树。初始化阶段只构建树的根节点。新建树的根结点NR,并设置层次L=0,位置pos=-1,记录个数C=0。(二)数据插入阶段。通过逐条插入的方式构建距离树,插入数据的过程就是把每条数据分发到某个叶结点的过程。插入记录x时,从根结点NR 开始访问直到某个叶结点结束。假设当前访问结点为N(对于每条记录,首先访问根节点NR),N所在的层次为L,按如下步骤插入数据x:(1)如果N是一个叶结点,把x加到N中,N的C值加1,如果此时C=Ψ,按照结点分裂策略将N分裂;(2)如果N是一个内部结点,计算的值pos’,查找N是否存在pos取值为pos’的子结点,如果存在,则把当成当前结点,对其执行插入步骤;如果不存在,则创建一个N的子结点,设置其pos=pos’,L的值为其父结点层次值加1,把x分配到该结点并设置C=1。插入过程的一个重要步骤是结点分裂,即当任意叶节点N,其N.C=Ψ时,则需对N进行分裂,将其变为内部节点,并增加若干个子节点。下面描述插入过程的分裂具体算法,对于第i层需要分裂的结点N,按如下策略进行分裂:对于N中的每条数据x:(1)计算x和ri的距离d(x,ri);(2)计算满足的值j,如果不存在的子结点就创建一个位置信息pos=j的子结点,并把x分配到这个结点,数据个数;如果存在的子结点,则直接把x分发到这个结点,C增加1。检查获得x的结点中数据个数C,如果,则从步骤1开始对这个结点继续进行分裂。当N中的所有记录添加到其子节点中以后,N节点则变为一个内部节点,其pos值、C值和L值表示不变。2、基于距离树索引的相似性连接查询算法距离树中所有记录都保存在叶节点中。距离树中的任意两条记录可能存在两种位置关系,一种是在这两条记录位于同一个结点,另一种是这两条记录位于两个不同的结点中。根据距离树的定义和构建方法可知,在同一个结点内的数据相似度很大,因此需要进行两两计算其距离从而判断其是否相似。对于位于不同结点的两条记录,根据结点间的关系,每个叶结点只需要和少量的几个临近叶结点中的数据进行精确计算。相似性连接中判断两个叶节点的记录是否需要计算相似性主要依赖于定理1。定理1.给定在L1层和L2层的两个叶结点N1和N2,假设L1≥L2。从根结点NR到N1 和N2经过的结点的位置序列分别为{p1,p2,...,pL1本文档来自技高网
...

【技术保护点】
一种索引结构‑距离树的构建方法,其特征在于,所述距离树是一种分层次的树形结构,它包含两种结点:内部结点和叶结点;叶结点用于存储数据,内部结点用于存储指向其子结点的指针;距离树每个结点包含如下信息:(1)结点在树中的层次L,根结点的层次是0,根节点的子节点的层次是1,依此类推;(2)以当前结点为根结点的记录个数C;(3)位置信息pos,节点N的pos取值表示结点N中的记录和N的层次所对应的参照点的距离与的倍数关系;pos的计算方法如下,对于第i层的节点N,其包含的任意记录x和参照点rL的距离满足如下关系:其中,d(x,rL)表示x和rL的距离,是相似度阈值;构建距离树需要设置三个参数:第一个是参照点的队列,记为,距离树从根结点开始每增加一层高度,需要从R中取出一个点当作该层的中心点;第二个是叶结点能容纳的记录条数的最大数据量,记为Ψ;第三个是用户指定的相似度阈值;距离树的构建分为两个阶段:初始化阶段,数据插入阶段:(一)初始化阶段:选取一组合适的参考点,把给定的数据集划分成几个交互尽可能少的分区;参照点的选取使用主成分分析(PCA)算法,通过主成分分析算法对于原先提出的所有变量,将重复的变量删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映的信息方面尽可能保持原有的信息;参照点选取好之后,开始初始化距离树,即只构建树的根节点,记新建树的根结点NR,并设置层次L=0,位置pos=‑1,记录个数C=0;(二)数据插入阶段:通过逐条插入方式构建距离树,插入数据的过程就是把每条数据分发到某个叶结点的过程;插入记录x时,从根结点NR 开始访问直到某个叶结点结束,假设当前访问结点为N, N所在的层次为L,按如下步骤插入数据x:(1)如果N是一个叶结点,把x加到N中,N的C值加1,如果此时C=Ψ,按照结点分裂策略将N分裂;(2)如果N是一个内部结点,计算的值pos’,查找N是否存在pos取值为pos’的子结点,如果存在,则把当成当前结点,对其执行插入步骤;如果不存在,则创建一个N的子结点,设置其pos=pos’,L的值为其父结点层次值加1,把x分配到该结点并设置C=1;所述按照结点分裂策略将N分裂,即把变为内部节点,并增加若干个子节点,分裂具体算法如下,对于第i层需要分裂的结点N,按如下策略进行分裂:对于N中的每条数据x:(1)计算x和ri的距离d(x,ri);(2)计算满足的值j,如果不存在的子结点,就创建一个位置信息pos=j的子结点,并把x分配到这个结点,数据个数;如果存在的子结点,则直接把x分发到这个结点,C增加1;检查获得x的结点中数据个数C,如果,则从步骤1开始对这个结点继续进行分裂;当N中的所有记录添加到其子节点中以后,N节点则变为一个内部节点,其pos值、C值和L值表示不变。...

【技术特征摘要】
1.一种索引结构-距离树的构建方法,其特征在于,所述距离树是一种分层次的树形结构,它包含两种结点:内部结点和叶结点;叶结点用于存储数据,内部结点用于存储指向其子结点的指针;距离树每个结点包含如下信息:(1)结点在树中的层次L,根结点的层次是0,根节点的子节点的层次是1,依此类推;(2)以当前结点为根结点的记录个数C;(3)位置信息pos,节点N的pos取值表示结点N中的记录和N的层次所对应的参照点的距离与的倍数关系;pos的计算方法如下,对于第i层的节点N,其包含的任意记录x和参照点rL的距离满足如下关系:其中,d(x,rL)表示x和rL的距离,是相似度阈值;构建距离树需要设置三个参数:第一个是参照点的队列,记为,距离树从根结点开始每增加一层高度,需要从R中取出一个点当作该层的中心点;第二个是叶结点能容纳的记录条数的最大数据量,记为Ψ;第三个是用户指定的相似度阈值;距离树的构建分为两个阶段:初始化阶段,数据插入阶段:(一)初始化阶段:选取一组合适的参考点,把给定的数据集划分成几个交互尽可能少的分区;参照点的选取使用主成分分析(PCA)算法,通过主成分分析算法对于原先提出的所有变量,将重复的变量删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映的信息方面尽可能保持原有的信息;参照点选取好之后,开始初始化距离树,即只构建树的根节点,记新建树的根结点NR,并设置层次L=0,位置pos=-1,记录个数C=0;(二)数据插入阶段:通过逐条插入方式构建距离树,插入数据的过程就是...

【专利技术属性】
技术研发人员:王鹏汪洋汪卫董明秀
申请(专利权)人:复旦大学
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1