LSH局部敏感hash-口头解释版

本文作者因网上对LSH讲解不清而撰写。先给出相关知乎和英文pdf链接,后介绍LSH使用过程:对10万文档进行shingling粒度化,建立0 - 1矩阵,用min - hash降维,最后用LSH将行均匀分块,选一组计算以减小计算量,并提及分组误差问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上讲LSH这个很多,但是我就没找到有人讲清楚了的,于是写下这篇文本

https://zhuanlan.zhihu.com/p/108181478
这个链接是一知乎大神的对shingling,min-hash和LSH的理解性讲解
前面很容易懂,唯独LSH,让人看不懂,我也看了他推荐的链接,有篇英文pdf讲的这个。
看了几遍,就是没说破LSH怎么用,就在讲特异度和敏感度的问题。
http://web.stanford.edu/class/cs246/slides/03-lsh.pdf
其实就很简单,过程如下。

整个过程

  1. 数据,有10万文档
  2. 对这十万文档进行shingling,可以是n-gram取字符串分片,也可以是分词,就是粒度化。
  3. 建立0-1矩阵,行就是所有文档粒度化的字符串去重排序的集合,列是各篇文档。
  4. min-hash,进行降维,自己建立100个hash,然后对行序号计算hash值,最后计算min-hash,不太明白min-hash的看前面的链接。
  5. 得到hash方法集合和文档的矩阵,行数变少了,文档数没变,文档数也不能变,所以还是只有变行数,于是就有了LSH。
  6. 把行均匀分成多块,也就是几个hash方法一组,这样就有多组了,计算LSH时,就选一组就可以了,计算量就小了。前面文档是解释怎么选择分多少组,让误差小。buckets似乎没什么用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值