Hadoop:用多个树训练大数据(以GB为单位)(采样说N,例如x RandomTree)和测试

时间:2012-11-02 01:13:41

标签: hadoop mapreduce machine-learning classification weka

我想写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. 在mapper中,我可以准确地采样N个记录并生成200个小记录 培训数据文件?
  2. 测试所有200 第一个选项上的每条记录 我想到每个reducer都会运行小测试(部分测试文件) 对于所有树木。 第二个选项我不确定,如何实现这一点 是,独立运行200树,测试文件在分布式 缓存,预测每个测试记录。

1 个答案:

答案 0 :(得分:1)

这取决于你的工作形式。

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

但正如你所说这是一项功课,我认为你不需要确保它正好是N. 特别是,在您抽样时,准确记录N条记录有什么好处?

尝试以下方法:

  1. 确定记录的总大小。
  2. 让每个映射器发出每个记录,每个树的可能性为N / D(=减速器的密钥)。
  3. 让减速器在收到的所有记录上训练树。