高维最近邻搜索的最佳数据结构

2024-05-13

我实际上正在处理高维数据(~50.000-100.000 个特征),并且必须对其执行最近邻搜索。我知道随着维度的增长,KD 树的性能很差,而且我还了解到,一般来说,所有空间分区数据结构都倾向于对高维数据执行详尽的搜索。

此外,还有两个重要事实需要考虑(按相关性排序):

  • 精确:必须找到最近的邻居(不是近似值)。
  • Speed:搜索必须尽可能快。 (创建数据结构的时间并不重要)。

所以,我需要一些建议:

  1. 执行 k-NN 的数据结构。
  2. 如果使用 aNN(近似最近邻)方法会更好,请将其设置得尽可能准确?

我可以在高维空间中进行神经网络搜索吗?

No.由于维数灾难,在较低维度中执行最近邻搜索的数据结构在高维度中表现不佳。事实上,查询时间几乎与暴力破解相同,因此毫无价值。

因此,在高维空间中,人们应该追求近似最近邻(安)搜索。说实话,这是一个must.

哪个数据结构来执行 ANN?

我建议使用 LSH,或者一些 RKD 树。在我的answer https://stackoverflow.com/questions/26641937/two-sets-of-high-dimensional-points-find-the-nearest-neighbour-in-the-other-set/26664557#26664557在这里,我提到了一些在 C++ 中执行 ANN 的优秀库。但是,请注意,LSH 解决了 R 最近邻问题,因此您指定参数 R,它实际上是半径。然后,LSH将从查询点寻找R内部的NN,因此你不能真正请求k NN's.

另一方面,RKD 树可以做到这一点并返回给你kNN的。我有一个项目,它构建了 RKD 树森林并用 C++ 执行 ANN 搜索,但它仅针对高维度。它可以在 1 秒内处理 960 维 10^6 图像的 GIST 数据集,大约 90% 的输出是真正的最近邻。名字是kd-GeRaF https://gsamaras.wordpress.com/projects/#geraf。它将在下个月更新为分布式版本,但它已经经过测试并可以使用。它还有一个可爱的标志。 :)


我也觉得你应该阅读我的answer https://stackoverflow.com/a/26266337/2411320,这表示最佳数据结构取决于数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高维最近邻搜索的最佳数据结构 的相关文章

随机推荐

  • 使用特定 HTTP 方法链接到页面 (DELETE)

    如何像 Rails 那样链接到页面并让浏览器使用 DELETE 方法调用它 我试过 a href DELETE ME a 但不起作用 我使用 Node js 所以我可以用它来处理 DELETE 方法 你不能 链接只会触发 GET 请求 您可
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • 无法在 Eclipse 中连接到虚拟机

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 当我尝试在 Eclipse 上调试任何项目时 我突然开始遇到这个奇怪的错误 我不记得有什么改变让这个问题突然出现 Launch
  • File.delete 上的 Ruby (Errno::EACCES)

    我试图在使用完一些 XML 文件后删除它们 其中一个文件给了我这个错误 delete Permission denied monthly builds xml Errno EACCES Ruby 声称该文件受到写保护 但我在尝试删除它之前设
  • 将此 XML 反序列化为对象的最佳方法

    在我见过的与我的类似的其他示例中 有一个根节点 然后是一个数组节点 然后是一堆数组项 我的问题是 我的根节点is我的数组节点 所以我见过的示例似乎不适合我 而且我无法更改 XML 架构 这是 XML
  • ASP.Net 的最佳免费文件管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 如何在 kivy FileChooser Python 中访问所有硬盘

    如何使用 kivy 1 11 1 中的列表视图或图标视图在 kivy FileChooser 中显示系统 C X J 中安装的所有硬盘驱动器 我遇到了同样的问题 最终通过为驱动器添加 快捷方式 按钮解决了这个问题 我首先使用以下命令获取所有
  • SQL Server 表中最多可以有多少行

    通常我们可以给出更多的值 在SQL Server中一个表最多可以有多少行 之后我们就无法添加新行了 有一些边缘情况 除了明显的磁盘空间问题之外 SQL Server 会阻止您添加更多行 而不是确切的行数 但值得一提 你有一个IDENTITY
  • 输出和导出之间的区别

    在 CloudFormation 中 我们能够从模板输出一些值 以便其他进程 堆栈等可以检索它们 这通常是某个名称 可能是 URL 或在堆栈创建 部署 过程中生成的名称等 我们还能够从模板 导出 返回值作为 输出 与 导出 之间有什么区别
  • 指向特定工作表的超链接

    我想从另一个电子表格中的超链接打开 Google 表格的特定工作表 我的主电子表格中有不同的链接 每个链接都应该有一个指向同一从属电子表格但指向不同工作表的超链接 我知道超链接功能 但它不会转到特定的工作表 您可以使用此自定义脚本 工具 g
  • 是否存在比 SVN 更快的集中版本控制?

    我已经使用 SVN 很长时间了 现在我们正在尝试使用 Git 我在这里谈论的不是中心化 去中心化的争论 我唯一关心的是速度 后一个工具要快得多 但有时 我需要使用一种集中式方法 这种方法比分散式方法更简单 更简单 学习曲线非常快 这节省了大
  • 如何防止灯具与 django post_save 信号代码冲突?

    在我的应用程序中 我想在新用户注册时在某些表中创建条目 例如 我想创建一个用户配置文件 然后该配置文件将引用他们的公司和他们的一些其他记录 我用 post save 信号实现了这一点 def callback create profile
  • 在 jquery 中隐藏/显示图像

    如何在单击超链接时显示 隐藏图像 a href Bandwidth a a href Upload a p align center img src media img close pn p
  • 在CDI容器中手动注册类

    我有一组通过反射实例化的类 因此它们不由 CDI 容器管理 并且上下文不会进行任何注入 我的问题是 有没有办法在 CDI 上下文中注册这些类 以便这些类由上下文管理 下面是我创建类的方式 String clazz org myorg thi
  • 使 Django 1.3.1 中的视图缓存过期

    我正在尝试使模型上的视图级缓存过期post save 这是通过设置的https docs djangoproject com en 1 3 topics cache from olddocs the per view cache https
  • amchart 访问结构化数据对象内的值

    如何向 AMchart 中的 json 对象添加额外数据 当我的 obj 很简单时 所有内容都会解析 var data year 1930 italy 4 germany 5 1 uk 3 year 1934 italy 1 germany
  • C++ 输出到文本文件时换行符[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 这只是一个简单的问题 但我正在尝试将
  • PHP preg_replace - www 或 http://

    真正坚持看似简单的事情 我有一个聊天框 喊叫框 其中可能输入任意 URL 我想找到每个单独的 URL 用空格分隔 并将其包装在标签中 例子 Harry you re a http google com http google com wiz
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要