39

有几个最近邻 R 包(例如,FNN、RANN、yaImpute),但它们似乎都不允许节省 NN 数据结构(覆盖树、KD 树等),因此无需计算新查询的最近邻重建整棵树。R中有这样的功能吗?

我正在寻找一个返回数据结构的函数,当新数据到达时我可以增量更新以执行近似 K 最近邻搜索。

4

2 回答 2

2

没有 NN 包这样做是有充分理由的。

原因是“NN 数据结构”必然包括所有输入数据点(以KD 树的形式),因此对输入数据没有空间节省。看来不必为每个新输入重新创建 KD-tree 会节省时间,但事实并非如此,唉。

原因是构建 KD 树的时间通常线性算法要差。这意味着,对于较大的输入,在构建 KD-tree之前对数据进行排序是有意义的,因为这样可以更快地生成 KD-tree,并且会更好地平衡,这也将改善搜索(它也比对数更差) , 一般来说)。当然,这种方法会加速建模和评估,但会阻止增量更新。

我认为你最好的选择是找到一个通用的KD-tree 包并使用它。

于 2013-03-18T18:53:01.257 回答
0

nabor 包允许您构建一棵树并随后对其执行查询。但我不认为它可以让你增量更新树。

于 2015-08-24T04:44:43.150 回答