CN105843907A - 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 - Google Patents
一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 Download PDFInfo
- Publication number
- CN105843907A CN105843907A CN201610170691.9A CN201610170691A CN105843907A CN 105843907 A CN105843907 A CN 105843907A CN 201610170691 A CN201610170691 A CN 201610170691A CN 105843907 A CN105843907 A CN 105843907A
- Authority
- CN
- China
- Prior art keywords
- node
- distance
- data
- tree
- pos
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于数据挖掘技术领域,具体为一种内存索引结构‑距离树构建及基于距离树的相似性连接算法。本发明针对海量高维数据的相似性连接问题,提出了一种新型内存索引结构‑距离树。基于距离树的相似性连接算法是一种高效的分区‑过滤两阶段算法:第一阶段,距离树可以根据数据的潜在分布对数据进行有效的分区,同时在每个分区内部保存分区过程中产生的计算;第二阶段,在每个分区内部,距离树可以利用保存的计算剪枝精算阶段大量不必要的计算。实验证明,距离树比已有的相似性连接算法具有更高的效率。
Description
技术领域
本发明属于数据挖掘技术领域,具体涉及海量高维数据相似性连接方法,此外,还涉及内存索引结构的设计。
背景技术
相似性连接就是在给定的数据集中,找到在相似性函数度量下,所有相似性值大于用户给定阈值的数据对。相似性连接问题在很多应用当中都是基本问题。随着物理硬件性能的不断提高,人们能获取的数据量越来越大,数据复杂性也越来越高。然而,在无序的并且没有索引的数据集上进行相似性连接的计算成本非常大。现在数据规模增长的非常快,因此在很多科学应用中,相似性连接是一个瓶颈,这将阻止它们发展到更大的规模。除了数据量的快速增长,现实世界的应用中的数据模型变得越来越复杂和密集,数据维度越来越高,也因此增大了计算的复杂性。
目前的研究主要关注的是基于磁盘的相似性连接算法,因此在内存连接计算方面缺乏有效性和可扩展性。暴力算法,也就是对数据集中任意两条数据记录进行比较,计算成本会随着数据个数指数性增长,问题的关键是暴力算法对于现实数据是不可行的。例如,使用皮尔森相关系数作为度量函数,对长为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} 和{q1,q2,...,qL2}。如果对于任意的i≤L2,都有pi+2<qi 或者 pi>qi+2,则N1中的任何数据和N2中的任何数据之间的距离大于ε。
证明。假设从根结点到L2层的参照点序列为{r1,r2,...,rL2},从NR到N1和N2经过的结点序列分别为{Np1,Np2,...,NpL1}和{Nq1,Nq2,...,NqL2}。根据距离树的性质,可以得出在第i层的任意结点Npi和Nqi有如下性质:
根据三角不等式,可以得出,如果pi+1<qi或者pi>qi+1,那么
具体进行相似性连接的方法如下:按照先序顺序依次访问所有的叶结点。对于访问到的每个叶结点Ni按下面的步骤进行计算:
(1)对Ni内部的所有记录两两计算其距离,如果满足阈值,则输出为结果;
(2)根据定理1,找到所有满足相似条件的Ni的临近叶结点。把Ni中的记录和临近结点中的记录进行两两比较。在查找Ni的临近结点的时候,为了不重复计算数据对,只需要查找先序顺序在Ni后面的叶结点。
算法特点分析
利用距离树进行相似性连接和之前算法最大的不同在于,之前的方法是数据分区和相似性计算两阶段分离。事实上,可以利用数据分区阶段的计算来剪掉精算阶段很多不必要的计算。本发明基于这一思想,提出了一种新型索引结构,名为距离树。基于距离树的相似性连接可以在相似性计算中有效利用分区过程产生的中间结果进行剪枝。距离树首先根据数据的潜在分布对数据进行分区,只有同一或相邻分区内的数据之间才有可能存在相似性。同时,在同一分区内部,距离树通过树结点之间的位置信息保存了分区阶段的计算。在精确计算阶段,距离树不需要对分区中所有的数据进行两两比较,利用分区内部的结点之间的位置关系,只有相邻的结点之间需要进行比较计算,可以剪掉大量不必要的计算。
实验证明,基于距离树的相似性连接效率明显优于已有算法TOUCH、PBSM等。
附图说明
图1是在某个数据集上构建的距离树。
图2是一个示例数据集:数据集(p1,p2,…,p7)和参照点r 。
图3是在图2示例数据集上构建的距离树。
图4是UCI数据集上的运行时间对比。
图5是wiki数据集上的运行时间对比。
图6是UCI数据集上的比较次数对比。
具体实施方式
下面通过一个例子进一步说明本发明。图2是一个示例数据集,包含7条记录(p1,p2,…,p7)。有一个参照点r,r和记录的距离如图2所示。相应的距离树如图3所示。每个叶节点最多放两条记录。
相似性连接的计算过程如下。首先处理N1。只需计算N1和N2包含的记录之间的距离,即d(p1,p3)和d(p1,p4)。然后处理N2。先计算内部记录之间的距离,即d(p3,p4),然后计算N2和N3包含的记录之间的距离,即d(p3,p6)、d(p3,p7)、d(p4,p6)和d(p4,p7)。然后处理N3,依次类推,知道所有的叶节点处理完毕。
性能比较
采用两个真实数据集来比较距离树和TOUCH、PBSM两种算法的性能。
UCI数据集。这个数据集来自机器学习仓库。UCI包含了采集于六个不同区域的个化学检测平台的18,000条时间序列数据。通过这些数据进行预处理,生成了5×105 条1000维的时间序列。
Wiki数据集。这个数据集是Wikimedia项目中的页面访问统计信息。它包含了从2007年到2014年大量维基百科页面的访问量。把某个页面在一个小时内的访问量当作一个点,选取5×105个页面1000个小时内的访问量。
运行时间比较显示在图4和图5中,可以看出,距离树方法明显效率优于TOUCH和PBSM。
第二个实验是比较具体的相似性计算次数,结果显示在图6中。可以看出,距离树需要的计算次数明显少于TOUCH和PBSM。
Claims (2)
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;
(二)数据插入阶段:
通过逐条插入方式构建距离树,插入数据的过程就是把每条数据分发到某个叶结点的过程;
插入记录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值表示不变。
2.一种基于权利要求1所构建的距离树索引结构的相似性连接算法,其特征在于:相似性连接中判断两个叶节点的记录是否需要计算相似性主要依赖于下述定理1:
给定在L1层和L2层的两个叶结点N1和N2,假设L1≥L2,从根结点NR到N1 和N2经过的结点的位置序列分别为{p1,p2,...,pL1} 和{q1,q2,...,qL2},如果对于任意的i≤L2,都有pi+2<qi或者 pi>qi+2,则N1中的任何数据和N2中的任何数据之间的距离大于ε;
具体进行相似性连接查询算法的步骤如下:按照先序顺序列依次访问所有的叶结点;对于访问到的每个叶结点Ni按下面的步骤进行计算:
(1)对Ni内部的所有记录两两计算其距离,如果满足阈值,则输出为结果;
(2)根据定理1,找到所有满足相似条件的Ni的临近叶结点;把Ni中的记录和临近结点中的记录进行两两比较;在查找Ni的临近结点的时候,为了不重复计算数据对,只需要查找先序顺序在Ni后面的叶结点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610170691.9A CN105843907A (zh) | 2016-03-24 | 2016-03-24 | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610170691.9A CN105843907A (zh) | 2016-03-24 | 2016-03-24 | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105843907A true CN105843907A (zh) | 2016-08-10 |
Family
ID=56583323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610170691.9A Pending CN105843907A (zh) | 2016-03-24 | 2016-03-24 | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843907A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108759902A (zh) * | 2018-03-30 | 2018-11-06 | 深圳大图科创技术开发有限公司 | 一种基于大数据的燃气管网智能监测系统 |
CN109492028A (zh) * | 2018-11-09 | 2019-03-19 | 新疆工程学院 | 一种海量时间序列数据相似性连接计算方法 |
CN109783547A (zh) * | 2019-02-21 | 2019-05-21 | 洛阳师范学院 | 一种相似性连接查询方法及装置 |
CN112069191A (zh) * | 2019-06-11 | 2020-12-11 | Sap欧洲公司 | 隐式划分 |
US20230394021A1 (en) * | 2022-06-07 | 2023-12-07 | Oracle International Corporation | Computing similarity of tree data structures using metric functions defined on sets |
-
2016
- 2016-03-24 CN CN201610170691.9A patent/CN105843907A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108759902A (zh) * | 2018-03-30 | 2018-11-06 | 深圳大图科创技术开发有限公司 | 一种基于大数据的燃气管网智能监测系统 |
CN109492028A (zh) * | 2018-11-09 | 2019-03-19 | 新疆工程学院 | 一种海量时间序列数据相似性连接计算方法 |
CN109783547A (zh) * | 2019-02-21 | 2019-05-21 | 洛阳师范学院 | 一种相似性连接查询方法及装置 |
CN109783547B (zh) * | 2019-02-21 | 2020-08-21 | 洛阳师范学院 | 一种相似性连接查询方法及装置 |
CN112069191A (zh) * | 2019-06-11 | 2020-12-11 | Sap欧洲公司 | 隐式划分 |
US20230394021A1 (en) * | 2022-06-07 | 2023-12-07 | Oracle International Corporation | Computing similarity of tree data structures using metric functions defined on sets |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103116639B (zh) | 基于用户-物品二分图模型的物品推荐方法及系统 | |
CN105843907A (zh) | 一种内存索引结构-距离树的构建及基于距离树的相似性连接算法 | |
Bogdanowicz et al. | On a matching distance between rooted phylogenetic trees | |
WO2014078424A1 (en) | Quantitative assessment of similarity of categorized data | |
CN105654187A (zh) | 控制系统中点定位方法之网格二叉树法 | |
CN104933143A (zh) | 获取推荐对象的方法及装置 | |
CN106599122B (zh) | 一种基于垂直分解的并行频繁闭序列挖掘方法 | |
Liu et al. | Efficient reinforced feature selection via early stopping traverse strategy | |
CN104156635A (zh) | 基于公共子序列的基因芯片表达数据的opsm挖掘方法 | |
Sagala et al. | Enhanced churn prediction model with boosted trees algorithms in the banking sector | |
Nasif et al. | Order Dependency in Sequential Correlation | |
Suh et al. | Metaheuristic-based time series clustering for anomaly detection in manufacturing industry | |
Schiffthaler et al. | Seidr: A toolkit for calculation of crowd networks | |
Balogun | A modified linear search algorithm | |
CN116662412A (zh) | 一种电网配用电大数据的数据挖掘方法 | |
CN106204293B (zh) | 一种基于Hadoop平台的社区发现算法 | |
CN114911826A (zh) | 一种关联数据检索方法和系统 | |
Qi et al. | Similarity search with graph index on directed social network embedding | |
Li et al. | Community detection in large social networks based on relationship density | |
Li et al. | A time-position join method for periodicity mining in time series databases | |
CN117035562B (zh) | 基于电力大数据的环保智慧监测方法及数据分析设备 | |
CN114580779B (zh) | 一种基于图特征提取的区块链交易行为预测方法 | |
KR20100072855A (ko) | 고차원 데이터의 색인/검색 시스템 및 그 방법 | |
CN107220483A (zh) | 一种多元时序数据的模式预测方法 | |
Yu et al. | Multiple pattern graph correlations for efficient graph pattern matching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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: 20160810 |