我正在使用kNN进行基于内容的图像检索。
数据集通常包含超过1000万张图像,每张图像都会转换为尺寸超过300的矢量。
这是很多数据,加载到内存并找到kNN很慢。
我想知道我是否能够以某种方式将数据集划分为更小的数据集,并在多个服务器之间分配较小的数据集。 在查询时,我只需找出要查看的正确分区,并且只在该分区上执行kNN。
答案 0 :(得分:1)
一般来说,我认为你不能让普通的kNN比O(n)更快地工作(根据评论,这就是你所看到的)。
但是,您可能需要查看approximate nearest neighbor算法。它们允许更快的搜索和/或大大改善的内存占用,以及某些预处理和非保证全局最优的价格(尽管性能受限)。
一些相关资源(不知道您使用的语言):