如何对数据集进行分区以减少kNN的时间复杂度?

时间:2018-03-21 09:11:49

标签: machine-learning computer-vision knn

我正在使用kNN进行基于内容的图像检索。

数据集通常包含超过1000万张图像,每张图像都会转换为尺寸超过300的矢量。

这是很多数据,加载到内存并找到kNN很慢。

我想知道我是否能够以某种方式将数据集划分为更小的数据集,并在多个服务器之间分配较小的数据集。 在查询时,我只需找出要查看的正确分区,并且只在该分区上执行kNN。

1 个答案:

答案 0 :(得分:1)

一般来说,我认为你不能让普通的kNN比O(n)更快地工作(根据评论,这就是你所看到的)。

但是,您可能需要查看approximate nearest neighbor算法。它们允许更快的搜索和/或大大改善的内存占用,以及某些预处理和非保证全局最优的价格(尽管性能受限)。

一些相关资源(不知道您使用的语言):