KNN(六)--LSH算法
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算法相关推荐
- 位姿检索PoseRecognition:LSH算法.p稳定哈希
位姿检索使用了LSH方法,而不使用PNP方法,是有一定的来由的.主要的工作会转移到特征提取和检索的算法上面来,有得必有失.因此,放弃了解析的方法之后,又放弃了优化的方法,最后陷入了检索的汪洋大海. 0 ...
- 菜鸟进阶: C++实现KNN文本分类算法
作者:finallyliuyu(转载请注明原作者和出处) (代码暂不发布源码下载版,以后会发布) KNN文本分类算法又称为(k nearest neighhor).它是一种基于事例的学习方法,也称懒惰 ...
- 【LSH源码分析】p稳定分布LSH算法
上一节,我们分析了LSH算法的通用框架,主要是建立索引结构和查询近似最近邻.这一小节,我们从p稳定分布LSH(p-Stable LSH)入手,逐渐深入学习LSH的精髓,进而灵活应用到解决大规模数据的检 ...
- 两个软件相互交换数据_六轴算法机软件使用说明
RAA (1.00a) ( Robot Arm Algorithms 1.00a 六轴算法机软件使用说明 : 作者觉得,在实际应用中,正逆解求解工具可以理解为一个类似数学计算器的 东西:不需要每个研究 ...
- 计算机操作系统实验银行家算法,实验六 银行家算法(下)
实验六 银行家算法(下) 一.实验说明 实验说明:本次实验主要是对银行家算法进行进一步的实践学习,掌握银行家算法的整体流程,理解程序测试时每一步的当前状态,能对当前的资源分配进行预判断. 二.实验要求 ...
- 【Java数据结构与算法】第六章 算法的时间复杂度、算法的空间复杂度和排序算法的介绍
第六章 算法的时间复杂度.算法的空间复杂度和排序算法的介绍 文章目录 第六章 算法的时间复杂度.算法的空间复杂度和排序算法的介绍 一.算法的时间复杂度 1.时间频度 2.时间复杂度 3.常见的时间复杂 ...
- 分布式理论(六)—— Raft 算法
分布式理论(六)-- Raft 算法 前言 我们之前讲述了 Paxos 一致性算法,虽然楼主尝试用最简单的算法来阐述,但仍然还是有点绕.楼主最初怀疑自己太笨,后来才直到,该算法的晦涩难懂不是只有我一个 ...
- knn K近邻算法python实现
本文主要内容: knn K近邻算法原理 sklearn knn的使用,以及cross validation交叉验证 numpy 实现knn knn改进方法 1 knn K近邻算法原理 K近邻算法:给定 ...
- 【计导非课系列】 第六节 算法 数据结构
[计导非课系列] 第六节 算法 数据结构 程序=算法+数据结构 众所周知,完美的程序是由优秀的算法和良好的数据结构组成的.什么是算法?什么是数据结构?这里,我们将一起探索算法和数据结构的奥秘,初步揭开 ...
- 原始LSH算法实现详解
** 98年LSH算法实现理论解释 LSH算法适用于高维近似查找,详细的算法理论参见原论文,这里只是记录一下实现中的细节,代码随后附上. 首先需要用排序算法找出数据集中点坐标的最大值C,以及数据的维度 ...
最新文章
- 东北大米为何如此好吃
- 作业二:了解流行的软件
- C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
- C++获取当前系统时间并格式化输出
- LeetCode 483. 最小好进制(二分查找)
- spring框架 c p标签的区别_Spring学习初体验
- MapGuide应用开发系列(八)----MapGuide Studio准备地图之地图(Map)
- 公钥、私钥、数字签名和数字证书的概念及解密
- 分布式事务控制解决方案
- 大学计算机基础试题 百度网盘,【分享】《大学计算机基础》试题题库及答案 ~~~~~~~~~~~...
- PDG转PDF注定会文件膨胀、质量下降吗?
- word 全部标题降级
- 易语言5.4一键破解工具
- chrome打不开网页 转圈圈
- Codeforces Round #521 (Div. 3) E. Thematic Contests
- 华为交换机审计配置_华为交换机AAA配置管理.doc
- mysql 集群 运维_【MySQL运维】Canal集群模式与多数据库同步部署
- 网络:IP地址和子网掩码
- 密码算法测试向量——HMAC-SM3
- Wordpress + Markdown终极搭配
热门文章
- 夜神安卓模拟器安装xposed框架
- Makefile .PHONY用法
- educoder Redis安全与性能
- java打印插件_java c/s项目中有没有好用的打印插件?
- matlab相机标定_综述 | 相机标定方法
- stringbuilder_String,StringBuilder,StringBuffer三者的区别?
- python编写登录接口_使用python编写一个登录接口
- windows_server2012搭建iis并配置http重定向 iis转发
- win10新建管理员账户_电脑技巧|Win10家庭版如何开启超级管理员账户
- gispython定义查询_定义查询方法