渐进式随机森林?

时间:2013-07-08 09:00:10

标签: machine-learning classification random-forest

我正在考虑使用随机森林来解决分类问题。数据按顺序排列。我打算先使用N(500)来训练分类器。然后,使用分类器对数据进行分类。它会犯错误,有时可以记录错误。

我的问题是:我可以使用那些错误分类的数据来重新训练原始分类器以及如何进行重新分类?如果我只是将错误分类的那些添加到大小为N的原始训练集中,那么错误分类的重要性将被夸大,因为忽略了校正的分类。我是否必须使用所有数据重新训练分类器?还有哪些分类器可以做这种学习?

3 个答案:

答案 0 :(得分:1)

您所描述的是Boosting元算法的基本版本。

如果您的潜在学习者有一种自然的方式来处理样本权重,那就更好了。我没有尝试过增强随机森林(通常在单个浅层决策树上使用增强功能,深度限制在1到3之间),但这可能有用,但可能会非常耗费CPU。

或者,您可以与不同的PRNG种子值并行训练几个独立的增强决策树桩,然后像对待随机森林一样汇总最终决策函数(例如投票或平均类概率分配)。

如果您使用的是Python,则应该查看scikit-learn documentation on the topic

免责声明:我是一名scikit-learn撰稿人。

答案 1 :(得分:1)

以下是我对您的问题的理解。

您有一个数据集并创建两个子数据集,例如训练数据集和评估数据集。 如何使用评估数据集来提高分类性能?

这个问题的关键是要找到一个更好的分类器,但要找到一个好的评估方法,然后在生产环境中有一个好的分类器。


评估目的

由于评估数据集已经过评估标记,现在有办法实现这一点。您必须使用其他方式进行培训和评估。

常见的方法是交叉验证;

在数据集中随机化您的样本。从初始数据集创建十个分区。然后进行以下十次迭代:     取所有分区但是第n个用于训练,并用第n个进行评估。

在此之后取十次运行的误差的中位数。 这将为您提供您的分类器的错误率。 最少运行会给你最坏的情况。


生产目的

(不再评价)

您不再关心评估。因此,获取所有数据集的所有样本并将其提供给您的分类器进行培训(重新运行complet简单培训)。结果可以在生产环境中使用,但不能再使用您的任何数据进行评估。结果与先前分区设置中的最坏情况一样最佳。

流程样本处理

(制作或学习)

当您处于随时间产生新样品的流程中时。您将面临一些案例,其中一些样本正确错误案例。这是想要的行为因为我们想要系统 改善自己。如果你只是纠正错误的叶子,经过一段时间你的 分类器与原始随机森林没有任何共同之处。你会做的 一种贪婪的学习方式,如meta taboo search。显然我们不想这样

如果我们尝试在每次有新样本时重新处理所有数据集+新样本,我们将尝试可怕的低延迟。有时,解决方案就像人类一样 后台进程运行(当服务使用率低时),所有数据都获得一个complet 再学习;并在最后交换旧的和新的分类器。

有时睡眠时间太短,无法进行complet重新学习。所以你必须使用节点计算clusturing like that。它需要大量的开发,因为你可能需要重新编写算法;但那时你已经拥有了你能找到的最好的计算机。

注意:交换过程对掌握来说非常重要。您应该已经在生产计划中拥有它。如果要更改算法,该怎么办?备份?标杆?停电?等...

答案 2 :(得分:0)

我会简单地添加新数据并定期重新训练分类器,如果它不是太昂贵的话。

保持平衡的一个简单方法是添加重量。

如果您将所有阳性样本按1 / n_positive和所有阴性样本按1 / n_negative(包括您正在获取的所有新阴性样本)称重,那么您不必担心分类器获取失去平衡。