LSH(Location Sensitive Hash),即位置敏感哈希函数。与一般哈希函数不同的是位置敏感性,也就是散列前的相似点经过哈希之后,也能够在一定程度上相似,并且具有一定的概率保证。

形式化定义:

对于任意q,p属于S,若从集合S到U的函数族H={h1,h2...hn}对距离函数D(,),如欧式距离、曼哈顿距离等等,满足条件:

则称D(,)是位置敏感的。

如下图,空间上的点经位置敏感哈希函数散列之后,对于q,其rNN有可能散列到同一个桶(如第一个桶),即散列到第一个桶的概率较大,会大于某一个概率阈值p1;而其(1+emxilong)rNN之外的对象则不太可能散列到第一个桶,即散列到第一个桶的概率很小,会小于某个阈值p2.

LSH的作用

◆高维下近似查询

相似性检索在各种领域特别是在视频、音频、图像、文本等含有丰富特征信息领域中的应用变得越来越重要。丰富的特征信息一般用高维向量表示,由此相似性检索一般通过K近邻或近似近邻查询来实现。一个理想的相似性检索一般需要满足以下四个条件:

1. 高准确性。即返回的结果和线性查找的结果接近。

2. 空间复杂度低。即占用内存空间少。理想状态下,空间复杂度随数据集呈线性增长,但不会远大于数据集的大小。

3. 时间复杂度低。检索的时间复杂度最好为O(1)或O(logN)。

4. 支持高维度。能够较灵活地支持高维数据的检索。

传统主要方法是基于空间划分的算法——tree类似算法,如R-tree,Kd-tree,SR-tree。这种算法返回的结果是精确的,但是这种算法在高维数据集上的时间效率并不高。实验[1]指出维度高于10之后,基于空间划分的算法时间复杂度反而不如线性查找。LSH方法能够在保证一定程度上的准确性的前提下,时间和空间复杂度得到降低,并且能够很好地支持高维数据的检索。

◆分类和聚类

根据LSH的特性,即可将相近(相似)的对象散列到同一个桶之中,则可以对图像、音视频、文本等丰富的高维数据进行分类或聚类。

◆数据压缩。如广泛地应用于信号处理及数据压缩等领域的Vector Quantization量子化技术。

总而言之,哪儿需要近似kNN查询,哪儿都能用上LSH.

[1] Weber R, Schek H, Blott S. A quantitative analysis and performance study for similarity search methods in high dimensional spaces Proc.of the 24th Intl.Conf.on Very Large Data Bases (VLDB).1998:194-205

KNN(六)--LSH算法相关推荐

  1. 位姿检索PoseRecognition:LSH算法.p稳定哈希

    位姿检索使用了LSH方法,而不使用PNP方法,是有一定的来由的.主要的工作会转移到特征提取和检索的算法上面来,有得必有失.因此,放弃了解析的方法之后,又放弃了优化的方法,最后陷入了检索的汪洋大海. 0 ...

  2. 菜鸟进阶: C++实现KNN文本分类算法

    作者:finallyliuyu(转载请注明原作者和出处) (代码暂不发布源码下载版,以后会发布) KNN文本分类算法又称为(k nearest neighhor).它是一种基于事例的学习方法,也称懒惰 ...

  3. 【LSH源码分析】p稳定分布LSH算法

    上一节,我们分析了LSH算法的通用框架,主要是建立索引结构和查询近似最近邻.这一小节,我们从p稳定分布LSH(p-Stable LSH)入手,逐渐深入学习LSH的精髓,进而灵活应用到解决大规模数据的检 ...

  4. 两个软件相互交换数据_六轴算法机软件使用说明

    RAA (1.00a) ( Robot Arm Algorithms 1.00a 六轴算法机软件使用说明 : 作者觉得,在实际应用中,正逆解求解工具可以理解为一个类似数学计算器的 东西:不需要每个研究 ...

  5. 计算机操作系统实验银行家算法,实验六 银行家算法(下)

    实验六 银行家算法(下) 一.实验说明 实验说明:本次实验主要是对银行家算法进行进一步的实践学习,掌握银行家算法的整体流程,理解程序测试时每一步的当前状态,能对当前的资源分配进行预判断. 二.实验要求 ...

  6. 【Java数据结构与算法】第六章 算法的时间复杂度、算法的空间复杂度和排序算法的介绍

    第六章 算法的时间复杂度.算法的空间复杂度和排序算法的介绍 文章目录 第六章 算法的时间复杂度.算法的空间复杂度和排序算法的介绍 一.算法的时间复杂度 1.时间频度 2.时间复杂度 3.常见的时间复杂 ...

  7. 分布式理论(六)—— Raft 算法

    分布式理论(六)-- Raft 算法 前言 我们之前讲述了 Paxos 一致性算法,虽然楼主尝试用最简单的算法来阐述,但仍然还是有点绕.楼主最初怀疑自己太笨,后来才直到,该算法的晦涩难懂不是只有我一个 ...

  8. knn K近邻算法python实现

    本文主要内容: knn K近邻算法原理 sklearn knn的使用,以及cross validation交叉验证 numpy 实现knn knn改进方法 1 knn K近邻算法原理 K近邻算法:给定 ...

  9. 【计导非课系列】 第六节 算法 数据结构

    [计导非课系列] 第六节 算法 数据结构 程序=算法+数据结构 众所周知,完美的程序是由优秀的算法和良好的数据结构组成的.什么是算法?什么是数据结构?这里,我们将一起探索算法和数据结构的奥秘,初步揭开 ...

  10. 原始LSH算法实现详解

    ** 98年LSH算法实现理论解释 LSH算法适用于高维近似查找,详细的算法理论参见原论文,这里只是记录一下实现中的细节,代码随后附上. 首先需要用排序算法找出数据集中点坐标的最大值C,以及数据的维度 ...

最新文章

  1. 东北大米为何如此好吃
  2. 作业二:了解流行的软件
  3. C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
  4. C++获取当前系统时间并格式化输出
  5. LeetCode 483. 最小好进制(二分查找)
  6. spring框架 c p标签的区别_Spring学习初体验
  7. MapGuide应用开发系列(八)----MapGuide Studio准备地图之地图(Map)
  8. 公钥、私钥、数字签名和数字证书的概念及解密
  9. 分布式事务控制解决方案
  10. 大学计算机基础试题 百度网盘,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
  11. PDG转PDF注定会文件膨胀、质量下降吗?
  12. word 全部标题降级
  13. 易语言5.4一键破解工具
  14. chrome打不开网页 转圈圈
  15. Codeforces Round #521 (Div. 3) E. Thematic Contests
  16. 华为交换机审计配置_华为交换机AAA配置管理.doc
  17. mysql 集群 运维_【MySQL运维】Canal集群模式与多数据库同步部署
  18. 网络:IP地址和子网掩码
  19. 密码算法测试向量——HMAC-SM3
  20. Wordpress + Markdown终极搭配

热门文章

  1. 夜神安卓模拟器安装xposed框架
  2. Makefile .PHONY用法
  3. educoder Redis安全与性能
  4. java打印插件_java c/s项目中有没有好用的打印插件?
  5. matlab相机标定_综述 | 相机标定方法
  6. stringbuilder_String,StringBuilder,StringBuffer三者的区别?
  7. python编写登录接口_使用python编写一个登录接口
  8. windows_server2012搭建iis并配置http重定向 iis转发
  9. win10新建管理员账户_电脑技巧|Win10家庭版如何开启超级管理员账户
  10. gispython定义查询_定义查询方法