首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渐进随机森林?

渐进随机森林?
EN

Stack Overflow用户
提问于 2013-07-08 17:00:10
回答 3查看 1.5K关注 0票数 1

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

我的问题是:我可以使用这些错误分类的数据来重新训练原始分类器吗?如果我简单地将错误分类的样本添加到大小为N的原始训练集中,那么错误分类样本的重要性将被夸大,因为更正后的分类样本会被忽略。我必须使用所有数据重新训练分类器吗?还有哪些分类器可以进行这种学习?

EN

回答 3

Stack Overflow用户

发布于 2013-07-09 00:58:04

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

如果你的底层学习者有一种自然的方法来处理样本权重,那就更好了。我还没有尝试提升随机森林(通常boosting用于深度限制在1到3之间的单个浅层决策树),但这可能会起作用,但可能会占用大量CPU。

或者,您可以使用不同的PRNG种子值并行训练多个独立的增强决策树桩,然后聚合最终决策函数,就像您对随机森林所做的那样(例如,投票或平均类概率分配)。

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

免责声明:我是一名scikit-learn贡献者。

票数 1
EN

Stack Overflow用户

发布于 2013-07-09 03:05:46

这是我对你的问题的理解。

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

这个问题的重点不是找到一个更好的分类器,而是找到一个好的方法来评估,然后在生产环境中有一个好的分类器。

评估目的

由于评估数据集已被标记为评估,因此现在有办法做到这一点。您必须使用另一种方法进行培训和评估。

一种常见的方法是使用cross-validation

对数据集中的样本进行随机化。从初始数据集创建10个分区。然后进行以下十次迭代:使用除第n个分区之外的所有分区进行训练,并使用第n个分区进行评估。

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

生产目的

(不再进行评估)

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

流样本处理

(生产或学习)

当您处于随着时间推移而产生新样本的流程中时。你将面临一些样本纠正错误的情况。这是我们想要的行为,因为我们希望系统自我改进。如果你只是就地纠正错误中的叶子,在一段时间后,你的分类器将与原始的随机森林没有任何共同之处。你将会做一种贪婪的学习,比如meta taboo search。很明显,我们不想要这个。

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

有时睡眠时间太短,无法完全重新学习。因此,您必须使用节点计算集群like that。它花费了大量的开发,因为你可能需要重写算法;但在那个时候,你已经拥有了你能找到的最大的计算机。

注意:交换过程对于掌握是非常重要的。你应该已经在你的生产计划中有它了。如果你想改变算法,你该怎么做?后援?基准测试?断电了吗?等等。

票数 1
EN

Stack Overflow用户

发布于 2015-05-20 03:33:14

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

保持平衡的一个简单方法是增加权重。

如果你用1/n_positive加权所有正样本,用1/n_negative加权所有负样本(包括你得到的所有新的负样本),那么你就不必担心分类器失去平衡。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17522608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档