`
grunt1223
  • 浏览: 423240 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Locality Sensitive Hash

阅读更多
局部敏感哈希——Locality Sensitive Hash是一种常见的用于处理高维向量的索引办法。与其它基于Tree的数据结构,诸如KD-Tree、SR-Tree相比,它较好地克服了Curse of Dimension,能够将KNN的时间复杂度缩减到sub-linear。LSH多被用于文本、多媒体(图像、音频)的相似性判断。请看下图:



参考上图,如果我们要返回距离中心为r的点,LSH会返回给我们范围更远、更多的点,也就是说,LSH返回的结果会带有一定的false positive。我们或许需要使用linear search进行二次筛选,但这毕竟大大减少了计算的时间。

由此可见,LSH与一般的加密型哈希函数有很大的区别,参见下图:



一种实现LSH的最简单的方式是采用random bits sampling的方式,即将待索引的多维整型向量转化为0或1的字符串;再采用随机选取其中的K位拼接成新的字符串;最后再采用常规的哈希函数(例如MD5)等算法获取带索引向量的LSH Code。这样的Hash Code有一个特点,就是Hamming Distance相近的两个向量,其冲突的概率越大,即结果相等的可能性越大。为了减少增强KNN搜索的能力,与Bloom Filter类似,采用多个Hash Table增加冲突的概率,参见下图:



来看一下LSH的复杂度:



可见,与各种其它的数据结构相比,基于lsh的索引结构的query时间复杂度,可以做到与向量维度无关,有效地克服了维度灾难的问题,因此更适合高维向量的索引。

基于LSH实现的图像近似检索,其原理也很类似,如下图所示:






时间关系,下次有空会把LSH的java implementation放上来。



  • 大小: 46.4 KB
  • 大小: 16.7 KB
  • 大小: 73.4 KB
  • 大小: 75.2 KB
  • 大小: 39.5 KB
  • 大小: 66.1 KB
2
3
分享到:
评论
2 楼 cong2008abc 2013-10-30  
请问你的代码上传到哪里了?
1 楼 jiasen_huo 2012-04-27  
您觉得这个算法 实现起来难吗 怎么我看到MIT的实现代码那么长啊

相关推荐

    TLSH一个生成字符串哈希的JavaScript库

    TLSH(Trend Micro Locality Sensitive Hash)是一种特定类型的哈希算法,设计用于快速检测和比较数据块的相似性,特别适用于文本、文件或序列数据的比较。 JavaScript作为一种广泛使用的编程语言,尤其在Web开发中...

    开源项目-glaslos-tlsh.zip

    开源项目-glaslos-tlsh.zip,Feature complete golang port of the Trend Micro Locality Sensitive Hash (TLSH) library. Feedback welcome!

    2004 Locality-sensitive hashing scheme based on p-stable distributions.pdf

    局部敏感哈希(Locality-sensitive hashing,简称LSH)是一种在数据挖掘领域中广泛应用于高维空间近邻搜索问题的技术。2004年的这篇论文介绍了一种基于p-稳定分布的局部敏感哈希方案,该方案提出了一种新型的哈希...

    A Locality-Sensitive Hash for Real Vectors (10.1.1.215.7690)-计算机科学

    A locality-sensitive hash for real vectorsTyler NeylonAbstract We present a simple and practical algorithm for the c−approximate near neighbor problem (c−NN): given n points P ⊂ Rd and radius R, ...

    tlsh-js:TLSH(趋势科技本地敏感哈希)JavaScript端口

    TLSH(Trend Micro Locality Sensitive Hash)JavaScript端口 TLSH是设计的模糊匹配库(托管在) 给定最小长度为512个字符的字节流(以及最小的随机性),TLSH会生成可用于相似性比较的哈希值。 相似的对象将具有...

    Locality-Sensitive-Hashing

    局部敏感哈希(Locality Sensitive Hashing, LSH)是一种在大数据集上进行近似相似性搜索的高效算法。它的核心思想是将高维数据转换为低维哈希值,使得相似的数据对象在哈希空间中具有较高的碰撞概率。在Java编程中...

    java笔试题算法-tlsh:特尔什

    Locality Sensitive Hash TLSH 是一个模糊匹配库。 给定一个最小长度为 50 字节的字节流 TLSH 生成一个哈希值,可用于相似性比较。 相似的对象将具有相似的散列值,这允许通过比较它们的散列值来检测相似的对象。 请...

    Efficient Diverse Ranking of Hot-topics-discussion on Social Network

    文章中提到,将提出基于局部敏感哈希(Locality Sensitive Hash,简称LSH)的有效多样性度量和排序算法。这一方法适用于MapReduce框架,能够高效地根据帖子的流行度和多样性对它们进行排序。文章还介绍了一系列在...

    semantic_hash.pdf

    than locality sensitive hashing, which is the fastest current method. By using semantic hashing to filter the documents given to TF-IDF, we achieve higher accuracy than applying TF-IDF to the entire...

    基于mapReduce的大规模实体匹配的高效方法

    我们使用局部敏感哈希(Locality Sensitive Hash, LSH)函数为高维实体生成低维签名;引入一系列随机算法,以高概率确保在Reduce阶段相似的签名能够匹配;并且我们的框架包含减少冗余相似度计算的解决方案。实验表明...

    图片检索(均匀hash,感知hash,颜色直方图)

    比如,可以使用更复杂的哈希技术,如Locality Sensitive Hashing (LSH),来进一步减少哈希冲突;或者引入深度学习模型,如卷积神经网络,来提取更高层次的语义特征,提升检索准确性。 总结,这个资源提供了基础的...

    Locality-Sensitive-Hashing:用于位置敏感哈希的Scala库

    局部敏感哈希一个Scala库,用于局部敏感哈希。 当前的实现仅适用于文本,并且仅支持Jaccard相似性。 val lsh = new LSH(shingleLength , min hash Length , number of bands , processedDocuments, threshold)

    LSH资料ppt_pdf

    LSH(Locality Sensitive Hashing,位置敏感哈希)是一种在高维空间中快速查找相似数据的近似算法。这种技术主要用于大数据集中的近似最近邻搜索(Approximate Nearest Neighbor, ANN),尤其适用于处理高维向量,如...

    基于内容的检索相关文献

    例如,Bloom Filter、Min-Hash、Locality Sensitive Hashing (LSH)等都是常见的Hash算法。 3. 相似度计算:在图像检索中,如何度量两个图像的相似程度是关键。通常使用欧氏距离、余弦相似度、Jaccard相似度等度量...

    基于哈希技术和MapReduce的大数据集K-近邻算法实现代码

    一种常见的哈希方法是Locality Sensitive Hashing (LSH),它能够在高维空间中近似地找出相似的数据点。 MapReduce是一种分布式计算模型,由Google提出,用于处理和生成大规模数据集。它分为Map和Reduce两个阶段:...

    基于哈希感知的图像相似度判断算法

    常见的哈希函数包括Locality Sensitive Hashing (LSH)、Bloom Filter、Min-Wise Independent Permutations等。这些函数通过随机投影或特定变换将图像的高级特征转化为紧凑的哈希码。 2. **图像特征提取**: 在使用...

    Mining of Massive Dataset的中文版

    局部敏感哈希(Locality Sensitive Hashing, LSH)是一种高效的数据结构,用于在大规模数据集中查找相似对象。LSH通过减少比较的次数,降低了高维空间中对象相似度计算的复杂度,这对于推荐系统、图像检索和文本分类...

    网页去重-算法篇1

    SimHashing是基于LSH(Locality Sensitive Hashing)的,它确保相似的对象在哈希空间中接近。它首先将文档转化为特征集合,然后应用LSH函数将特征向量映射为固定长度的指纹。通过比较指纹的汉明距离来评估相似性。 ...

    thinkphp5-使用SimHash进行海量内容数据查重

    为了提高性能,可以使用一些数据结构优化技术,如Bloom Filter或MinHash LSH(Locality Sensitive Hashing),它们能在牺牲一定的精确度情况下进一步减少计算量和存储空间。 总结起来,使用ThinkPHP5结合SimHash...

Global site tag (gtag.js) - Google Analytics