47 votos

Optimizado implementaciones de el Bosque Aleatorio algoritmo

He notado que hay algunas implementaciones del bosque aleatorio como ALGLIB, Waffles y algunos paquetes de R como randomForest. ¿Alguien puede decirme si estas bibliotecas están altamente optimizados? Son básicamente el equivalente al azar de los bosques, como se detalla en los Elementos de La Estadística de Aprendizaje o que tienen una gran cantidad de trucos que se han agregado?

Espero que esta pregunta es lo suficientemente específico. Como una ilustración del tipo de respuesta que estoy buscando, si alguien me preguntó si el álgebra lineal paquete de BLAS fue altamente optimizado, yo diría que fue muy muy optimizado y sobre todo no vale la pena tratar de mejorar, salvo en aplicaciones especializadas.

33voto

ESRogs Puntos 1381

(Actualizado 6 IX 2015 con las sugerencias de los comentarios, también hizo CW)

Hay dos nuevos paquetes disponibles para R, que están bastante bien optimizado para una serie de condiciones:

  • ranger -- C++, paquete de R, optimizado para $p>>n$ problemas, en paralelo, el tratamiento especial de los datos de GWAS.
  • Poda -- C++, R y Python bindings, optimizado para grandes-$$ n de los problemas, al parecer, los planes para GPGPU.

Otras RF implementaciones:

  • El Original -- independiente de código Fortran, no en paralelo, bastante difícil de usar.
  • randomForest -- C, paquete de R, probablemente el más popular, no en paralelo, en realidad bastante rápido cuando se compara con un solo núcleo a velocidad de base, especialmente para los pequeños de datos.
  • randomForestSRC -- C, paquete de R, clon de randomForest apoyar el procesamiento en paralelo y problemas de supervivencia.
  • parte -- C, paquete de R, bastante lento, pero diseñado como un avión de experimentación de la RF.
  • bigrf -- C+/R, paquete de R, construido para trabajar en big data dentro de bigmemory marco; muy lejos de ser completa.
  • scikit aprender Conjunto de del bosque -- Python, parte de scikit-learn marco, en paralelo, implementa muchas variantes de RF.
  • la leche's RF -- Python, parte de la leche marco.
  • Waffles -- C++, parte de una mayor ML kit de herramientas, paralelo y bastante rápida.
  • los llamados WEKA rf -- Java/WEKA, en paralelo.
  • ALGLIB
  • Al azar de la Selva -- abandonado?
  • rt-clasificación -- abandonado?
  • PARF -- abandonado?

Ranger papel tiene algo de velocidad/de la memoria de las comparaciones, pero no es exhaustiva referencia.

14voto

Boris Tsirelson Puntos 191

Hasta donde yo sé, la versión R de randomForest llamadas el mismo código de Fortran como la versión original. Además, es trivial para paralelizar el randomForest función. De hecho, es uno de los ejemplos proporcionados en el foreach de la documentación.

library(foreach)
library(randomForest)
rf <- foreach(ntree = rep(250, 4), .combine = combine, .packages = "randomForest") %dopar% 
randomForest(x, y, ntree = ntree)

Dado que los bosques aleatorios son paralela, el más grande de optimización que se puede hacer es correr en paralelo. Después de eso, no creo que exista otra fruta madura en el algoritmo, pero puedo estar equivocado.

El único problema es que se pierde la hacia fuera-de-bolsa de estimación del error en el combinado de del bosque, pero probablemente hay una manera simple de calcular (ya lo había hecho el amor a averiguar cómo hacer esto).

7voto

DavLink Puntos 101

El ELSII utilizado randomForest (ver por ejemplo, la nota de pie de página 3 p.591), que es un R la aplicación de la Breiman y Cutler del código de Fortran de Salford. Andy Liaw del código en C.

Hay otra aplicación de RFs propuesto en la parte del paquete (en C), que se basa en R/Lapack, que tiene algunas dependencias de BLAS (ver/include/R_ext/Lapack.h en su base de R directorio).

Tan lejos como el embolsado se refiere, no debe ser demasiado duro para paralelizar, pero voy a permitir que más usuarios especializados de responder en este aspecto.

5voto

Tsuyoshi Ito Puntos 1517

El equipo detrás de randomJungle afirma que es un orden de magnitud más rápido que el R randomForest aplicación y utiliza un orden de magnitud menos memoria. Un paquete para randomJungle está siendo desarrollado por R pero no puedo llegar a construir todavía.

https://r-forge.r-project.org/projects/rjungler/

3voto

void.pointer Puntos 125

Para el Javascript de la Aplicación ir a través de esta demo.

Si usted es como un niño que tiene hambre de chocolate, aquí es el chocolate del bosque aleatorio http://cs.stanford.edu/people/karpathy/svmjs/demo/demoforest.html

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