R에서 부스트 된 회귀 트리를 빠르게 실행하기 위해 병렬 처리를 사용하려고합니다. BiocParallel 패키지 (http://lcolladotor.github.io/2016/03/07/BiocParallel/#.WiqF7bQ-e3c)를 사용하고 있습니다. 몇 가지 더미 데이터를 만든 다음 두 개의 BRT 모델을 실행하는 기능을 설정했습니다. 직렬 모델에서 병렬로 작업하기를 바랬습니다. 그러나 내 병렬 실행은 완료되는 것처럼 보이지 않지만 직렬 실행은 약 3 초 정도 걸립니다.BiocParallel이 직렬보다 훨씬 더 오래 실행되는 병렬 처리
##CAN I USE PARALLEL PROCESSING TO SPEED UP BRT'S?
##LOAD PACKAGES
library(BiocParallel)
library(dismo)
library(gbm)
library(MASS)
##CREATE RANDOM, CORRELATED DATA
## FROM https://www.r-bloggers.com/simulating-random-multivariate-correlated-data-continuous-variables/
R = matrix(cbind(1,.80,.2, .80,1,.7, .2,.7,1),nrow=3)
U = t(chol(R))
nvars = dim(U)[1]
numobs = 100
set.seed(1)
random.normal = matrix(rnorm(nvars*numobs,0,1), nrow=nvars, ncol=numobs);
X = U %*% random.normal
newX = t(X)
raw = as.data.frame(newX)
orig.raw = as.data.frame(t(random.normal))
names(raw) = c("response","predictor1","predictor2")
cor(raw)
###########################################################
## MODEL
##########################################################
##WITH FUNCTIONS,
Tc<-c(4, 8) ##Tree Complexities
Lr<-c(0.01) ## Learning Rates
Vars <- split(expand.grid(Tc,Lr),seq(nrow(expand.grid(Tc,Lr))))
brt <- function(x){
a <- gbm.step(raw,gbm.x=c(2:3),gbm.y="response",tree.complexity=x[1],learning.rate=x[2],bag.fraction=0.65, family="gaussian")
b <- data.frame(model=paste("Tc= ",x[1]," _ ","Lr= ",x[2],sep=""), R2=a$cv.statistics$correlation.mean, Dev=a$cv.statistics$deviance.mean)
##Reassign model with unique name
assign(paste("patch.tc",x[1],".lr",x[2],sep=""),a, envir = .GlobalEnv)
assign(paste("RESULTS","patch.tc",x[1],".lr",x[2],sep=""),b, envir = .GlobalEnv)
print(b)
}
############################
###IN Serial
############################
system.time(
lapply(Vars, brt)
)
############################
###IN PARALLEL
############################
system.time(
bplapply(Vars, brt)
)
시간을내어 설명해 주셔서 감사합니다. # 5는 오류를 확실히 해결합니다. 귀하의 코드에서 수익이 보이지 않습니까? – ctlamb