为什么k-d树不用于高维数据?

时间:2016-05-10 08:13:33

标签: algorithm

在k-d树的页面上引用维基百科:

  k-d树不适合有效地找到最近的树   高维空间中的邻居。作为一般规则,如果   维数是k,数据中的点数N应该是N>>    2K。否则,当k-d树与高维数据一起使用时,将评估树中的大多数点并且效率为   没有比穷举搜索更好,[11]和近似   应该使用最近邻方法。

我不明白维度(k)和数据中的点数(N)之间的区别,以及为什么关于何时k-d树不方便的陈述是真的。

1 个答案:

答案 0 :(得分:7)

k是数据的维度,而n是数据集中点的数量。因此,如果您的数据集包含1000万个点,并且每个点都有3个维度,则k为3,n为1000万。

k-d树不适合在高维度上找到最近邻居的原因与所谓的curse of dimensionality有关。 k-d树重复使用沿着单个维度的分割,但是当处理高维数据时,在一个维度上知道关于(欧几里德)距离的某些东西对于整个空间中的距离几乎没有说明。

想要数据集超过2 k 的原因非常直观:我们将数据集分成两个大小相等的两半。如果我们有少于2个 k 数据点,过了一段时间就没有更多的数据需要拆分!例如,如果你有3个维度中的4个点,我们可以在x上拆分,给出两组两个点。我们将其拆分为y,给出四组一点。但是现在我们不能再分裂了z!