CDN笔记一 Locality Sensitive Hashing算法

局部敏感哈希(LSH)是一种用于高维度数据的近似查找算法,最初由Indyk在1998年提出。LSH通过哈希函数降低高维空间中的计算成本,使得距离相近的数据点有较高概率哈希到同一桶中。文章介绍了LSH的基本原理,包括如何定义哈希函数,以及在哈曼顿距离下如何实现。此外,还探讨了将哈曼顿距离转化为汉明距离的方法,以构建满足LSH条件的哈希表。

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

本篇笔记基于文章Similarity search in high dimensions via hashing。

历史

locality-sensetive hashing 局部敏感哈希,简称为LSH,最早由Indyk于1998年提出 [ 1 ] ^{[1]} [1],1999年被用于解决高维度海量数据的近似查找 [ 2 ] ^{[2]} [2]

近邻查找

先来看看什么是k-NN和 ϵ \epsilon ϵ-NN问题。

k-NN问题指对于一个点集P和一个特定点q,寻找点集P中距点q最近的k个点。

ϵ \epsilon ϵ-NN问题指对于一个点集P和一个特定点q,假定点集P距离点q最近的点为p,寻找点集P中所有与点q距离在d(p,q)到 ( 1 + ϵ ) d ( p , q ) (1+\epsilon)d(p,q) (1+ϵ)d(p,q)的点。

LSH算法

我们知道哈希算法目标是减少冲突方便快速查找。当维度很高,数据量很大的情况下,对于kNN问题,尽管一一匹配查找是线性的时间复杂度,计算成本也相当高。后续有人提出了KD tree,SR tree等等基于树形结构的搜索方案,但只能适用于低维度数据。

LSH算法可以快速有效地近似查找高维度海量数据。原理很简单,如果两个数据在高维空间中距离相近,则他们的哈希值有很大概率是一样的,反之如果两个数据在高维空间中距离较远,则他们的哈希值一样的概率非常小。

LSH哈希函数的定义如下:
若 p ∈ B ( q , r 1 ) , 则 P r [ h ( q ) = h ( p ) ] ≥ p 1 若p \in B(q,r_1),则Pr[h(q) = h(p)] \geq p_1 pB(q,r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值