一.算法实现 基于p-stable分布,并以‘哈希技术分类’中的分层法为使用方法,就产生了E2LSH算法。 E2LSH中的哈希函数定义如下: 其中,v为d维原始数据,a为随机变量,由正态分布产生; w为宽度值,因为a?v+b得到的是一个实数,如果不加以处理,那么起不到桶的效果,w是...
分类:
编程语言 时间:
2015-05-06 10:55:56
阅读次数:
222
上一小节,我们对E2LSH代码主要的源码框架和用到的数据结构作了简单介绍(http://blog.csdn.net/jasonding1354/article/details/38331229),这一节我将简单介绍一下E2LSH的主要函数接口。...
分类:
其他好文 时间:
2014-08-04 21:36:08
阅读次数:
325
E2LSH的核心代码可以分为3部分:
LocalitySensitiveHashing.cpp——主要包含基于LSH的RNN(R-near neighbor)数据结构。其主要功能是根据参数构建数据结构进行查询数据对象的功能;
BucketHashing.cpp——主要包含对于哈希桶的普通哈希表。其主要功能是构建哈希表,添加哈希桶到表中和查询哈希桶;
SelfTuning.cpp——包含计算RNN数据结构最佳参数的函数。...
分类:
其他好文 时间:
2014-08-01 23:13:02
阅读次数:
404
对应海明距离的LSH称为位采样算法(bit sampling),该算法是比较得到的哈希值的海明距离,但是一般距离都是用欧式距离进行度量的,将欧式距离映射到海明空间再比较其的海明距离比较麻烦。于是,研究者提出了基于p-稳定分布的位置敏感哈希算法,可以直接处理欧式距离,并解决(R,c)-近邻问题。...
分类:
其他好文 时间:
2014-07-30 01:07:52
阅读次数:
985
最近邻问题(nearest neighbor problem)可以定义如下:给定n个对象的集合并建立一个数据结构,当给定任意的要查询对象时,该数据结构返回针对查询对象的最相似的数据集对象。LSH的基本思想是利用多个哈希函数把高维空间中的向量映射到低维空间,利用低维空间的编码来表示高维向量。通过对向量对象进行多次哈希映射,高维向量按照其分布以及自身的特性落入不同哈希表的不同桶中。在理想情况下可以认为在高维空间中位置比较接近的向量对象有很大的概率最终落入同一个桶中,而距离比较远的对象则以很大的概率落入不同的桶中...
分类:
其他好文 时间:
2014-07-29 14:25:28
阅读次数:
219