一种阈值自适应的集合相似连接方法与流程

文档序号:15518143发布日期:2018-09-25 18:49阅读:311来源:国知局
本发明涉及数据库领域,尤其涉及一种阈值自适应的集合相似连接方法。
背景技术
:集合相似连接(setsimilarityjoin)是数据库领域的一个重要技术问题。给定一个有限元素集ε={e1,e2…,em},一条集合记录r定义为ε的子集,即集合相似连接问题具体是指:给定相似度阈值τ、相似度系数sim和两个由集合记录构成的数据集r、s作为输入,计算并输出其中所有相似度系数大于等于阈值τ的记录对,即求输出所有记录对r∈r,s∈s满足相似度系数sim(r,s)≥τ。常用的相似度系数包括共同元素数、jaccard、cosine和dice系数,其计算公式见表1。集合相似连接技术在很多领域有广泛应用,包括数据清洗、信息挖掘、数据整合、个性化推荐和社区发现等。目前已有的实现集合相似连接的方法可以分为两类:一类是全量计算的方法,另一类是基于过滤的方法。全量计算的方法会先从数据库中查找出所有相似度系数大于0的记录对,再根据阈值过滤结果。而基于过滤的方法,则遵循“过滤-验证”框架,会先使用各种过滤器(filter)技术过滤掉相似度系数一定小于阈值的记录对,从而得到候选记录对,然后再逐一计算候选记录对的相似度系数,找出相似度系数大于等于阈值的记录对。表1基于邻点的相似度系数对于第一类全量计算的方法,一种直观的做法是枚举数据库中r和s的所有可能记录对(r,s),再计算相似度系数。这一方法的时间复杂度是o(|r||s|),在大规模数据集上无法有效实现。根据表1中的相似度系数计算公式,相似度系数大于0的两个集合记录r和s之间至少有一个共同元素(即|r∩s|>0),因此只需要对有相同元素的记录对计算相似度系数即可。目前的较高效的全量计算类的集合相似连接方法(如sbm和v-smart-join)都利用了此原理。如果记录r和s至少有一个共同元素e,那么r和s一定同时出现在e的倒排索引表中。sbm技术通过计算r和s同时出现在元素的倒排索引表中的次数得到这两条记录的相同元素数(即|r∩s|),再结合r和s的记录长度计算出相似度系数。全量计算类方法计算效率(计算复杂度)对阈值不敏感,其在低阈值和高阈值情况下的计算开销相同。第二类基于过滤的方法则会通过各种过滤器(filter)技术先过滤掉相似度系数一定小于阈值的记录对,再对剩余的候选记录对计算相似度系数。常见的过滤器包括前缀过滤器(prefixfilter)、长度过滤器(lengthfilter)和位置过滤器(positionalfilter)等。其中前缀过滤器是一种被广泛应用的过滤器,它是很多集合相似连接方法所采用的基础过滤器。在前缀过滤器中,一个集合记录的π-前缀由该集合中根据给定全局序排列的前π个元素构成。在特定的前缀长度下,如果两条记录的前缀集中没有共同元素,那么这两条记录的相似度系数一定小于阈值。这些过滤器的性能对阈值敏感,阈值越高,过滤效果越好。目前的集合相似连接方法的适用阈值范围均较窄。全量计算方法仅在低阈值情况下计算效率高,其在高阈值范围内无效计算较多,计算效率低于基于过滤的方法。而基于过滤的方法则仅在高阈值范围内过滤器效果显著、计算效率高,而在低阈值范围内,过滤器过滤效果不明显,过滤器引入的额外计算多,计算效率低于全量计算类方法。综上所述,目前缺乏一个能在广阈值范围内均具有较高计算效率的集合相似连接方法。技术实现要素:发明目的:针对上述现有技术存在的问题和不足,本发明的目的是提供一种阈值自适应的集合相似连接方法,能在广阈值范围内均具有较高的计算效率。技术方案:为实现上述发明目的,本发明提出了一种阈值自适应的集合相似连接方法。本发明提出的方法以保存在数据库中的两个集合记录构成的数据集r和s作为输入,以相似度阈值(简称阈值)τ和相似度系数sim作为方法参数。本发明提出的方法会查找出相似度值大于等于阈值的所有来自r和s的记录对,并输出这些记录对。本发明提出的方法包括数据预处理和相似连接两个阶段,一共六个步骤。其中数据预处理阶段包含以下的第(1)至第(2)步;相似连接阶段对数据集r中的每条记录r都执行以下的第(3)至第(6)步:(1)对有限元素集ε={e1,e2…,em}中的元素,统计每个元素在数据集r和s中出现的频率,然后对元素按照其在数据集r和s中出现总频率的大小进行全局递增编号,出现频率低的元素编号较小;(2)为数据集s构建倒排索引i,对于一个元素e∈ε,从数据集s中查找所有包含该元素e的记录x,构成元素e的倒排索引项i(e),即i(e)={x|e∈x,x∈s},保存构建的倒排索引i到数据库中。(3)对于数据集r中的每条记录r,根据阈值τ和r的前缀集prefix(r),利用过滤器过滤出相似度系数不小于阈值的候选记录集c(r);(4)计算全量计算模式的数据库访问开销,全量计算模式的数据库访问开销costallpair定义为r的后缀集suffix(r)中的所有元素的倒排索引列表的长度之和:costallpair=∑e∈suffix(r)|i(e)|,其中suffix(r)表示记录r的后缀集,|i(e)|表示倒排索引i(e)的长度。(5)计算直接验证模式的数据库访问开销,直接验证模式的数据库访问开销costverify定义为costverify=∑x∈c(r)|s.x|,其中|s.x|表示数据集s中的集合记录x的集合长度(即集合元素个数),直接验证模式的数据库访问开销等于候选记录集c(r)中的所有记录的集合元素数之和;(6)比较两种模式的数据库访问开销大小,选择开销较小的模式,如果直接验证模式的开销costverify较小,则采用直接验证模式计算与r相似度系数超过阈值的记录对;否则采用全量计算模式计算与r相似的记录对。进一步地,所述步骤(1)中,数据集r和s中的集合记录中所出现的集合元素,均来自有限元素集ε。有限元素集中的每个元素ei均会被赋予一个全局唯一的编号,该编号按元素在数据集r和s中的出现总频率排序。如果元素ei的出现频率比元素ej少,则ei的编号值也比ej小。进一步地,所述步骤(3)中,一个集合记录r的前缀集prefix(r)是由该记录中全局编号前π小的元素所构成的集合。其中π的计算方法采用前缀过滤器技术中的计算方法。从数据库中取出前缀集prefix(r)中的元素对应的倒排索引列表,合并这些列表得到候选记录集c(r),以∪e∈prefix(r)i(e)表示将这些倒排索引列表合并,则得到c(r)=∪e∈prefix(r)i(e)。本发明所公开的方法也支持使用其它过滤器技术(如长度过滤器等)对c(r)中的记录进行进一步过滤,使用这些技术不影响本发明的有益效果。进一步地,所述步骤(4)中,记录r的后缀集suffix(r)是由r中所有非前缀元素构成,即其中用符号∧表示并且关系。进一步地,所述步骤(6)中,如果costallpair≤costverify则采用全量计算模式否则采用直接验证模式。其中,全量计算模式的步骤如下:将记录r的后缀集suffix(r)中的元素对应的倒排索引列表从数据库中取出,并与r的前缀集prefix(r)中的元素对应的倒排索引列表在内存中进行合并,得到与r有共同元素的来自数据集s的记录的集合,在合并的过程中统计记录s在这些倒排索引列表中出现的次数,即可得到r与s的共同元素数|r∩s|。根据|r∩s|和记录的长度信息,利用表1中公式计算出r与s的相似度系数,输出相似度系数大于或等于阈值的记录对(r,s)。直接验证模式的步骤:对于候选记录集c(r)中的每条记录s,从数据库中取出记录s的内容,计算记录r与s的相似度系数,输出相似度系数大于或等于阈值的记录对(r,s)。本发明的有益效果:本发明所述技术方法能够在相似连接阶段自动的从全量计算模式和直接验证模式中选择数据库访问开销较小的模式。在全阈值范围内,本发明的数据库访问开销总是小于或等于全量计算方法和基于过滤的方法的开销的较小者,因此本发明能够在广域值范围内均取得较高的计算效率。附图说明图1为本发明的总体流程示意图;图2(a)为本发明在uspatents数据集上与现有技术的实验对比图,图2(b)为本发明在livejournal数据集上与现有技术的实验对比图,图2(c)为本发明在orkut数据集上与现有技术的实验对比图。具体实施方式下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。本发明提出一种在广阈值范围内均可高效运行的集合相似连接方法,解决了现有方法不能同时兼顾低阈值和高阈值情况的问题。如图1所示,本发明的完整流程分为数据预处理阶段和相似连接阶段。下面以表2中所示的数据集作为一个具体的示例输入数据集,说明本发明的具体的实施方式。这些数据集预先保存在数据库中。在示例中采用jaccard相似度系数作为本发明的参数,相似度阈值(简称阈值)设置为0.5。结合本例,本发明的具体的实施方式为:表2实例记录集r和s
发明内容里的步骤(1)的具体实施方式为:数据集r和s中的集合记录中所出现的集合元素,均来自有限元素集。有限元素集中的每个元素ei均会被赋予一个全局唯一的编号,该编号按元素在数据集中的总出现频率进行排序。在本例中,图2例中的ε={e0,e1,e2,e3,e4,e5},元素已按照在r和s数据集中出现的频率大小进行了重新编号,比如e0在r和s数据集中出现的频率是5,而e5的出现频率是8次,因此e0下标编号小于e5。
发明内容里的技术方案步骤(2)的具体实施方式为:对数据集s,计算它的倒排索引i。对于一个元素e∈ε,倒排索引列表i(e)包含了数据集s中包括了元素e的记录的集合,即i(e)={x|e∈x,x∈s}。表3是为数据集s所建立的倒排索引,其中i(e1)={s.s1,s.s3},表示在数据集s中,记录s1,s3均包含了集合元素e1。保存构建的倒排索引到数据库中。表3记录集s的倒排索引列表元素e倒排索引i(e)e0{s.s1,s.s2}e1{s.s1,s.s3}e2{s.s0,s.s3}e3{s.s0,s.s2,s.s3}e4{s.s1,s.s2,s.s3}e5{s.s0,s.s1,s.s2,s.s3}相似连接是本发明所述的技术方案的第二阶段,对于记录集r中的每一条记录均需要进行
发明内容中所述的第(3)至第(6)步操作。下面以表2的示例数据集r的记录r.r0为例,进行阐述:
发明内容中所述的步骤(3)的具体实施方式为:对于记录r,首先计算其前缀长度πr。πr的计算方式采用前缀过滤器技术中使用的计算方法,其公式由特定的相似度函数决定。记录r中全局编号前πr小的元素所构成的集合成为记录r的前缀集prefix(r)。然后需从数据库中取出prefix(r)中的元素对应的倒排索引列表到内存中进行合并,合并后得到候选记录集c(r)。在本例中,对应jaccard系数的计算公式为式中,τ为阈值,因此在r.r0记录上πr的取值为2,记录r.r0中编号前πr小的元素构成了前缀集prefix(r.r0)={e0,e3}。从表3所示的数据库中取出prefix(r.r0)中的元素所对应的倒排索引列表i(e0)和i(e3),在内存中进行合并,得到候选记录集c(r.r0),c(r.r0)的内容为{s.s0,s.s1,s.s2,s.s3}。
发明内容中所述的技术方案的步骤(4)的具体实施方式为:全量计算模式的数据库访问开销是后缀集suffix(r)中所有元素的倒排索引列表长度之和。在本例中,记录r.r0的后缀集的内容为suffix(r.r0)={e4,e5}。根据全量计算模式的数据库访问开销的定义costallpair=∑e∈suffix(r)|i(e)|,结合表3所示的倒排索引,在本例中r.r0的开销为costallpair=|i(e4)|+|i(e5)|=7。
发明内容中所述步骤(5)的具体实施方式为:直接验证模式的数据库访问开销是候选记录集c(r)中的记录的长度之和,即costverify=∑x∈c(r)|s.x|,其中|s.x|表示数据集s中的集合记录x的集合长度。在本例中,根据步骤(3)中计算出的r0的候选记录集c(r.r0),可得costverify=|s.s0|+|s.s1|+|s.s2|+|s.s3|=16。
发明内容中所述技术方案的步骤(6)的具体实施方式为:如果costallpair≤costverify则采用全量计算模式,否则采用直接验证模式。在本例中,因为对于记录r.r0,costallpair≤costverify,因此记录r.r0采用全量计算模式。
发明内容中所述技术方案的步骤(6)中的全量计算模式的具体实施方法为:将记录r的后缀集suffix(r)中的元素对应的倒排索引列表从数据库中取出,与r的前缀集prefix(r)中的元素对应的倒排索引列表在内存中进行合并,得到与r有共同元素的来自数据集s的记录的集合,在合并的过程中统计记录s在这些倒排索引列表中出现的次数,即可得到r与s的共同元素数|r∩s|。在本例中,记录r.r0的前缀集中的元素对应的倒排索引列表有i(e0)={s.s1,s.s2}i(e3)={s.s0,s.s2,s.s3},后缀集中的元素对应的倒排索引列表有i(e4)={s.s1,s.s2,s.s3},i(e5)={s.s0,s.s1,s.s2,s.s3}。对这些列表进行合并,可以得到集合{s.s0,s.s1,s.s2,s.s3},即s中与r有至少一个共同元素的记录的集合。合并过程中,可以统计到记录s.s0,s.s1,s.s2,s.s3分别出现在了2、3、4、4个倒排索引中。根据相似度系数的计算公式,计算出r.r0与s.s0,s.s1,s.s2,s.s3记录的相似度系数为0.4、0.6、1.0、0.8。输出相似度系数大于或等于阈值0.5的记录对,即(r.r0,s.s1),(r.r0,s.s2)和(r.r0,s.s3)。
发明内容中所述技术方案的步骤(6)中的直接验证模式的具体实施方法为:从数据库中依次取出候选记录集c(r)中的每条记录s的内容,计算记录r与s的相似度系数,输出相似度系数大于或等于阈值的记录对(r,s)。假设在本例中记录r.r0采用直接验证模式进行计算,则从数据库中依次取出候选记录集c(r.r0)中的每条记录的内容s.s0,s.s1,s.s2,s.s3的内容,然后按相似度系数计算公式计算出r.r0与这些记录的相似度系数分别为0.4、0.6、1.0、0.8。输出相似度系数大于或等于阈值0.5的记录对,即(r.r0,s.s1),(r.r0,s.s2)和(r.r0,s.s3)。本发明提出了一种广阈值范围内高效运行的集合相似连接的方法。为测试该方法的实际性能,在相同的软件、硬件平台上,采用redis作为数据库,图数据集uspatents、livejournal、orkut作为测试数据集,jaccard作为相似度系数,测量了本发明提出的技术方法对数据集进行集合相似自连接操作的执行时间。作为比较,同时测量了全量计算类方法sbm和基于过滤的技术方法ppj的执行时间。图2展示了实际测量的结果,其中图2(a)、(b)、(c)分别对应uspatents、livejournal、orkut数据集上的运行时间。在同样的软件、硬件平台上,本发明所述的技术方案在步骤(6)中采用了基于开销的计算模式自动选择,本发明所述的技术方案比单纯的全量计算或基于过滤的技术方法的执行时间短。从图2中可以看出,全量计算类方法sbm在低阈值范围内表现较好,而在高阈值范围内表现较差;基于过滤的方法ppj则在低阈值范围内表现较差,在高阈值范围内表现较好。本发明提出的方法则在0-1的全阈值范围内均表现良好。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1