最近邻问题(NN)

将次数看成向量,然后我们就可以比对向量的距离(欧式距离,余弦距离)。数据中会有一些异常点,这些异常点会导致结果的不稳定。这种思想非常的不稳定,因为他只基于一个样本来做最后类别的判定。

K最近邻算法(NN => KNN)

少数服从多数。

距离准则

Jaccard:并不是每个人都会点击或者购买这么高强度的行为,因为购买是需要花钱的。我们能采集到的数据量比较的数据,实际上是用户的一些隐性的行为,比如他在这个页面停留了多久(时间阈值,比如30秒),超过阈值我就认为他有兴趣。它不像打分数据一样有严格的连续值,比如0-10这样一个严格的连续取值,它只有0,1(有或没有)的这种行为,看过或没看过,感兴趣或不感兴趣。Jaccard是算两个向量共同是1的部分或者共同是0的部分。

近似最近邻算法(KNN => ANN)

预先对数据做划分会面临一个问题,可能会划分错误,无论怎么划分都有可能将本身比较接近的一些点给划分开。所以他会损失掉一部分准确度,当然这部分损失在你的承受范围内的。在损失一些准确度的情况下,用一部分的空间去提升速度,实际上就是预先对数据做了划分和索引。这种操作在工业界并不是致命的,比如淘宝上的找相似或者找同款功能。

局部铭感度哈希

生成2进制串,保证距离特性

在高维空间比较接近的会落到同一个桶里面。

LSH第一步做哈希,即把这些图片都分完桶了,LSH映射完之后,他会拿到你指定的个数的,例如指定的是k,那它就会拿到kbit的串,意味着你掉到了kbit这样一个串的桶里面。第一步是映射,映射做的事情就是对原始给定的高维向量,做一个映射,得到映射拿到的桶ID号。

第二步检索,检索做的是,首先他会去找桶里面其他的数据,LSHash这个库检索回来的张数是不确定的。当新的数据过来时,通过第一步的映射,一样会拿到一个桶的编号,到这个桶里面看看有多少张图片,将这个桶的图片取出来,计算看满不满足要求,如果桶里的图片不够,LSHash保证不了个数,所以这个库解决不了这个问题。在不够的情况下,通过计算二进制串的汉明距离,将与他汉明距离为1的这些桶编号全都拿回来。如果汉明距离为1的不够怎么办,它再取汉明距离为2的桶。、

注意:你要小心的设置LSH 他映射到的空间维度,你要根据你的样本量大致的估一下或者做测试。

lSH的直观理解

像左图中的c点划分错误的情况下,你想让你的检索尽量的准确怎么办,这个事情是可以做的,需要付出的代价是你计算资源或时间的成本,可以采用多次划分的方式,然后根据这几个超平面的检索结果,取他们的并集。

LSH之相似网页查找

词(特征)的权重是指这个词对这句话的重要度(tf-idf)。乘以权重时,原来是1的位置直接乘以权重,原来是0的位置用-1乘以权重。

有用的理由:如果现在去掉灰色这个词,对最后的结果的正负性没有影响,只有你去掉那些词的时候对结果的正负性可能会有影响呢?是不是w权重比较大的词!!就是说,如果在原来的文本中剔除一些或者加入一些不是那么重要的字的话,那我认为没有影响,除非你剔除或加入额外分词重要的词,那这个时候可能就会认为这是不同的句子。

SimHash可用库

LSH常用库

ANN之K-means Tree

每个非叶子节点都是一个簇的聚类中心点。

如果你现在要找回Top 2T,如果不满足他会怎么做呢?他会回溯回去,回溯到上一级大团,然后去找聚类中心第二接近的,因为聚类中心他们总会有一个远近,所以他会对他们做一个排序(rank),拿出来那些比较接近的小的簇,然后再去求并。

ANN之K-D Tree

DT决策树,它在做的事情是去找一个波动最大的维度,为什么要找方差最大的维度?方差最大的维度,意味着这个维度上的熵比较大或者是他的不确定性比较高,他的信息增益比较大,也就是他能够给我带来减小不确定的可能性最大。二维用线做切分三维用面做切分,从三个维度中找哪个是波动/方差最大的。假设现在要与(6,1)最接近的3个点,首先是第一个维度6,在7的左侧,然后顺着左侧往下走,紧接着第二个维度1,判断在4的左侧还是右侧?在左侧,找到了(2,3)是离她最接近的点。然后沿着(2,3)这个叶子节点回溯到父节点(5,4),计算加上父节点满不满足3个,不满足,父节点还有一侧(4,7),再计算加上这个节点满不满足3个,发现满足,就不再回溯到上一个父节点。

K-means Tree VS K-D Tree

工程经验之ANN库

海量数据索引与近似最近邻随记相关推荐

  1. 自然语言处理--词向量使用基于 Annoy 的高级索引(近似最近邻)来查找最近邻词项

    我们可以使用 Annoy 对 word2vec 向量建立索引并将其结果与 gensim 的 KeyedVectors索引进行对比( 像 Annoy 这样的局部敏感哈希使潜在语义索引成为现实): fro ...

  2. 极度快速的近似最近邻搜索算法(EFANNA)-学习笔记

    博客地址:www.mzwang.top 微信公众号:whenever5225 引言 极度快速的近似最近邻搜索算法(EFANNA)是NSG的作者之前的一篇论文,这篇论文主要介绍用更快的方法建立KNN图并 ...

  3. LSH 近似最近邻查找

    一.什么是近似最近邻查找 NN与ANN NN,Nearest Neighbor Search,最近邻查找问题 KNN,K-Nearest Neighbor,k最近邻,查找离目标数据最近的前k个数据项 ...

  4. 余弦相似度 高维数据_海量高维数据与近似最近邻

    在实际工程当中,我们常常会遇到海量的数据,那作为一个数据挖掘准从业人员,如何从海量的数据当中挖掘出他们数据之间的关系和规律就显得尤为重要了. 今天我要讲的时海量高维数据及其近似最近邻方案. K-近邻算 ...

  5. 快速近似最近邻算法_数据科学家指南,以选择最佳近似最近邻算法

    快速近似最近邻算法 by Braden Riggs and George Williams (gwilliams@gsitechnology.com) Braden Riggs和George Will ...

  6. 基于 Milvus 构建的近似最近邻(ANN)搜索引擎

    ✏️  作者介绍: 周充,格像科技后端工程师 需求背景 根据格像科技公司的业务需求,我们需要搭建一个近似最近邻(Approximate Nearest Neighbor,即 ANN)搜索引擎,以便将在 ...

  7. 最近邻查找最优算法_近似最近邻算法-annoy解析

    转自https://www.cnblogs.com/futurehau/p/6524396.html Annoy是高维空间求近似最近邻的一个开源库. Annoy构建一棵二叉树,查询时间为O(logn) ...

  8. KNN(二)--近似最近邻算法ANN

     原文: http://www.68idc.cn/help/buildlang/ask/20150118176470.html 高维数据快速最近邻算法FLANN 1.     简介 在计算机视觉和 ...

  9. 近似最近邻搜索ANN(Approximate Nearest Neighbor)

    目前ANN近似近邻搜索有两种比较流行的方法:树方法和哈希方法. 特点概括 基于树的方法的一些特点概括: 递归了划分数据:分而治之.Recursively partition the data: Div ...

最新文章

  1. 'ScriptModel' object has no attribute 'save'
  2. 爬过这 6 个坡,你就能对 Linux 操作系统了如指掌
  3. 智能窗帘研究制作_基于51单片机智能窗帘的研究与设计
  4. 怎样洗头使头发变黑变多
  5. python pip下载安装教程_python详细安装pip教程
  6. 计算机科技英语论文,计算机科技英语论文.doc
  7. JSON Server在快速开发过程中的使用
  8. excel复制后卡死的解决办法
  9. CV之ModelScope:基于ModelScope框架的人脸人像数据集利用DCT-Net算法实现人像卡通化图文教程之详细攻略
  10. ECMAScript和JavaScript的区别
  11. 理光Ricoh Pro 907EX 一体机驱动
  12. c# Pdf文件加密和解密
  13. html简单歌词同步教程,HTML5实现歌词同步(示例代码)
  14. java后端和web_从java和web角度分析前端好还是后端好
  15. 机器学习:04 Kaggle 信用卡欺诈
  16. Oracle基础——第一章 Oracle简介
  17. 八大排序 - (详解)
  18. 一些常用的ubuntu软件安装方式
  19. Matlab2022a无法识别vs2019编译器,未检测到支持的编译器,错误使用Mex -setup error cannot find support compiler
  20. 思杰虚拟服务器退出管理主机,详解Citrix思杰XenServer虚拟化(8)

热门文章

  1. 第4章 Python 数字图像处理(DIP) - 频率域滤波12 - 选择性滤波 - 带阻
  2. .net runtime占用cpu_.net 中的StringBuilder和TextWriter区别
  3. ffmpeg学习笔记-native原生绘制
  4. 【转】winform回车变为tab
  5. vs文件上传失败--超过最大字符限制
  6. mysql中的blob和text区别
  7. Spring集成Quartz定时任务框架介绍
  8. jQuery中的几个模块总结
  9. 动态添加ContextMenuStrip项(ToolStripItem)
  10. java中的getfirst_Java LinkedList getFirst()用法及代码示例