LSH 近似最近邻查找
一、什么是近似最近邻查找
NN与ANN NN,Nearest Neighbor Search,最近邻查找问题
KNN,K-Nearest Neighbor,k最近邻,查找离目标数据最近的前k个数据项
ANN,Approximate Nearest Neighbor,近似最近邻检索,在牺牲可接受范围内的精度的情况下提高检索效率
最近邻检索是线性复杂度的,当处理大规模数据时可以采用ANN方法
LSH,局部敏感哈希是ANN的一种
二、什么是Hash
主要的索引技术:
基于树的索引技术(二叉树,B-Tree,B+Tree)
基于哈希的索引技术
基于词的倒排索引
海量数据的检索方式,Hash是重要的索引技术
三、LSH算法
针对海量 and 高维数据如何进行查找:
如果数据是低维 and 小数据 => 通过线性的方式查找
数据不仅海量,而且高维 => 需要降维,采用索引方式查找 LSH,Locality-Sensitive Hashing,局部敏感哈希
需要查找与某个数据1个或多个相似的数据
最近邻查找方法(ANN,Approximate Nearest Neighbor)
LSH:
通过Hash Function,每个Bucket会落入一些原始数据,属于同一个桶内的数据有很大可能是相邻的(也存在不相邻的数据被hash到了同一个桶内)
将原始数据集合分成了多个子集合,每个子集合中的数据大概率是相邻的,而且子集合中的元素个数较少。
方便进行近邻查找 => 在一个很小的集合里查找相邻元素
四、 MinHash算法
文档相似度计算:
k-shingle,也称为k-gram,文档中任意长度为k的字符串。将每篇文档可以表示成文档中出现一次或者多次的k-shingle的集合
比如document="abcdabd",当2-shingle组成的集合为 {ab,bc,cd,da,bd}
如果两个文档相似,那么他们会有很多的shingles也是相同的
文本越长,K取值越大。K的经验值参考,短文本K=5,长文本K=10
五、MinHash+LSH:
除了要解决Ci和Cj两两之间相似度的计算问题,
当数据量大的时候,两两之间相似度计算次数为 当数据量N很大(>100万),计算量非常大 => 将可能相似的用户以较大概率分到同一个桶内,这样每一个用户的“相似用户候选集”就会少很多,大大降低计算复杂度
LSH是相似度的近似求解方式 在MinHash基础上,将Signature向量分成多段(band)
LSH 近似最近邻查找相关推荐
- RS推荐系统-LSH最近邻查找+MiniHash
什么是最近邻查找? 在推荐系统中,主要分为召回跟排序两个阶段. 召回阶段,基于用户画像及场景数据从海量的视频库(百万级别)中将相关度最高的资源检索出来,作为候选集,召回阶段可以通过"粗糙&q ...
- 最近邻查找最优算法_近似最近邻算法-annoy解析
转自https://www.cnblogs.com/futurehau/p/6524396.html Annoy是高维空间求近似最近邻的一个开源库. Annoy构建一棵二叉树,查询时间为O(logn) ...
- 海量数据索引与近似最近邻随记
最近邻问题(NN) 将次数看成向量,然后我们就可以比对向量的距离(欧式距离,余弦距离).数据中会有一些异常点,这些异常点会导致结果的不稳定.这种思想非常的不稳定,因为他只基于一个样本来做最后类别的判定 ...
- 余弦相似度 高维数据_海量高维数据与近似最近邻
在实际工程当中,我们常常会遇到海量的数据,那作为一个数据挖掘准从业人员,如何从海量的数据当中挖掘出他们数据之间的关系和规律就显得尤为重要了. 今天我要讲的时海量高维数据及其近似最近邻方案. K-近邻算 ...
- 极度快速的近似最近邻搜索算法(EFANNA)-学习笔记
博客地址:www.mzwang.top 微信公众号:whenever5225 引言 极度快速的近似最近邻搜索算法(EFANNA)是NSG的作者之前的一篇论文,这篇论文主要介绍用更快的方法建立KNN图并 ...
- 快速近似最近邻算法_数据科学家指南,以选择最佳近似最近邻算法
快速近似最近邻算法 by Braden Riggs and George Williams (gwilliams@gsitechnology.com) Braden Riggs和George Will ...
- python实现kd树以及最近邻查找算法
python实现kd树以及最近邻查找算法 一.kd树简介 二.kd树生成 1.确定切分域 2.确定数据域 3.理解递归树 4.python实现递归树代码 三.kd树上的最近邻查找算法 1.生成搜索路径 ...
- 基于 Milvus 构建的近似最近邻(ANN)搜索引擎
✏️ 作者介绍: 周充,格像科技后端工程师 需求背景 根据格像科技公司的业务需求,我们需要搭建一个近似最近邻(Approximate Nearest Neighbor,即 ANN)搜索引擎,以便将在 ...
- 自然语言处理--词向量使用基于 Annoy 的高级索引(近似最近邻)来查找最近邻词项
我们可以使用 Annoy 对 word2vec 向量建立索引并将其结果与 gensim 的 KeyedVectors索引进行对比( 像 Annoy 这样的局部敏感哈希使潜在语义索引成为现实): fro ...
最新文章
- Cloneable接口和循环冗余校验算法
- LNMP之 nginx 启动脚本和配置文件
- OpenCV的k - means聚类 -对图片进行颜色量化
- 树莓派安装vnc server并设置自启动
- js中return、return false 、return true各自代表什么含义
- cgroup学习(二)——cgroup框架结构
- linux 网卡驱动编译安装包,Dell R720 安装debian系统编译网卡驱动
- 必看 | 机器视觉基础入门
- 3个方法解决百度网盘限速(转)
- SQL round()函数
- IT经理人:提高团队工作效率的11个方法
- 微软云 Azure 云服务器 Web应用服务云计算解决方案
- 全美计算机科学与技术排名,卡耐基梅隆大学计算机科学专业排名第1(2020年USNEWS美国排名)...
- 数据库查询时报IllegalArgumentException异常是什么原因?
- go install报错no install location for directory outside GOPATH
- 要不要考博?清华姚班助理教授写了个读博决策树
- iOS屏幕自动旋转 以及横屏模式打开APP出现的问题
- 如何在计算机桌面恢复我的电脑,桌面上我的电脑图标不见了怎么恢复?桌面计算机图标不见了的3个解决方法...
- Centos7下SVN服务端搭建以及hook应用
- 一篇博客让你横扫数电常考所有集成电路芯片(已更新50%持续更新)