有几个最近邻R包(例如,FNN,RANN,yaImpute)但它们似乎都不允许保存NN数据结构(覆盖树,KD树等),以便新查询的最近邻居可以计算而不重建整棵树。 R中有没有这样的功能?
我正在寻找一个函数,它返回一个数据结构,当新数据到达时,我可以逐步更新,以执行近似K最近邻搜索。
答案 0 :(得分:2)
有一个很好的理由说明没有NN包可以做到这一点。
原因是“NN数据结构”必然包含所有输入数据点(以KD tree的形式),因此输入数据没有空间节省。似乎没有为每个新输入重新创建KD树节省 time ,但事实并非如此,唉。
原因是构建KD树的时间通常比线性的更差。这意味着,对于大型输入,在构建KD树之前排序数据是有意义的,因为这样可以更快地生成KD树,并且可以更好地平衡,这也将改善搜索(一般来说,它也比对数更差)。当然,这种方法可以加速建模和评估,但不鼓励增量更新。
我认为,如果要查找通用KD-tree package并使用它,最好的选择。
答案 1 :(得分:0)
nabor包允许您构建树并随后对其执行查询。但我不认为它可以让你逐步更新树。