【发布时间】:2016-07-16 07:56:09
【问题描述】:
我有一个非常大的数据框,其中包含 790,000 行和 140 个预测变量。其中一些是相互密切相关的,并且在不同的尺度上。使用randomForest 包,我可以只使用一小部分数据样本在每个核心上种植森林,使用foreach 并将它们与combine() 函数合并以获得一棵大树,如下所示:
rf.STR = foreach(ntree=rep(125, 8), .combine=combine, .multicombine=TRUE, .packages='randomForest') %dopar% {
sample.idx = sample.int( nrow(dat), size=sample.size, replace=TRUE)
randomForest(x=dat[sample.idx,-1, with=FALSE],
y=dat[sample.idx, retention], ntree=ntree)
}
不同尺度上的相关变量让我想使用party 包中的条件随机森林,但是cforests 没有combine() 方法,所以我不确定如何组合几个cforest 对象来获得一个重要性图或一个预测。
有没有办法在较小的数据子集上训练一个大的 cforest,或者制作几个小的 cforest 并将它们组合成一个更大的条件森林模型?
【问题讨论】:
-
试试
h2o可以下载的包here。非常快,开源并且并行运行。更新如此之快,以至于他们的文档有时缺乏一致性。 -
感谢指点!从阅读 RF 文档来看,它似乎没有条件树。由于我的一些预测变量是高度相关的,如果我运行通常的 RF,变量重要性会将一堆高度预测但相关的变量放在顶部,这比只选择其中一个变量有用。
-
实现
party::cforest不支持并行化(据我所知)。在(较慢的)重新实现partykit::cforest中,我们添加了对并行化的支持,但目前partykit版本尚未提供旧party实现的所有功能。具体来说,目前没有实施可变重要性度量。因此,这对您没有多大用处。您可以直接联系party维护者(Torsten Hothorn)是否有建议如何拆分party::cforest的学习。 -
谢谢,阿奇姆。这可能是我在这个主题上要做的最好的事情。如果您将其作为完整答案提交,我会接受它,直到partykit 获得importance() 函数:)。
-
作为一个回答实在是太让人不满意了,一个评论就够尴尬了:-)
标签: r parallel-processing random-forest party