一种基于局部敏感哈希的聚类索引方法及系统的制作方法

文档序号:6522483阅读:285来源:国知局
一种基于局部敏感哈希的聚类索引方法及系统的制作方法
【专利摘要】本发明涉及一种基于局部敏感哈希的聚类索引方法及系统,所述方法包括:步骤1,对数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心;步骤2,在每个类中采用局部敏感哈希方法建立哈希表;步骤3,计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类;步骤4,计算查询点在每个候选类中的哈希值,根据步骤2建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点;步骤5,计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。本发明可以在牺牲较小准确率的情况下换取查询效率的较大提高和查询性能的相对稳定。
【专利说明】—种基于局部敏感哈希的聚类索引方法及系统
【技术领域】
[0001]本发明涉及信息过滤【技术领域】,特别是涉及一种基于局部敏感哈希(LocalitySensitive Hashing,简称为LSH)的聚类索引方法及系统。
【背景技术】
[0002]以下是本领域中的一些名词解释,其使用范围仅限于本发明:
[0003]哈希桶(HashBucket):哈希表中同一个位置可能存有多个元素,以应对哈希冲突问题,这样,哈希表中的每个位置表示一个哈希桶。
[0004]最近邻点:最近邻搜索是一个在尺度空间中寻找最近邻点的优化问题,即在尺度空间M中给定一个点集S和一个目标点q e M,在S中找到距离q最近的点,该点即为最近邻点。
[0005]随着互联网的飞速发展,互联网上的图像数量呈现几何级数增长,比如Facebook当前的图像数量就已经达到150亿张,而且还以每天I亿张的数量在增加。伴随着网上图像信息的快速增长,随之而来的问题是图像内容良莠不齐,所以需要进行管理。通过基于内容的图像过滤可以实现对图像的管理。图像过滤需要对图像进行描述,生成的特征描述符一般都是高维向量,如果不使用索引直接进行蛮力匹配,结果将是无法想像的,无法实现实时性。所以索引对于图像过滤是不可或缺的,而且过滤的效率直接由索引所决定。近些年来,为了提高匹配速度提出了近似最近邻索引方法。就是牺牲部分精度以换取速度的大幅提高,而局部敏感哈希索引方法(LSH)是当前最成功的近似最近邻方法。但由于数据集分布的不规则性,导致了数据点在局部敏感哈希表中分布不均匀,同时原始的局部敏感哈希方法是对全部数据集总体进行哈希映射,从而导致匹配的速度受到限制和匹配性能对数据集分布的不均勻性比较敏感。已经有一些论文从优化局部敏感哈希参数的角度来提高哈希函数对数据集的适应性,但由于需要哈希函数适应数据集致使哈希函数的选取的随机性受到限制,同时由于还是对整个数据集进行哈希映射和查询,所以查询匹配速度并未较原始的LSH有所提高。
[0006]因此,本发明提出了一种基于LSH的聚类索引方法。

【发明内容】

[0007]本发明所要解决的技术问题是提供一种基于LSH的聚类索引方法及系统,用于实现数据集经哈希映射后,在哈希表中分布相对均匀,并且提高查询匹配的速度。
[0008]本发明解决上述技术问题的技术方案如下:一种基于局部敏感哈希的聚类索引方法,包括:
[0009]步骤1,对数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心;
[0010]步骤2,在每个类中采用局部敏感哈希方法建立哈希表;
[0011]步骤3,计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类;
[0012]步骤4,计算查询点在每个候选类中的哈希值,根据步骤2建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点;
[0013]步骤5,计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。
[0014]在上述技术方案的基础上,本发明还可以做如下改进。
[0015]进一步,所述对数据集进行聚类分析具体包括:
[0016]步骤11,预先确定进行聚类的类别数K,在数据集中随机选取K个数据点,作为聚类中心μ」,其中j=i,2,…,K;
[0017]步骤12,对数据集中聚类中心以外的数据点,分别计算其与各聚类中心的欧式距离,并将各数据点归入与其欧氏距离最近的类中,并重新计算各类的聚类中心Uj;
[0018]步骤13,重复步骤12,直到数据集中所有数据点均归入相应的类,且直到聚类中心稳定,并保存每一个类的聚类中心。
[0019]进一步,所述步骤12中重新计算各类的聚类中心μ j具体包括:重新取各类的几何中心作为其聚类中心。
[0020]进一步,所述步骤2具体包括:
[0021]步骤21,生成各维服从高斯分布的一个向量r,r的维数与数据点维数相同;
[0022]步骤22,计算各数据·点的哈希值;
[0023]步骤23,将计算所得哈希值,以链表形式存放;
[0024]步骤24,将上部分的链表形式转换成混合类型结构存储在连续的存储表里,完成各类对应的哈希表的构建。
[0025]进一步,所述步骤2还包括将所有数据点映射到相应哈希表的哈希桶中。
[0026]对应地,本发明的技术方案还包括一种基于局部敏感哈希的聚类索引系统,其结构包括聚类分析模块、哈希表构建模块、候选类确定模块、候选点确定模块和最近邻点输出模块:
[0027]所述聚类分析模块,其用于数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心。
[0028]所述哈希表构建模块,其连接所述聚类分析模块,用于在所述聚类分析模块分成的每个类中采用局部敏感哈希方法建立哈希表。
[0029]所述候选类确定模块,其连接所述聚类分析模块,用于计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类。
[0030]所述候选点确定模块,其连接所述候选类确定模块和所述哈希表构建模块,用于计算查询点在每个候选类中的哈希值,并根据哈希表构建模块建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点。
[0031]所述最近邻点输出模块,其连接所述候选点确定模块,用于计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。
[0032]进一步,所述聚类分析模块具体包括:
[0033]预处理模块,其用于预先确定进行聚类的类别数K,并在数据集中随机选取K个数据点,作为聚类中心μ」,其中」=ι,2,...,κ。[0034]数据点归类模块,其用于对预处理模块中确定的聚类中心以外的数据点,分别计算其与各聚类中心的欧式距离,并将各数据点归入与其欧氏距离最近的类中,并重新计算各类的聚类中心μ」。
[0035]聚类中心保存模块,其在数据集中所有数据点均归入相应的类后,保存每一个类的聚类中心。
[0036]进一步,所述数据点归类模块重新计算各类的聚类中心μ ^具体包括:重新取各类的几何中心作为其聚类中心。
[0037]进一步,所述哈希表构建模块还包括将所有数据点映射到相应哈希表的哈希桶中。
[0038]本发明的有益效果是:
[0039]一、先将数据集先进行聚类,以使相似的数据点先聚合在一起,聚类后类内部的数据分布相对均匀,这样就大大减少了由于数据分布不均匀造成的匹配性能不稳定。
[0040]二、针对每类的内部使用局部敏感哈希方法建立哈希表,数据点在所建哈希表内分布与传统LSH相比要更均匀,在匹配时性能比较稳定。
[0041]三、针对聚类导致的边缘点与聚类中心的差异导致的匹配精度下降,查询运用多探测方法,即确定多个候选类,在每个候选类中选出候选点,最后再确定最近邻点,提高了查询的精度。
[0042]综上,本发明的 聚类索引方法与系统适用于大规模数据集,可以在牺牲较小准确率的情况下换取查询效率的较大提高和查询性能的相对稳定。
【专利附图】

【附图说明】
[0043]图1为本发明所述基于LSH的聚类索引方法的流程示意图;
[0044]图2为传统LSH对整个数据集进行哈希映射的示意图;
[0045]图3为本发明对聚类后的数据集进行哈希映射的示意图;
[0046]图4为本发明进行查询匹配过程的示意图;
[0047]图5为本发明所述基于LSH的聚类索引系统的结构示意图;
[0048]图6为本发明所述聚类分析模块的结构示意图。
[0049]附图中,各标号所代表的部件列表如下:
[0050]1、查询点,2、聚类中心,3、哈希表,4、候选集,5、最近邻点,6、聚类分析模块,7、哈希表构建模块,8、候选类确定模块,9、候选点确定模块,10、最近邻点输出模块,51、预处理模块,52、数据点归类模块,53、聚类中心保存模块。
【具体实施方式】
[0051]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0052]传统的搜索匹配策略采用树形索引结构,当数据维数较低时搜索速度较快,但当维数大于十时甚至搜索速度还不如线性查找。LSH方法利用将相似的数据点映射到相同的哈希桶中,匹配时计算查询点的哈希值,将与其哈希值相同的哈希桶中的点作为候选点,计算候选点与查询点间欧氏距离,返回计算所得最近邻点。LSH方法通过哈希函数映射的方法以一定的概率保证返回真正的最近邻点,从而很大程度上提高了匹配的速度。但是由于LSH是对全部数据集进行哈希映射的,所以其在查询时速度还是受到限制,同时由于数据集分布的不均匀性,导致数据点在哈希表中分布不均匀。
[0053]因此,本实施例提出了一种基于局部敏感哈希的聚类索引方法,如图1所示,其具体包括以下步骤:
[0054]步骤1,对数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心; [0055]步骤2,在每个类中采用局部敏感哈希方法建立哈希表;
[0056]步骤3,计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类;
[0057]步骤4,计算查询点在每个候选类中的哈希值,根据步骤2建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点;
[0058]步骤5,计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。
[0059]上述步骤的具体实施过程如下所述。
[0060]一、对数据集进行聚类分析
[0061](I)预先选取K值(聚类的类别数,本实施例中先选定K=60),即有K个聚类中心,在数据集中随机选取K个数据点,作为聚类中心μ j (j = l, 2...,k)。
[0062](2)继续上一步,选取数据集中剩余的点,分别计算选取点与聚类中心的欧氏距离,将选取点归入与其欧氏距离最近的类Ci中,SP:
[0063]C1: =argmin I I χ(1)-μ」I 12
[0064]式中,X表示选取点,i表示类的数目,且i=l, 2,---,m, m表示类个数的最大值。
[0065]以Ci的几何中心作为调整后的聚类中心,采用公式如下:
【权利要求】
1.一种基于局部敏感哈希的聚类索引方法,其特征在于,包括: 步骤1,对数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心; 步骤2,在每个类中采用局部敏感哈希方法建立哈希表; 步骤3,计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类; 步骤4,计算查询点在每个候选类中的哈希值,根据步骤2建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点; 步骤5,计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。
2.根据权利要求1所述的聚类索引方法,其特征在于,所述对数据集进行聚类分析具体包括: 步骤11,预先确定进行聚类的类别数K,在数据集中随机选取K个数据点,作为聚类中心 μ j,其中 j=i,2,-,κ; 步骤12,对数据集中聚类中心以外的数据点,分别计算其与各聚类中心的欧式距离,并将各数据点归入与其欧氏距离最近的类中,并重新计算各类的聚类中心Uj ; 步骤13,重复步骤12,直到数据集中所有数据点均归入相应的类,并保存每一个类的聚类中心。
3.根据权利要求2所述的聚类索引方法,其特征在于,所述步骤12中重新计算各类的聚类中心具体包括:重新取各类的几何中心作为其聚类中心。
4.根据权利要求1所述的聚类索引方法,其特征在于,所述步骤2具体包括: 步骤21,生成各维服从高斯分布的一个向量r,r的维数与数据点维数相同; 步骤22,计算各数据点的哈希值; 步骤23,将计算所得哈希值,以链表形式存放; 步骤24,将上部分的链表形式转换成混合类型结构存储在连续的存储表里,完成各类对应的哈希表的构建。
5.根据权利要求1或4所述的聚类索引方法,其特征在于,所述步骤2还包括将所有数据点映射到相应哈希表的哈希桶中。
6.一种基于局部敏感哈希的聚类索引系统,其特征在于,包括聚类分析模块、哈希表构建模块、候选类确定模块、候选点确定模块和最近邻点输出模块: 所述聚类分析模块,其用于数据集进行聚类分析,将数据集分成若干个类,并确定和保存每个类的聚类中心; 所述哈希表构建模块,其连接所述聚类分析模块,用于在所述聚类分析模块分成的每个类中采用局部敏感哈希方法建立哈希表; 所述候选类确定模块,其连接所述聚类分析模块,用于计算各聚类中心与查询点之间的欧式距离,选择距离最小的多个类作为候选类; 所述候选点确定模块,其连接所述候选类确定模块和所述哈希表构建模块,用于计算查询点在每个候选类中的哈希值,并根据哈希表构建模块建立的哈希表,选出候选类中与查询点哈希值相同的数据点作为候选点;所述最近邻点输出模块,其连接所述候选点确定模块,用于计算候选点与查询点之间的欧式距离,将欧式距离最小的候选点作为查询点的最近邻点。
7.根据权利要求6所述的聚类索引系统,其特征在于,所述聚类分析模块具体包括: 预处理模块,其用于预先确定进行聚类的类别数K,并在数据集中随机选取K个数据点,作为聚类中心μ」,其中j=i,2,-,κ; 数据点归类模块,其用于对预处理模块中确定的聚类中心以外的数据点,分别计算其与各聚类中心的欧式距离,并将各数据点归入与其欧氏距离最近的类中,并重新计算各类的聚类中心Uj ; 聚类中心保存模块,其在数据集中所有数据点均归入相应的类后,保存每一个类的聚类中心。
8.根据权利要求7所述的聚类索引系统,其特征在于,所述数据点归类模块重新计算各类的聚类中心μ J具体包括:重新取各类的几何中心作为其聚类中心。
9.根据权利要求6所述的聚类索引系统,其特征在于,所述哈希表构建模块还包括将所有数据点映射到相应哈希表的哈希桶中`。
【文档编号】G06F17/30GK103631928SQ201310652980
【公开日】2014年3月12日 申请日期:2013年12月5日 优先权日:2013年12月5日
【发明者】谢洪涛, 王鹏, 徐克付, 谭建龙 申请人:中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1