随机森林修剪
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 或非常小的值将暗示哪些树可以从集成中移除,而对准确性的影响很小。
【讨论】:
以上是关于随机森林修剪的主要内容,如果未能解决你的问题,请参考以下文章