Me he dado cuenta de que hay algunas implementaciones de bosque aleatorio como ALGLIB, Waffles y algunos paquetes R como randomForest
. ¿Alguien puede decirme si estas bibliotecas están altamente optimizadas? ¿Son básicamente equivalentes a los bosques aleatorios como se detalla en Los elementos del aprendizaje estadístico o se han agregado muchos trucos adicionales?
Espero que esta pregunta sea lo suficientemente específica. Como ilustración del tipo de respuesta que estoy buscando, si alguien me preguntara si el paquete de álgebra lineal BLAS estaba altamente optimizado, diría que estaba extremadamente optimizado y no vale la pena intentar mejorarlo, excepto en aplicaciones muy especializadas.
random-forest
algorithms
model-evaluation
Henry B.
fuente
fuente
Respuestas:
(Actualizado 6 IX 2015 con sugerencias de comentarios, también hecho CW)
Hay dos paquetes nuevos y agradables disponibles para R que están bastante bien optimizados para ciertas condiciones:
Otras implementaciones de RF:
El papel de guardabosques tiene algunas comparaciones de velocidad / memoria, pero no hay un punto de referencia exhaustivo.
fuente
Hasta donde yo sé, la versión R de randomForest llama al mismo código Fortran que la versión original. Además, es trivial paralelizar la función randomForest. En realidad, es uno de los ejemplos proporcionados en la documentación foreach .
Dado que los bosques aleatorios son vergonzosamente paralelos, la mayor optimización que puede hacer es ejecutarlos en paralelo. Después de eso, no creo que haya ninguna otra fruta baja en el algoritmo, pero podría estar equivocado.
El único problema es que pierdes la estimación de error fuera de la bolsa en el bosque combinado, pero probablemente haya una forma simple de calcularlo (en realidad me encantaría saber cómo hacer esto).
fuente
El ELSII usó randomForest (ver, por ejemplo, nota al pie 3 p.591), que es una implementación R del código Fortran de Breiman y Cutler de Salford. El código de Andy Liaw está en C.
Hay otra implementación de RFs propuesta en el paquete de fiesta (en C), que se basa en R / Lapack, que tiene algunas dependencias en BLAS (consulte
/include/R_ext/Lapack.h
en su directorio base R).En lo que respecta al embolsado, no debería ser demasiado difícil paralelizarlo, pero dejaré que usuarios más especializados respondan sobre este aspecto.
fuente
El equipo detrás de randomJungle afirma que es un orden de magnitud más rápido que la implementación R randomForest y usa una magnitud de orden menos memoria. Se está desarrollando un paquete para randomJungle para R, pero todavía no puedo construirlo.
https://r-forge.r-project.org/projects/rjungler/
fuente
Para la implementación de Javascript ve a través de esta demostración.
Si eres como un niño que tiene hambre de chocolate, aquí tienes tu chocolate de bosque aleatorio http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html
fuente