Debido a que randomForest es una colección de carros independientes entrenados en un subconjunto aleatorio de características y registros, se presta a la paralelización. La combine()
función en el paquete randomForest unirá bosques capacitados de forma independiente. Aquí hay un ejemplo de juguete. Como dice la respuesta de @mpq, no debe usar la notación de fórmula, sino pasar un marco de datos / matriz de variables y un vector de resultados. Desvergonzadamente los saqué de los documentos.
library("doMC")
library("randomForest")
data(iris)
registerDoMC(4) #number of cores on the machine
darkAndScaryForest <- foreach(y=seq(10), .combine=combine ) %dopar% {
set.seed(y) # not really needed
rf <- randomForest(Species ~ ., iris, ntree=50, norm.votes=FALSE)
}
Pasé la función combinada randomForest al parámetro .combine de nombre similar (que controla la función en la salida del bucle. El lado negativo es que no obtienes una tasa de error OOB o una importancia más trágicamente variable.
Editar:
Después de volver a leer la publicación, me doy cuenta de que no hablo nada sobre el problema del factor 34+. Una respuesta total no pensada podría ser representarlos como variables binarias. Ese es cada factor de una columna que está codificada como factor de nivel 0/1 sobre su presencia / no presencia. Al hacer una selección variable de factores sin importancia y eliminarlos, podría evitar que su espacio de características crezca demasiado.