最近邻搜索神器——一文读懂局部敏感哈希LSH原理

什么是LSH?

LSH主要用来解决高维空间中点的近似最近邻搜索问题,即Approximate Nearest Neighbor(ANN)。
在实际的应用中我们所面对的数据是海量的,并且有着很高的维度。在对数据的各种操作中,查询操作是最常见的一种,这里的查询是指输入一个数据,查找与其相似的数据,那么怎样快速从海量高维数据中找到与某个数据最相似的数据,成为了一个难点。

传统的哈希算法通过哈希函数建立哈希表,由哈希表我们能够得到O(1)的查找时间性能,传统哈希算法的关键在于,找到合适的哈希函数,将原始数据映射到相对应的桶内,如果不同的数据,映射到了同一个位置就是发生了冲突,这是传统哈希算法所避免的。

局部敏感哈希(LSH)的想法恰恰和传统的哈希算法相反,我们渴望冲突,但是我们希望的是原先相邻的两个数据能够以较高的概率被映射为同一个哈希值,而相似对很低的数据以极低的概率映射成同一个哈希值.这样的函数我们叫LSH。

LSH最根本的作用就是能够高效的处理海量高维数据的最近邻问题,其最大的特点就是保持数据的相似性。

一个不满足LSH的简单例子。

假设一个哈希函数H(x)=x%9H(x) = x \% 9

你可能感兴趣的:(葫芦爷救娃娃)