1

我想写 MapReduce(可能是多轮!)

1. Sample N records from Large data - for say X RandomTree
2. Train each tree (totally X)
3. And then test records on all these trees

依次,

for X = 0 to 199:
    - sample N records from Large data
    - Train this tree
    - test for all test records

这是我的作业问题,所以我只需要想法..!

我不确定

  1. 在映射器中,我可以准确地采样 N 条记录并生成 200 个小型训练数据文件吗?
  2. 为了测试所有 200 个第一个选项 的每条记录,我认为每个 reducer 将为所有树运行小测试(测试文件的一部分)。第二个选项我不确定,如何实现是,独立运行 200 棵树,测试文件在分布式缓存中,预测每个测试记录。
4

1 回答 1

1

这取决于你工作的正式程度。

正式的映射器不能准确地采样 N 条记录。因为它不能保留一个计数器,并且它不知道总数据大小。Hadoop 中的实用映射器当然可以。但他可能不知道他总共会收到多少张唱片。

但是正如您所说,这是一项家庭作业,我认为您不需要确保它恰好是 N。特别是,当您进行抽样时,恰好拥有 N 条记录有什么好处?

尝试以下操作:

  1. 确定记录的总大小。
  2. 让每个映射器向每棵树发出具有 N/D 可能性的每条记录(= 归约器的键)。
  3. 让reducer根据它收到的所有记录训练树。
于 2012-11-02T12:37:37.707 回答