У меня есть огромные тренировочные данные для случайного леса (dim: 47600811*9). Я хочу взять несколько (скажем, 1000) загрузочных выборок размером 10000 * 9 (принимая 9000 отрицательных классов и 1000 положительных точек данных класса в каждом прогоне) и итеративно генерировать деревья для всех из них, а затем объединить все эти деревья в 1 лес. Примерное представление о необходимом коде приведено ниже. Может ли кто-нибудь подсказать мне, как я могу сгенерировать случайную выборку с заменой из моих фактических данных поезда и оптимально сгенерировать для них деревья итеративно? Это будет большим подспорьем. Спасибо
library(doSNOW)
library(randomForest)
cl <- makeCluster(8)
registerDoSNOW(cl)
for (i=1:1000){
B <- 1000
U <- 9000
dataB <- trainData[sample(which(trainData$class == "B"), B,replace=TRUE),]
dataU <- trainData[sample(which(trainData$class == "U"), U,replace=TRUE),]
subset <- rbind(dataB, dataU)
Я не уверен, что это оптимальный способ создания подмножества снова и снова (1000 раз) из фактических данных trainData.
rf <- foreach(ntree=rep(125, 8), .packages='randomForest') %dopar% {
randomForest(subset[,-1], subset$class, ntree=ntree)
}
}
crf <- do.call('combine', rf)
print(crf)
stopCluster(cl)
i = replicate(3, {c(sample(which(trainData$class == "B"), 50, replace = T), sample(which(trainData$class == "U"), 50, replace = T))})
, а затем применить foreachrf <- foreach(ntree=rep(125, 8), .packages='randomForest') %dopar% {randomForest(trainData[i,-1], trainData[i,]$class, ntree=ntree, sampsize=rep(2,2))}
, а затем объединить деревья с помощьюcrf <- do.call('combine', rf)
. Тогда я получаю только 1000 деревьев, а поскольку мойi
содержит 3 подмножества, и для каждого подмножества я генерирую 1000 деревьев, я должен получить 3000 деревьев. Как это исправить? - person Newbie   schedule 17.09.2016