Время вычислений с параметрами (rf.cores = detectCores (), m c .cores = detectCores ()) и пакетом DoSNOW для пакета rfsr c R - PullRequest
0 голосов
/ 30 апреля 2020

Я пытался использовать функцию mutlticore пакета rfsr c. Я не вижу каких-либо улучшений в вычислениях для использования большего количества ядер. Я попытался с параметрами (rf.cores = detectCores (), m c .cores = detectCores ()) и пакетом DoSNOW. Я запустил свой код на Windows 10. Я также буду использовать виртуальную машину Linux для запуска своего кода. Ваши предложения будут оценены.

rm(list = ls(all.names = TRUE)) #will clear all objects includes hidden objects.
gc() #free up memrory and report the memory usage.
memory.limit()
memory.limit(size=56000)
#memory.size(max =TRUE)
library(caret)
library(randomForestSRC)
library(randomForest)
library(tictoc)
library(ggRandomForests)
library(parallel)
library(e1071)
library(ggplot2)
library("doSNOW")
detectCores()
options(rf.cores=detectCores(), mc.cores=detectCores())
tic("Time to load the data")
df= read.csv('C:HiggsData/higgsclean.csv', header=T)
toc()

sample_size = round(nrow(df)*.80) # setting what is 70%
index <- sample(seq_len(nrow(df)), size = sample_size)
train <- df[index, ]
test <- df[-index, ]

str(train)
str(test)
dim(train)
dim(test)
warnings()


#################################### Final Run Version###########################

set.seed(228)
#core_list = [1, 4, 8]
num_trees <- list(1, 8,64)
features_per_tree<-list(1,4,6,19)
features_per_tree # In this case, used to simulate different feature widths in dataset
max_depths <-list(1, 10, 100)
max_depths
data_num <-list(100, 1000, 10000, 100000, 654590)
time <- NULL
depth<-NULL
tr<-NULL
Nfeature <-NULL
obb<-NULL
obb<-c()
Nfeature<-c()
time<-c()
tr<-c()
depth<-c()
#registerDoSNOW(makeCluster(4, type="SOCK"))
for(j in num_trees) {
    for(f in features_per_tree) {
          for(k in max_depths) {
         for(i in data_num) {   #The counter declaration
    #then do something for each iteration
    print(i)

    #....
    #And finish the enviroment.

    #Full data
    tic()
    #higgs.obj <- rfsrc(Label ~ ., data =train[(1:x),])
    fast.o <- rfsrc.fast(Label ~ ., data =train[(1:i),],ntree=j, mtry=f, block.size=1,nodedepth=k, forest=TRUE)
    errrate <- as.numeric(round( fast.o$err.rate[nrow( fast.o$err.rate), 1], 2))
    toc(log = TRUE, quiet = TRUE)
    #Put the result in a log
    log.txt <- tic.log(format = TRUE)
    res <- gsub( " sec elapsed", "", unlist(log.txt))
    t=as.numeric(res)
    tic.clearlog()
    b<-t
    s<-j
    dp<-k
    ft<-f
    tr<-c(tr,s)
    time<-c(time,b)
    depth<-c(depth,dp)
    Nfeature <-c(Nfeature,ft)
    obb<-c(obb,errrate)
    print(fast.o)

 }

     }
          } 
}
#stopCluster(makeCluster(4, type="SOCK"))
...