2012-03-17 10 views
8

Tengo un modelo exitoso de bosque al azar, y quiero integrarlo en otro software, sé que puedo usar algunas bibliotecas (como fastRF en Java o DecisionForest de ALGLIB para otros idiomas) pero cómo puedo usar el "modelo" entrenado en R? Tengo que volver a entrenarlo en el nuevo idioma?¿Cómo puedo extraer RandomForest de R para usar en producción?

Otro punto de vista es el extracto de alguna manera, pero yo 't No sé cómo hacerlo ...

Cualquier ayuda será apreciada

Gracias de antemano

Respuesta

13

Eche un vistazo al paquete pmml que genera PMML para varios modelos, incluido RandomForest. Un ejemplo básico:

#?randomForest 
library(randomForest) 
library(pmml) 
set.seed(131) 
ozone.rf <- randomForest(Ozone ~ ., data=airquality, mtry=3,importance=TRUE, na.action=na.omit) 
print(ozone.rf) 
ozone.rf.pmml <- pmml(ozone.rf) 
+0

Gracias por su respuesta @Paolo, pero, después de tener el archivo PMML, ¿cómo puedo ejecutarlo? – nanounanue

+1

Si la respuesta fue útil para usted, ¡se apreciaría un voto positivo! ;-) Con respecto a su pregunta, debe verificar si puede importar el modelo pmml en el idioma que utilizará para la implementación. – Paolo

+0

¡Tienes razón! la publicación fue útil, déjame votar. ¿Me podría recomendar algún lenguaje o software que admita PMML? De nuevo, gracias por tu ayuda. – nanounanue

2

El objeto randomForest tiene todas las información sobre cada árbol en el objeto. Cada árbol no es particularmente complicado, aunque puede ser confuso.

iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE, 
         proximity=TRUE) 
> names(iris.rf$forest) 
    [1] "ndbigtree" "nodestatus" "bestvar" "treemap" "nodepred" 
    [6] "xbestsplit" "pid"  "cutoff"  "ncat"  "maxcat"  
    [11] "nrnodes" "ntree"  "nclass"  "xlevels" 

Para averiguar cómo usar el bosque fuera de R, tendrá que mirar el código fuente. Descargue el paquete fuente de randomForest, extraiga tar.gz y busque en el directorio src. En rf.c, verá la clase de función Forest (y para la regresión, observe regForest en regrf.c). Mire la función R predict.randomForest para ver cómo se llama. Es posible que deba utilizar getAnywhere ("predecir.horro aleatorio") para verlo en R.

Se requerirá un poco de rebuscado para extraer la información R y predecir en otro paquete, por lo que tendría que pensar cuidadosamente antes de hacer esto. Volver a instalar en el software que pretende utilizar puede ser más sencillo.

+0

Gracias por su respuesta @rjad, entonces, si entiendo correctamente, su recomendación es volver a entrenar el bosque aleatorio en el nuevo software, ¿verdad? – nanounanue

+0

Creo que si es sencillo hacerlo, este será el enfoque más fácil. Podría ser útil si proporcionó algunos detalles sobre el idioma en el que desea trabajar. Pero también vea la sugerencia de Paolo a continuación. – rjad

+0

Intento implementarlo (preferiblemente) en Java, pero en C++ también podría funcionar. Gracias de nuevo :) – nanounanue

Cuestiones relacionadas