Hadoop: 使用多个树(例如采样N个,用于x个随机树)训练大数据(GB级别)并测试

我想编写MapReduce程序(可能需要多轮)来

1. 从大数据中采样N条记录 - 用于X个随机树2. 训练每个树(总共X个)3. 然后在所有这些树上测试记录

顺序执行,

for X = 0 to 199:    - 从大数据中采样N条记录    - 训练这个树    - 对所有测试记录进行测试

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

我对以下几点不确定

  1. 在mapper中我能否准确采样N条记录并生成200个小训练数据文件?
  2. 要在所有200个树上测试每条记录,第一个选项我想的是每个reducer会对ALL树运行小测试(测试文件的一部分)。第二个选项我不确定如何实现,即独立运行200个树,测试文件放在分布式缓存中,为每个测试记录进行预测。

回答:

这取决于你的工作方式有多正式。

一个正式的mapper不能准确采样N条记录。因为它无法保持计数器,也不知道总数据大小。一个实际的Hadoop mapper当然可以。但他可能不知道总共会收到多少条记录。

但正如你所说这是作业,我认为你不需要确保是准确的N条记录。特别是,你在进行采样,拥有准确的N条记录有什么好处?

尝试以下方法:

  1. 确定记录的总大小。
  2. 让每个mapper以N/D的概率向每个树(= reducer的key)发出每条记录。
  3. 让reducer在它收到的所有记录上训练树。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注