随机森林修剪

Posted

技术标签:

【中文标题】随机森林修剪【英文标题】:Random Forest pruning 【发布时间】:2015-10-15 03:48:10 【问题描述】:

我有 sklearn 随机森林回归器。它非常重,1.6 GB,并且在预测值时工作很长时间。

我想修剪它以使其更轻。据我所知,对决策树和森林没有实施修剪。我自己无法实现,因为树代码是用 C 编写的,我不知道。

有人知道解决办法吗?

【问题讨论】:

我认为你应该限制树的大小(最大叶节点,最大深度,最小样本分割......) ***.com/questions/7830255/… invoketheshell,谢谢你的链接。主要思想是使用森林的并行状态来使用所有 CPU 内核。就我而言,它已经完成了。 【参考方案1】:

树木的大小可以为您提供解决方案。尝试限制森林中树的大小(最大叶节点、最大深度、最小样本拆分...)。

【讨论】:

这意味着重建回归器。选择参数的过程很长,所以我想尽可能修改现有的回归量。 随机森林分类器(理论上)需要运行所有的树分类器,它们的投票产生最终的决定。 @invoketheshell 建议您将问题并行化,如果您根本不喜欢触摸分类器(并修剪树),这是唯一的选择。将更多硬件投入到问题中可以节省您的时间;)。【参考方案2】:

您可以尝试整体修剪。这归结为从您的随机森林中删除一些构成它的决策树。

如果随机移除树,预期结果是集成的性能会随着移除树的数量而逐渐恶化。但是,您可以做一些更聪明的事情,例如移除那些预测与其余集成的预测高度相关的树,从而显着修改整个集成的结果。

或者,您可以训练一个线性分类器,将单个集成的输出用作输入,并在训练中加入某种 l1 惩罚,以在分类器上实施稀疏权重。权重为 0 或非常小的值将暗示哪些树可以从集成中移除,而对准确性的影响很小。

【讨论】:

以上是关于随机森林修剪的主要内容,如果未能解决你的问题,请参考以下文章

10、决策树集成--随机森林

决策树与随机森林

决策树与随机森林算法

随机森林

随机森林原理

随机森林