【问题标题】:KD-Tree Implementation in SQLSQL中的KD树实现
【发布时间】:2011-07-27 01:42:42
【问题描述】:

有人知道用 SQL 实现的KD-Tree 或类似的空间索引吗?我正在考虑使用 Python 和 Django 的 ORM 编写自己的代码,但我想避免重新发明轮子。

我有一个包含数百万行的表,每行包含代表图像特征数据的 128 列。给定一个任意的 128 元素长的图像特征列表,我想使用 KD-Tree 在数据库中找到 N 个最相似的图像。我发现了很多 KD-Tree 实现,但它们似乎都只加载到本地内存中,不能扩展或与数据库通信。

【问题讨论】:

  • 你最终使用了什么解决方案?

标签: python sql database data-mining kdtree


【解决方案1】:

我可能有点过分了,但最好的选择可能是使用 Postgresql 中的 Gist / Gin 索引

【讨论】:

  • 我不确定你的意思。根据文档,这些索引类型用于全文搜索。我看不出它们将如何应用于 K 近邻问题。
  • GIN 索引是 Gist 索引旨在成为通用索引框架的一种形式,有人在它们上面放了一个 kd-tree (cs.purdue.edu/spgist/papers/icde06.pdf)。
【解决方案2】:

KD-tree 不适用于高维数据,128 维会相当高。 KD-tree 在树的不同级别索引每个维度,并且在执行查询时,该算法将执行大量回溯(搜索分支的两侧)并最终搜索树中的大部分点。当这种情况发生时,使用树形结构的优势就会消失,详尽的比较最终会运行得更快。

您可能希望找到可以将数据映射到的现有图像相似性搜索系统。 Here is one called Lire 从图像中提取特征并使用 Lucene 对其进行索引。

如果您的工作更注重研究,您可能需要阅读度量空间索引和近似 k-最近邻搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 2011-05-11
    • 2017-08-09
    • 2013-07-22
    • 2016-09-22
    • 2022-10-15
    • 2012-11-09
    • 2014-10-16
    相关资源
    最近更新 更多