7 votos

Reducir al Azar Bosque modelo tamaño de la memoria

He creado un modelo de regresión en mis datos con bosques aleatorios en R. El resultado es bastante grande, me pregunto si hay alguna manera de reducir sólo a las piezas necesarias para hacer una predicción?

El conjunto de datos de entrenamiento contiene 20 variables y ~45,000 filas, que también es grande. Mi código se enumeran a continuación.

data <- readRDS("data.Rds")

require("data.table")
require("doParallel")
require("randomForest")

train <- data[ which(set == "train")]
test <- data[ which(set == "test")]
rm(data)

x <- data.table(train[, 2:21, with=FALSE])
y <- as.vector(as.matrix(train[, 23, with=FALSE]))

cl <- makeCluster(detectCores())
registerDoParallel(cl, cores=4)
time <- system.time({rf.fit <- foreach(ntree=rep(500, 6),
                               .combine=combine,
                               .multicombine=TRUE,
                               .packages="randomForest") %dopar% 
                   {randomForest(x, y, ntree=ntree)}})
stopCluster(cl)

saveRDS(rf.fit, "rf.fit.Rds")

El resultado de esto es ~230 MB. Una vez que tengo el modelo, es posible reducir el tamaño para que sea más fácil trabajar con? Mis objetivos con este son identificar las variables más importantes, y hacer una predicción sobre nuevos datos.

3voto

ReKa Puntos 11

He utilizado esta función para reducir mi símbolo de intercalación predeterminada de salida de 137 MB a 3 MB. Usted puede usar este modelo para la predicción con $finalModel

## Clean Model to Save Memory

## http://stats.stackexchange.com/questions/102667/reduce-random-forest-model-memory-size
stripRF <- function(cm) {
  cm$finalModel$predicted <- NULL 
  cm$finalModel$oob.times <- NULL 
  cm$finalModel$y <- NULL
  cm$finalModel$votes <- NULL
  cm$control$indexOut <- NULL
  cm$control$index    <- NULL
  cm$trainingData <- NULL

  attr(cm$terms,".Environment") <- c()
  attr(cm$formula,".Environment") <- c()

  cm
}

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X