相似性搜索在很多方面有应用。给定许多集合的记录和一个查询,精确的集合相似性搜索的含义是从这些集合中找到一个集合和所要查询的最为相似。现存方法:filter-and-verify的框架,这种框架充分利用了invetted indexse。但是它有缺点:由于基于集合的相似性度量方法的验证复杂度较低,它们往往不能很好地权衡filter power和过滤filter cost.。
因此本文提出了了一种基于树的索引结构的相似度搜索算法。
具体细节如下:
filter cost:定义了基于哈希的排序( a hash-based ordering),将数据导入到索引结构,然后做好优化去减少filter cost。
filter power:,作者提出了一种动态算法去把数据集分成几个部分并且提出了一种多索引的框架。
实验:本文的实验在真实数据集上面的结果所表现的性能要比最新的方法好
- 介绍
给出了集合相似度查找的定义(给定集合中找到和所给的查询相似的集合),查询分为俩类:一种是范围一种是取前k个。所用的方法目前为止有OVERLAP、JACCARD、COSINE、DICE.文章主要是更具JACCARD这种方法展开讨论的。至于其他的基于集合的相似度搜索的方法在第8部分 讨论 中提到。
研究了很久的集合相似度查询,有比如filter and verify 的这种框架。框架实现的具体细节是这样的:在filter阶段,给每一个集合产生signatures,将signature组织到翻转的索引中。在verify阶段,verify候选集得到最终的结果。这种也方法应用在了具有编辑距离限制的字符串的相似度查询领域,但是也有缺点。比如计算俩个字符之间的编辑距离的复杂度是大O方。所以需要设计出复合型的filter去提高filter power。但是基于集合相似性的方法的复杂度是大O。所以所要在filter power和filter cost之间balance。同时filter and verfiy会导致内存过大。前人的Bed-tree [24] and PBI [11]是俩种B+树的方法去支持字符串相似度查询。但是这俩个方法仅仅支持编辑距离,不可以应用在集合相似度的查询问题。(真的吗?)
作者提出了了一种基于树的框架去解决精确的集合相似度搜索。提出这种框架的目的是为了减少开销过大的filter cost并且保持filter power。作者使用B+树状结构作为索引结构。作者为集合记录定义一个全局顺序,以便有效地将集合导入索引中。对于数据集中的每一个集合记录x,把x当做一种向量,并且把它映射到一个整数以此来表示在全局顺序中的相对位置。在索引上执行相似性搜索时,我们只需要根据给定的查询在全局顺序中定位下界和上界,并对树索引执行范围查询。那么只有树的高度会影响filter cost,同时filter cost是独立于数据集中的平均记录的长度的。由于具有代表性的向量有很高的维度,所以查询操作开销很大。因此作者设计出了一种bucket-based的方法去减少向量维度来改善查询的性能。由于记录通常不是均匀分布在空间中,我们还设计了一种动态算法,根据共享令牌(shared takens)的数量将数据收集划分为几个集群.这样就可以将“相似”记录分组在一起,提高剪枝能力.
文章贡献: - 设计了树结构应用于精准的集合相似度搜索
- 定义了bucket-based 顺序将集合记录放入到索引结构中。我们还设计了这种有效的表示,以提高整体性能
- 提出了动态算法去吧数据拆分成几个聚类,设计了多索引结构进一步提高了修剪的能力
- 对于真实数据集进行了宽泛的实验。实验结果表明作者所提出的方法比最新的top-k和range方法要好。
文章组织结构:
Section 2中给出了标准的文章定义,讨论了相关工作;
Section 3介绍了索引结构和构建索引的分批处理的算法;
Section 4提出了一种集合记录和降维技术的全局顺序,以降低filter cost。
Section 5设计了中将数据集合拆分的动态算法,并且在这些数据集合上面建立了多索引。
Section 6讨论了所做的工作
Section 7展现了实验的结果
Sectiion 8 总结
-
前言
A. -
基于树的索引结构
-
优化相对排序
-
多索引结构
-
讨论
-
评估
-
总结