Inverted Multi-Index

倒排多索引(Inverted Multi-Index)是一种改进的索引结构,源于Artem Babenko和Victor Lempitsky的论文。它通过在不同维度上进行K-means聚类,提高检索召回率,解决了传统倒排索引在数据稀疏时的局限。该方法将数据分为两部分,分别进行聚类,然后使用多序列算法进行查询,以找到最接近的邻居。实验表明,Inverted Multi-Index在召回率上优于传统方法,但计算速度稍慢。

Inverted Multi-Index

简介

Inverted Multi-index是Artem Babenko 和 Victor Lempitsky发表的一篇论文,论文起初发表在CVPR2012上,后来又增加了内容,又发表在2014的PAMI上,被引用的次数很高。
论文地址如下所示:
CVPR2012
PAMI 2014

引言

分析整篇文章,总结下来想法还是很直观。首先分析传统的倒排索引,在传统的倒排索引中,我们这样做:

  1. 首先N个M维的数据,首先进行K-means聚类,会生成K个聚类
  2. 将原始的每个M维的数据分别和K个聚类中心进行比较,然后找出距离最小的聚类。
  3. 会生成如下所示的索引结构,方框代表聚类中心,圆代表聚类中同一类的数据。
    索引结构
    但是原始的倒排索引是在全维度上进行聚类,qurey时候先计算与聚类中心centroids的距离,然后计算centroids内的database与query的距离,避免了O(n)的搜索规模。然而,如果数据比较分散,没有出现明显的数据簇,直接进行聚类,数据将会非常稀疏。导致在查询的过程中,会只关注centroids内的点,然而忽视了实际很近的数据点。如下图所示:
    这里写图片描述
    所以,在论文中作者提出了一种新型的索引结构,将原始的数据进行维度划分,然后在各个维度中进行K-means聚类,将database中的数据映射到各个空间的centroids上,query时通过计算数据与database的centroids距离进行排序,返回K个紧邻。进行这种划分,一个最大的优势就是,采用了更精细的子空间划分,提高了检索的召回率。

Iverted Multi-Index

受到product quantization的思想启发,作者将原始的数据N×M维数据 D={p1,p2,p3,.......pn} ,分别划分为两个N×M/2维的数据。假设 pi=[p1i,p1j] ,其中 piRM 。我们现在讲数据集进行划分为两部分, p1iRM2 p1jRM2 。所有的数据进行划分以后,原始的N M维的数据集 变为 D1={p11,p12,p13,.......p1n} D2={p21,p22,p23,.......p2n} 。分别对 D1 D2 进行K-means生成k个centroids的聚类,分别记为 U={u1,u2,u3,.....uk} V={v1,v2,v3,.....vk} 。聚类中心形成以后,我们将前半部分和后半部分的聚类中心进行拼接以后才能完全代表database中的数据,所以总共存在 k2 个列表。将原始的数据集 pi 的前半部分 p1i D1 的聚类中心进行比较,得到距离最近的聚类,后半部分同理。把 K2 的每一个(如图1的方框)lists写成 Wij 。所以每一个points [p1i,p2i] 会分到最近的点 [ui,vj]
距离
上述的 d(a,b)=d1(a1,b1)+d2(a2,b2) 距离采用欧式距离。
索引表建立以后,来了查询q以后,我们要得到距离q最近的k个邻居,由于 k2 个列表中有可能存在某个 Wij 后面没有数据,我们首先要找到 T(T>k) 个最近的聚类中心。我们首先分别从 U 中和V中找到T个最近的聚类中心,然后按照距离进行排序。然后,作者提出了multi-sequence 算法,具体步骤如下所示:
算法步骤
例子
加入误差
经过试验发现Multi-D-ADC比Multi-ADC有更高的召回率,Multi-ADC比Multi-D-ADC的计算速度更快。

总结

和Inverted index相比,由于 D 的数量不变,所有两者的索引结构所占用的内存相同,但是由于Inverted Multi-Index的列表长度为K2,而倒排索引为K。并且Inverted Multi-Index列表存在数据为空的情况,并且较长,限制了正交分割的数目,作者实验发现分为两部分正好。

参考文献

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值