Можно ли использовать параллельную обработку в пошаговой регрессии на языке R? - PullRequest
0 голосов
/ 03 марта 2020

Я запускаю пошаговую регрессию в R, чтобы выбрать модель наилучшего соответствия и сохраняю в * rds, мой код прикреплен здесь:

if (modeling_method == 'LinearRegression'){

n_cores <- detectCores() - 1
cl = makeCluster(n_cores, outfile = "")
registerDoParallel(cl)

z <- Sys.time()
modeling <- foreach(ii = 1:length(Medium_model), .multicombine = TRUE) %dopar% {
modeling_ <- list()
null_ <- list()
full_ <- list()
scope <- list()

train_ <- Medium_model[[ii]][,1:((dim(Medium_model[[ii]])[2]-1))]
names(train_) <- c(names(Medium_model[[ii]])[1:(length(names(Medium_model[[ii]]))-2)], 'y')

if (Label_type == 'regression'){
  null_[[ii]] <- lm(y ~ 1, data = train_)
  full_[[ii]] <- lm(y ~ ., data = train_)
} else if (Label_type == 'classification'){
  null_[[ii]] <- glm(y ~ 1, data = train_, family = binomial(link = "logit"))
  full_[[ii]] <- glm(y ~ ., data = train_, family = binomial(link = "logit"))
}

modeling_[[ii]] <- step(null_[[ii]],
                       scope=list(lower=null_[[ii]], upper=full_[[ii]]),
                       direction="both")

names(modeling_)[[ii]] = names(Medium_model)[[ii]]
saveRDS(modeling_[[ii]], file = paste0(model.path,names(Medium_model)[[ii]],".rds"))
}

Я хочу сделать параллелизм функцией foreach, когда я смещаю% do% с% dopar%, размер пошаговой регрессионной модели (* .rds) больше исходного.

modeling <- foreach(ii = 1:length(Medium_model), .multicombine = TRUE) %dopar% {

Сохранение модели выглядит следующим образом:

saveRDS(modeling_[[ii]], file = paste0(model.path,names(Medium_model)[[ii]],".rds"))

Вопрос Разве не разрешено, чтобы функция step () делала параллелизм? Почему размер модели * .rds будет больше, когда я использую% dopar% вместо% do%?

фотография оригинального размера модели

фотография большего размера модели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...