基于敏感哈希的并行最邻近节点计算方法及分布式系统的制作方法

文档序号:8380961阅读:295来源:国知局
基于敏感哈希的并行最邻近节点计算方法及分布式系统的制作方法
【技术领域】
[0001] 本发明属于数据处理技术领域,尤其涉及一种基于敏感哈希的并行最邻近节点计 算方法及分布式系统。
【背景技术】
[0002] KNN (k-Nearest Neighbor algorithm,最邻近节点算法)也称为邻近算法,是电 子信息分类器算法的一种。KNN算法对包容型数据的特征变量筛选尤其有效。如图1所示 的KNN算法示意图,给定查询数据集R和被查询数据集S,图中实心点为集合R中的点,空心 点为集合S中的点,对于集合R中的任意一点q,经KNN算法处理后返回集合S中距离点q 的k个最近的点,比如根据图1所示,返回离点q最近的三个点:pl、p2、p3。
[0003] 局部敏感哈希LSH算法是一种用于高效求解最近邻搜索问题的Hash算法。LSH算 法的基本思想是利用一个hash函数把集合中的元素映射成hash值,使得相似度越高的元 素 hash值相等的概率也越高。
[0004] 基于敏感哈希的串行KNN计算方法步骤如下:
[0005] A.产生一组局部敏感的哈希函数簇,共L个哈希函数;
[0006] B.将被查询数据集S中的数据分别使用L个哈希函数分别哈希到L个不同的桶 Bl,B2, B3,…,BL中,即桶中的每个哈希值对应数据集S中的若干数据;
[0007] C.对于查询数据集R中的任一数据q,分别使用L个哈希函数计算出L个哈希值 hl,h2, h3,…,hL ;
[0008] D.对于查询数据集R中任意数据q,从每个桶Bj中找出和哈希值hj相等的数据 (l〈=j〈=L),加入到集合S(q)中;
[0009] E.对于查询数据集R中任意数据数据q,从集合S (q)中找出K个最近的邻居作为 q的K近邻居。
[0010] 现有局部敏感哈希的串行KNN算法无法处理海量数据,当被查询数据集S中数据 量很大时,无法一次将S中的所有数据在单个计算机节点载入内存,也就无法一次将全部 数据哈希到桶中。当数据量很大的时候,现有基于敏感哈希的串行KNN算法计算耗时长。

【发明内容】

[0011] 鉴于上述问题,本发明的目的在于提供一种基于敏感哈希的并行最邻近节点计算 方法及分布式系统,旨在解决现有基于敏感哈希的串行KNN算法处理海量数据耗时长的技 术问题。
[0012] 一方面,所述基于敏感哈希的并行最邻近节点计算方法包括下述步骤:
[0013] 将被查询数据集划分成若干数据子集;
[0014] 针对每一个数据子集,给定查询数据集中的任一数据q,使用基于敏感哈希的串行 最邻近节点计算方法,获取该数据子集上的K近邻居集合;
[0015] 将所有获取到的K近邻居集合组成近邻总集,从所述近邻总集中选取K个最近的 邻居作为数据q的K近邻居。
[0016] 另一方面,分布式系统一个主节点和与所述主节点连接的若干从节点,其中,所述 主节点包括:
[0017] 数据划分单元,用于将被查询数据集划分成若干数据子集;
[0018] 接收查找单元,用于接收各个从节点返回的K近邻居集合和数据q,并将所有接收 到的K近邻居集合组成近邻总集,从所述近邻总集中选取K个最近的邻居作为数据q的K 近邻居;
[0019] 所述从节点包括:
[0020] 近邻计算单元,用于针对每一个数据子集,给定查询数据集中的任一数据q,使用 基于敏感哈希的串行最邻近节点计算方法,获取该数据子集上的K近邻居集合,以及将所 述K近邻居集合和数据q发送给主节点。
[0021] 本发明的有益效果是:本发明将被查询数据集中的海量数据分组划分成多个数据 子集,然后针对每个数据子集,对于给定的查询数据集中的任一数据q,采用基于敏感哈希 的串行KNN算法计算出的K近邻居集合,最后将所有的K近邻居集合组成近邻总集,从所述 近邻总集中选取K个最近的邻居作为数据q的K近邻居,由于将海量数据划分为多个数据 子集,各个子节点进行并行KNN计算,提高了计算效率,大大缩短了查询搜索时间。
【附图说明】
[0022] 图1是本发明实施例提供的基于敏感哈希的并行最邻近节点计算方法的流程图;
[0023] 图2是图1中步骤S102的优选流程图;
[0024] 图3是本发明实施例提供分布式系统的结构图;
[0025] 图4是本发明实施例提供的近邻计算单元的优选结构图。
【具体实施方式】
[0026] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0027] 为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
[0028] 图1示出了本发明实施例提供的基于敏感哈希的并行最邻近节点计算方法的流 程,为了便于说明仅示出了与本发明实施例相关的部分。
[0029] 本实施例提供的基于敏感哈希的并行最邻近节点计算方法包括下述步骤:
[0030] 步骤S101、将被查询数据集划分成若干数据子集;
[0031] 步骤S102、针对每一个数据子集,给定查询数据集中的任一数据q,使用基于敏感 哈希的串行最邻近节点计算方法,获取该数据子集上的K近邻居集合;
[0032] 步骤S103、将所有获取到的K近邻居集合组成近邻总集,从所述近邻总集中选取K 个最近的邻居作为数据q的K近邻居。
[0033] 由于现有基于敏感哈希的KNN算法处理海量数据效率低下,当被查询数据集S中 数据量很大时,无法一次将S中的所有数据在单个计算机节点载入内存,也就无法一次将 全部数据哈希到桶中。因此本实施在步骤SlOl中,首先将被查询数据集S中的样本数据划 分成m个数据子集,分别为SI,S2,…,Sm,具体划分方式一般采用随机选择分配方法,数据 采用链表存储方式。
[0034] 针对每一个数据子集Si,给定查询数据集中的任一数据q,使用基于敏感哈希的 串行KNN算法,获取数据子集Si上的K近邻居集合Ni ;然后将所有得到的K近邻居集合组 成一个近邻总集,最后从所述邻近总集中选取K个最近的邻居作为数据q的K近邻居。经 验证,串行哈希KNN算法与并行哈希KNN算法测试对比结果下表1所示(被查询数据集S,查 询数据R的数量1000,数据子集数为10):
【主权项】
1. 一种基于敏感哈希的并行最邻近节点计算方法,其特征在于,所述方法包括: 将被查询数据集划分成若干数据子集; 针对每一个数据子集,给定查询数据集中的任一数据q,使用基于敏感哈希的串行最邻 近节点计算方法,获取该数据子集上的K近邻居集合; 将所有获取到的K近邻居集合组成近邻总集,从所述近邻总集中选取K个最近的邻居 作为数据q的K近邻居。
2. 如权利要求1所述方法,其特征在于,所述针对每一个数据子集,给定查询数据集中 的任一数据q,使用基于敏感哈希的串行最邻近节点计算方法,获取该数据子集上的K近邻 居集合步骤,具体包括: 生成一组局部敏感的哈希函数簇,共有L个哈希函数; 针对每一个数据子集,将数据子集中的数据分别使用L个哈希函数计算得到L个不同 的桶B1,B2,...,BL; 给定查询数据集中的任一数据q,分别使用L个哈希函数计算出L个哈希值hi,h2,…,hL; 从每个桶Bj中找出和哈希值hj相等的数据组成集合S(q),其中I<j<L; 从集合S(q)中找出K个最近的邻居作为数据q的k近邻居集合。
3. 如权利要求1或2所述方法,其特征在于,采用大顶推方法从所述近邻总集中选取K 个最近的邻居作为数据q的K近邻居。
4. 一种分布式系统,其特征在于,所述分布式系统包括一个主节点和与所述主节点连 接的若干从节点,其中,所述主节点包括: 数据划分单元,用于将被查询数据集划分成若干数据子集; 接收查找单元,用于接收各个从节点返回的K近邻居集合和数据q,并将所有接收到的K近邻居集合组成近邻总集,从所述近邻总集中选取K个最近的邻居作为数据q的K近邻 居; 所述从节点包括: 近邻计算单元,用于针对每一个数据子集,给定查询数据集中的任一数据q,使用基于 敏感哈希的串行最邻近节点计算方法,获取该数据子集上的K近邻居集合,以及将所述K近 邻居集合和数据q发送给主节点。
5. 如权利要求4所述分布式系统,其特征在于,所述近邻计算单元包括: 哈希函数生成模块,用于生成一组局部敏感的哈希函数簇,共有L个哈希函数; 哈希第一处理模块,用于针对每一个数据子集,将数据子集中的数据分别使用L个哈 希函数计算得到L个不同的桶B1,B2,…,BL; 哈希第二处理模块,用于给定查询数据集中的任一数据q,分别使用L个哈希函数计算 出L个哈希值hl,h2,".,hL; 集合生成模块,用于从每个桶Bj中找出和哈希值hj相等的数据组成集合S(q),其中I^j^L; 近邻计算模块,用于从集合S(q)中找出K个最近的邻居作为数据q的k近邻居集合。
6. 如权利要求4或5所述分布式系统,其特征在于,所述接收查找单元采用大顶推方法 从所述近邻总集中选取K个最近的邻居作为数据q的K近邻居。
【专利摘要】本发明适用于数据处理技术领域,提供一种基于敏感哈希的并行最邻近节点计算方法及分布式系统,所述方法包括:将被查询数据集划分成若干数据子集;针对每一个数据子集,给定查询数据集中的任一数据q,使用基于敏感哈希的串行最邻近节点计算方法,获取该数据子集上的K近邻居集合;将所有获取到的K近邻居集合组成近邻总集,从所述近邻总集中选取K个最近的邻居作为数据q的K近邻居。本发明采用并行KNN算法,将海量数据划分为多个数据子集,各个子节点进行并行KNN计算,提高了计算效率,大大缩短了查询搜索时间。
【IPC分类】G06F17-30
【公开号】CN104699701
【申请号】CN201310655600
【发明人】范成林, 罗军
【申请人】深圳先进技术研究院
【公开日】2015年6月10日
【申请日】2013年12月5日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1