r parallel-processing r-caret

La ejecución paralela del tren en el caret falla con la función no encontrada



parallel-processing r-caret (1)

ayer actualicé mis paquetes R y desde entonces falla la ejecución paralela de la función del tren.

Parece que algunas funciones que se llaman desde dentro de los trabajadores no están disponibles. Estas funciones son al menos flatTable y probFunction.

Experimenté estos problemas en mi máquina de producción y pude reproducirlo en una VM limpia de Windows 7 x64.

Agregué un ejemplo de trabajo mínimo a continuación. Estimados usuarios de stackoverflow: ¡cualquier ayuda es apreciada!

# R 3.0.2 x64, RStudio Version 0.98.490, Windows 7 x64 data(iris) library(caret) # 6.0-21 library(doParallel) # 1.0.6 model <- "rf" # Fail ?probFunction ?flatTable fitControl <- trainControl( method = "repeatedcv" , number = 5 ## 5-fold CV , repeats = 1 ## repeated one times , verboseIter =TRUE ) #### Sequential Version #### # Runs train(Species ~ ., data = iris, method = model, trControl = fitControl) #### Parallelized version #### # Fails with # Error in e$fun(obj, substitute(ex), parent.frame(), e$data) : # worker initialization failed: Error in eval(expr, envir, enclos): could not find function "flatTable" cl <- makeCluster(3) registerDoParallel(cl) train(Species ~ ., data = iris, method = model, trControl = fitControl) stopCluster(cl) # Fails with # Error in { : task 1 failed - "could not find function "probFunction"" fitControl <- trainControl( method = "repeatedcv" , number = 5 ## 5-fold CV , repeats = 1 ## repeated one times , verboseIter =TRUE , classProbs = TRUE ) cl <- makeCluster(3) registerDoParallel(cl) train(Species ~ ., data = iris, method = model, trControl = fitControl) stopCluster(cl) #### Again sequential version #### # Fails with # Error in summary.connection(connection) : invalid connection train(Species ~ ., data = iris, method = model, trControl = fitControl)

R Información de la sesión

R version 3.0.2 (2013-09-25) Platform: x86_64-w64-mingw32/x64 (64-bit) locale: [1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 [4] LC_NUMERIC=C LC_TIME=German_Germany.1252 attached base packages: [1] parallel stats graphics grDevices utils datasets methods base other attached packages: [1] e1071_1.6-1 class_7.3-9 randomForest_4.6-7 doParallel_1.0.6 iterators_1.0.6 [6] foreach_1.4.1 caret_6.0-21 ggplot2_0.9.3.1 lattice_0.20-23 loaded via a namespace (and not attached): [1] car_2.0-19 codetools_0.2-8 colorspace_1.2-4 compiler_3.0.2 dichromat_2.0-0 [6] digest_0.6.4 grid_3.0.2 gtable_0.1.2 labeling_0.2 MASS_7.3-29 [11] munsell_0.4.2 nnet_7.3-7 plyr_1.8 proto_0.3-10 RColorBrewer_1.0-5 [16] reshape2_1.2.2 scales_0.2.3 stringr_0.6.2 tools_3.0.2


El error que está obteniendo se debe a un error en caret 6.0-21 al usar doParallel, doSNOW y doMPI. Se ha corregido en la versión 6.0-22 en R-forge, pero aún no se ha lanzado a CRAN. Si no quiere esperar a que se publique la nueva versión, puede:

  1. Degradación a cuidados 5.x
  2. Instale caret 6.0-22 desde R-fragua
  3. Instale y use doSNOW 1.0.10 desde R-forge en lugar de doParallel

El problema fue causado por un cambio en la política CRAN que prohíbe el uso del operador ::: , incluso cuando se hace referencia a funciones no exportadas desde el mismo paquete.

Actualizar

Caret 6.0-22 fue lanzado a CRAN el 2014-01-18. Esto debería resolver el problema informado utilizando caret con doSNOW y backends paralelos similares.