我正在尝试为图像特征构建KD树(独立)。我已经提取了图像特征,该特征包含假设 1000 个浮点值。
使用map-reduce根据分类(例如,猫,狗,枪)在集群的节点之间分配图像,即每个节点将包含一堆相似的图像,然后在每个节点上构建图像的KD树。我对如何建造这棵树感到困惑。
那么如何使用map-reduce构建KD树呢?每个节点将包含树,对吧?分发图像的逻辑是什么?在构建 KD 树时,我应该在树(即左子或右子)中添加图像特征向量?
任何帮助,不胜感激。提前谢谢。
我不认为 k-d-tree 适合您的数据。以下是维基百科对此的看法:
K-D 树不适合在高维空间中有效地查找最近的邻居。作为一般规则,如果维数为 k,则数据中的点数 N 应为 N>> 2^k。否则,当k-d树与高维数据一起使用时,树中的大部分点都会被评估,效率并不比穷举搜索好,而应该使用近似最近邻方法。
您的特征向量的维数为 1000,这意味着您应该有大约 10^300 张图像,这是不太可能的。
我建议你看看局部性敏感哈希,这是提到的高维数据的近似最近邻搜索之一。
由于维基百科并不总是学习复杂事物的最佳场所,我建议您查看苏黎世联邦理工学院数据挖掘课程的相应讲座幻灯片。碰巧我在本学期正在学习这门课程。