【问题标题】:Are KD trees still efficient when most/all of the attributes are discrete and distance is equivalent?当大多数/所有属性都是离散的并且距离相等时,KD树仍然有效吗?
【发布时间】:2011-05-22 14:17:54
【问题描述】:

人们总是吹捧 KD 树非常适合最近邻搜索。但是,如果您的数据集都是离散值,没有真正的距离度量,它们仍然有效吗?

例如,如果您的属性类似于[black, blue, red], [bread, milk, cheese], [right, left, straight, curved],则没有连续性,测量距离的唯一方法是汉明距离(我们检查有多少与测试示例等效)。 KD树在这些情况下仍然有效吗?怎么会?

【问题讨论】:

  • 一维模拟当然似乎仍然有效(我们可以分配一个枚举来帮助构建树),但关键是不必检查树中的所有叶子来找到匹配项.. ??
  • 我冒昧地猜测,如果您使用的数据结构(例如 KD-tree)基于使用不适合可测量性的数据制定一些离散度量的能力,那么您'使用了错误的数据结构。也就是说,我会在理论计算机科学 stackexchange 上问这个问题。您可能会得到更好/更深入的答案。
  • 感谢您的回复。我实际上只是想自学一些机器学习方法,现在正在研究最近的邻居。 KD 树似乎是该算法的标准数据结构。只是不确定它如何适应不同的数据集
  • 我也会考虑更多地考虑这个指标。我不知道您实际问题中的所有属性,但是如果颜色具有诸如“黑色”、“绿色”和“黄绿色”之类的值,我不会认为黑色和绿色之间的距离相同作为绿色和黄绿色之间的距离。
  • 无论如何,d(x, y) = \delta_{x,y} 适用于离散值,并满足数学意义上的度量条件,所以我想它应该可以工作[?]

标签: data-structures machine-learning nearest-neighbor kdtree


【解决方案1】:

我认为,如果您的值集没有度量标准,那么考虑什么是(最近的)“邻居”可能是合适的。具体来说,如何在没有距离度量的情况下定义集合中的元素是彼此相近还是相远?

话虽如此,KD-trees 可以用于离散集。一些效率本质上来自能够划分数据,因此我们可以通过一次比较消除大量元素,就像任何其他平衡树一样。但是,最自然的用途是在具有有用且有意义的拓扑的集合上。

【讨论】:

    【解决方案2】:

    KD 树仍然需要维度的概念。您的示例并未根据维度(离散与否)来描述数据点,因此不适用 KD 树。此外,KD 树依赖于将此类数据映射到维度上可能没有的一些不等式。

    话虽如此,如果离散数据如前所述整齐地映射,则不是问题——计算机只存储离散近似值。

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2010-11-13
      相关资源
      最近更新 更多