[发明专利]一种基于多层局部敏感哈希的k最近邻近似查询方法在审
申请号: | 201910728763.0 | 申请日: | 2019-08-08 |
公开(公告)号: | CN110489419A | 公开(公告)日: | 2019-11-22 |
发明(设计)人: | 张岩峰 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458 |
代理公司: | 21200 大连理工大学专利中心 | 代理人: | 戴风友;梅洪玉<国际申请>=<国际公布> |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 哈希桶 哈希 多层 过载 数据点 欠载 子桶 搜索 查询 大小确定 近似查询 密集区域 倾斜分布 数据分析 搜索效率 索引结构 稀疏区域 敏感 大数据 哈希表 最近邻 准确率 递归 构建 映射 重构 均衡 合并 评估 | ||
1.一种基于多层局部敏感哈希的k最近邻近似查询方法,其特征在于,步骤如下:
步骤一:采用传统方法构建LSH索引结构;
采用l组局部敏感哈希函数构建l个哈希表,其中每组包含m个哈希函数,即哈希表中哈希桶的标签长度为m;此为第0层哈希表;
步骤二:根据用户期望的召回率α和精确率β确定过载桶和欠载桶;
根据用户期望的召回率α和精确率β可知哈希桶大小S的上限和下限如公式(5)所示:
当桶的大小低于时,将该桶确定为欠载桶,而当桶的大小超过k/(β·l)时,将该桶确定为过载桶;
步骤三:对过载桶进一步用新的LSH参数进行递归的哈希划分;
将过载桶的数据点根据多个哈希函数映射到多个哈希表中,而不是在一个哈希表中重新划分;
设一个某过载桶的大小为S,为了保证用户设定的精确率β,那么重新LSH哈希的子桶哈希签名长度mc和哈希表个数lc计算方法如公式(6):
公式(6)中的p=p(r*,w)的计算方法如公式(2),r*是查询点的kNN的距离,β是用户设定的精确率,是所有子哈希表中最大的子桶;
概率p(s,w)的计算方法如公式(2)所示:
其中f2(x)是高斯分布的概率密度函数,且norm(·)表示高斯分布的密度累积函数;
然后在kNN查询时,落入过载桶的查询点也会被多次哈希到多个子桶中,被映射到这些子桶中的所有数据点也将被作为候选kNN返回;当新建哈希表中仍有大桶,则会继续对过载桶进行LSH划分得到第2层哈希表;该过程递归进行,直到整个哈希索引中不存在过载桶为止;
步骤四:标记欠载桶;
对于欠载桶,进行标记;
步骤五:查询处理,确定候选集合;
用户给定查询点q,定位其对应的在每个哈希表中的哈希桶;
当定位的哈希桶是指向桶,则将查询点q重新哈希,重哈希的参数与构建该大桶的子表时的参数相同,同时定位q到子表中的各个哈希桶;
当定位的哈希桶是数据桶,则将桶中的数据点加入到候选点集合;
当子表中的哈希桶仍然为指向桶,那么重复该过程直到定位到一个数据桶;
当定位的哈希桶是欠载的数据桶,此时哈希桶中的数据将会全部并入候选集,并同时把临近桶的数据点也加入候选集;
步骤六:根据候选集确定近似kNN结果;
步骤五得到的结果是近似kNN搜索的候选集,计算候选集中的点与查询点q之间的距离,挑选出距离q最近的k个点作为最终的近似kNN查询结果。
2.如权利要求1所述的一种基于多层局部敏感哈希的k最近邻近似查询方法,其特征在于,步骤一中,所述的局部敏感哈希函数如公式(1)所示:
其中o是数据集中的一个来d维数据点,a是一个随机生成的d维向量,其分布满足标准高斯分布N(0,1),b是一个范围在[0,w]之间的实数,w则是LSH中表征分片宽度的实数。
3.如权利要求1或2所述的一种基于多层局部敏感哈希的k最近邻近似查询方法,其特征在于,步骤五中,所述的临近桶的确定方法采用Multi-Probe LSH方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910728763.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据聚合方法和系统
- 下一篇:一种基于区块链的数据处理方法及装置