gpt4 book ai didi

r - 并行训练 cforest

转载 作者:行者123 更新时间:2023-12-03 15:00:12 25 4
gpt4 key购买 nike

我有一个非常大的数据框,包含 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 的条件随机森林。包,但没有 combine() cforests 的方法,所以我不确定如何组合多个 cforest 对象来获得一个重要性图或一个预测。

有没有办法在数据的较小子集上训练一个大 cforest,或者制作几个小 cforest 并将它们组合成一个更大的条件森林模型?

最佳答案

制作几个小的 cforest 并将它们组合成一个更大的条件森林模型。

library(snowfall)
library(party)
cforestmt<-function(formula, data = list(), subset = NULL, weights = NULL, controls = cforest_unbiased(), xtrafo = ptrafo, ytrafo = ptrafo, scores = NULL, threads=8) {

if(controls@ntree<threads) { # if there are less trees than threads single thread
return(cforest(formula, data = data, subset=subset, weights=weights, controls=controls, xtrafo=xtrafo, ytrafo=ytrafo, scores=scores))
}

# round off threads
fsize=controls@ntree/threads
if(fsize-round(fsize)!=0) {
fsize=ceiling(fsize)
message("Rounding forest size to ",fsize*threads)
}
controls@ntree=as.integer(fsize)

# run forests in parallel
sfInit(parallel=T, cpus=threads, type="SOCK")
sfClusterEval(library(party))
sfExport('formula','data','subset','weights','controls','xtrafo','ytrafo','scores')
fr<-sfClusterEval(cforest(formula, data = data, subset=subset, weights=weights, controls=controls, xtrafo=xtrafo, ytrafo=ytrafo, scores=scores))
sfStop()

# combine/append forest
fr[[1]]@ensemble<-unlist(lapply(fr,function(y) {y@ensemble}),recursive=F)
fr[[1]]@where<-unlist(lapply(fr,function(y) {y@where}),recursive=F)
fr[[1]]@weights<-unlist(lapply(fr,function(y) {y@weights}),recursive=F)

#first forest has result
return(fr[[1]])
}

关于r - 并行训练 cforest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com