gpt4 book ai didi

hadoop - 如何在hadoop mapreduce中将文件分区为较小尺寸以执行KNN

转载 作者:行者123 更新时间:2023-12-02 21:42:14 25 4
gpt4 key购买 nike

在类似KNN的算法中,我们需要将模型数据加载到缓存中以预测记录。

这是KNN的示例。

因此,如果模型将是一个较大的文件,例如1 GB或2 GB,我们将能够将其加载到分布式缓存中。
示例:

为了预测1 otcome,我们需要找到该单个记录与模型结果中所有记录之间的距离,并找到最小距离。因此,我们需要掌握模型结果。如果文件很大,则无法将其加载到分布式缓存中以查找距离。

一种方法是将模型Result拆分/划分为一些文件,并对该文件中的所有记录执行距离计算,然后找到classlabel的最小和最大出现次数并预测结果。

我们如何分割文件并在这些分区上执行操作?

ie  1 record <Distance> file1,file2,....filen
2nd record <Distance> file1,file2,...filen

这就是我的想法。

还有没有其他办法。

任何指针都会帮助我。

最佳答案

我认为您对数据进行分区的方式主要取决于数据本身。

假设您有一个包含一堆行的模型,并且想要找到k个与输入中的数据接近的行,那么简单的解决方案是将它们逐一进行比较。这可能会很慢,因为要经历数百万次的1-2GB数据(我假设您要分类的记录很多,否则不需要hadoop)。

这就是为什么您需要有效地修剪模型(分区)以便仅比较那些最可能是最接近的行的原因。这是一个难题,需要您了解所操作的数据。

您可以使用其他技巧来提高性能:

  • 对输入数据进行预排序,以便将来自同一分区的要比较的输入项放在一起。再次取决于您操作的数据。
  • 使用随机访问索引文件(例如Hadoop的Map文件)可以更快地找到数据并将其缓存。

  • 最后,将模型存储在Lucene索引中实际上可能更容易,因此您可以通过查找索引来实现分区的效果。在此对数据进行预排序仍然很有帮助。

    关于hadoop - 如何在hadoop mapreduce中将文件分区为较小尺寸以执行KNN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27957237/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com