算法思想:将高维空间中的元素视为点并赋以坐标值,坐标值为正整数。通过一族哈希函数将空间所有点映射到n个哈希表中,n=||,即每个哈希函数f对应一个哈希表,每个哈希表都存放着空间所有的点。对于给定的查询子q,分别计算、、…、,,i=1,2,…,n 。以所有落入的哈希表中的桶中所有点作为候选集,比较其与q之间的距离,选出距离最近的K个点(K-NNS) LSH(Locality-Sensitive Hashing,局部敏感哈希)是一种用于高维数据相似性搜索的算法,尤其适用于大规模数据集。它的核心思想是通过一组哈希函数将高维空间中的点映射到多个哈希表,使得相似的点有更高的概率被映射到相同的哈希桶中,而相异的点则更可能被分散到不同的桶。 在LSH算法中,我们把高维空间中的每个元素看作一个点,每个点的坐标值为正整数。假设有一个哈希函数族,包含n个哈希函数,每个函数f对应一个哈希表。这些函数将所有点映射到n个哈希表中,其中n等于维度的平方根。对于一个给定的查询点q,我们计算它在所有哈希函数下的值,然后查找这些值对应的哈希桶,将落入的桶中的所有点作为候选集。接着,我们对候选集中的点与查询点q计算距离,挑选出距离最近的K个点,这就是K-Nearest Neighbors (K-NNS)问题的解决方案。 算法步骤如下: 1. **预处理**: - 将高维空间P中的点映射到Hamming空间,通过将点的坐标转换成二进制形式,其中0和1的个数反映了坐标值。这种映射是保距的,即保持了原有的欧几里得距离。 2. **定义哈希函数族**: - 选取I的k个子集,定义哈希函数族,每个子集对应一个哈希函数,将点在子集I上的坐标值投影,得到新的向量,再通过哈希函数映射到不同的桶中。 3. **构建哈希表**: - 使用第二层哈希,将第一层哈希表的桶映射到一个更大的哈希表中,解决哈希冲突。当桶中的点超过预设容量B时,创建新的桶并链接到原来的桶,或者将新点分配到其他未满的桶。 4. **查询操作**: - 对于查询点q,计算它在所有哈希函数下的值,找到对应的哈希桶,收集所有桶中的点作为候选集,然后在候选集中计算距离并选择最近的K个点。 LSH算法的一个关键问题是如何选择子集I,通常通过随机均匀选取k个元素来构成子集,以最大化相似点映射到相同桶的概率,同时最小化不相似点映射到同一桶的概率。在实际实现中,可以避免直接将点从d维空间映射到Hamming空间,而是通过其他方法隐式地进行,例如根据坐标集I的子集I|i进行投影,这样能保持距离关系。 总结来说,LSH算法通过哈希映射和冲突解决策略,有效地减少了高维空间的搜索复杂度,提高了大规模数据集中的相似性搜索效率。它在大数据和机器学习领域有广泛的应用,例如图像检索、文本相似度分析等。
- mayue19867132013-11-08算法介绍的还比较详尽!
- 相国2014-08-24抄的就不说了,docx在wps2013下看不到特殊公式,等于没用. 白下了
- LadyShao2013-10-23基本方法介绍还算全面,不过明显是从哪里粘过来的
- fcdxei2015-02-13下载就是为了看公式,结果公式和图全都显示不出来,几乎没用
- dragonworrior2013-06-23基本方法介绍还算全面,不过明显是从哪里粘过来的,里面的示意图都没有
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助