局部敏感哈希LSH(Locality Sensitive Hashing)

局部敏感哈希(LSH)是一种用于高维数据近似近邻搜索的算法,尤其适用于海量数据。它通过将数据映射到低维空间,保留相似数据的局部性,从而加速搜索过程。LSH适用于Hamming距离、Euclidean距离和Jaccard系数等多种距离度量。通过概率放大和多哈希表,LSH能有效提高找到相似数据的概率,降低搜索复杂度。
摘要由CSDN通过智能技术生成

LSH(Locality Sensitive Hashing)

  • 一、局部敏感哈希LSH
  • 二、Hamming 距离
  • 三、Euclidean 距离
  • 四、Jaccard 系数
  • 五、参考资料

在很多问题中,从海量数据库中寻找到与查询数据相似的数据是一个很关键的问题。比如在图片检索领域,需要找到与查询图像相似的图片,又比如在3D维重建和 视觉SLAM等问题中,需要在3维点云模型(数据库)中找到与查询描述子最相近的描述子,以实现特征匹配。这个问题也叫近似近邻问题 Approximate Near Neighbor。当数据中的数据量很大时(百万以上),线性查找是不实际的,kd-tree是一个很好算法,但是当数据的维数很高时,kd-tree的性能将变得很差(kd-tree只适用数据在30维以下)。对于高维数据的海量数据近邻查找,局部敏感哈希是一个很好的解决方法。

局部敏感哈希(Locality Sensitive Hashing)是一个方法,应用到不同数据的距离度量时,两个数据之间的相似性(相似性往往是和距离是负相关的)有不同的衡量,那么就需要不同的算法。下面我先总体介绍局部敏感哈希方法,然后针对不同的距离度量空间来具体展开介绍,主要包括了Hamming距离、Euclidean距离、Jaccard 系数、余弦相似度。

这里写图片描述
如上图是一个图片检索的例子,应用LSH可以从海量数据库中快速检索出所查询的图片。


一、局部敏感哈希LSH

先说说哈希Hash,哈希是通过一个哈希函数(Hash function)将数据映射到一个哈希表(Hash Table),通过哈希表的索引,来使搜索时间从线性搜索的O(N)降到O(1)。这里的关键在于哈希函数的选取,对于不同的应用和数据会有不用的哈希函数。

这里写图片描述

局部敏感哈希的基本思想:在高维数据空间中的两个相邻的数据被映射到低维数据空间中后,将会有很大的概率任然相邻;而原本不相邻的两个数据,在低维空间中也将有很大的概率不相邻。通过这样一映射,我们可以在低维数据空间来寻找相邻的数据点,避免在高维数据空间中寻找,因为在高维空间中会很耗时。有这样性质的哈希映射称为是局部敏感的。

局部敏感哈希定义:

一个哈希函数族满足如下条件时,被称为是 (R,cR,P1,P2) -sensitvie,对于任意两个点  pqRd

哈希

为了让局部敏感哈希函数族起作用,需要满足 c>1 P1>P2 .

举个例子来说明这个概念。考虑二进制的两个数据点 p,q ,它们的每一个比特位要么是0要么是1。它们之间的距离是用Hamming距离来计算的,也是就不同的比特位数。我们使用一个很简单的哈希函数族 H ,每一个哈希函数是随机的选择一个特定的比特位上的值, H 包含了所有的从 { 0,1}d 映射到 { 0,1} 的函数,并且有 hi(p)=pi 。从 H 中随机地选择哈希函数 h ,那么 hi(p) 将会随机地返回 p 的一个比特位。
那么 Pr[h(p)=h(q)] 就等于 pq 中相同的比特位数的比例,因此有 P1=1R/d P2=1cR/d ,对于任意的 c>1 ,都满足 P1>P2 。即这种构造出来的哈希函数族是局部敏感的![1]

Emdedding:

上面讲的一个例子因为数据本身刚好就是二进制,使用的Hamming距离,不需要其他的操作,但是实际上在最开始提出LSH时,是还有一个Embedding操作的。

Original LSH在哈希之前,首先要先将数据从L1准则下的欧几里得空间嵌入到Hamming空间,因为L2准则下的欧几里得空间没有直接的方法嵌入到Hamming空间。在做此Embedding时,有一个假设就是原始点在L1准则下的效果与在L2准则下的效果相差不大,即欧氏距离和曼哈顿距离的差别不大。

Embedding算法:
1. 找到所有点的所有坐标值中的最大值C;
2. 对于一个点P来说,P=(x1,x2,…,xd),d是数据的维度;
3. 将每一维xi转换为一个长度为C的0/1序列,其中序列的前xi个值为1,剩余的为0.
4. 然后将d个长度为C的序列连接起来,形成一个长度为Cd的序列.

值得说明的是,Embedding操作是保距离的,即在Embedding前后两个点之间的距离是不变的。更多细节可看论文[2]

概率放大:

一个哈希函数族的概率 P1P2 之间的差不够大,通常会通过增加哈希键的长度 k 和哈希表的个数 L 来增加

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值