2011-09-25 11 views
6

Tengo una aplicación de rieles alojada en Heroku para la cual deseo incorporar algunos análisis de datos en vivo. Idealmente, me encantaría encontrar una manera de ejecutar un modelo de regresión impulsado generalizado, que sé que está disponible en ambos R (http://cran.r-project.org/web/packages/gbm/index.html) y Stata (http://www.stata-journal.com/article.html?article=st0087). Quiero guardar el árbol gbm resultante y luego, dentro de mi aplicación, usarlo para predecir nuevos resultados según la entrada del usuario.Opciones de minería de datos/Análisis estadístico para una aplicación Heroku Rails?

Si eso no es posible, estaría abierto a utilizar otros algoritmos de minería de datos. Lo más importante para mí es la capacidad de integrarlo en mi aplicación Heroku para que pueda funcionar sin mi máquina local.

Opciones He mirado en:

1) Heroku Soporte Opciones vendoring la biblioteca R en una gema de rubíes. Soy relativamente nuevo en ruby ​​y rieles, es algo que sería factible para mí. He buscado instrucciones para vender bibliotecas en gemas, pero no he podido encontrar mucho.

2) Otro hilo aquí (http://stackoverflow.com/questions/6495232/statistic-engine-that-work-with-heroku) menciona CloudNumbers, pero no parece posible llamar al servicio desde un Aplicación Rails.

3) En uno de sus casos de estudio, Heroku menciona FlightCaster, que utiliza Clojure, Hadoop y EC2 para su aprendizaje automático (http://www.infoq.com/articles/flightcaster-clojure-rails). Vi que Heroku admite Clojure, pero ¿hay alguna manera de integrarlo (o más específicamente, Incanter) en mi aplicación Rails?

Háganme saber si tiene alguna idea.

Respuesta

6

Responderé esto desde una perspectiva R. En general, usted va a hacer frente a dos problemas:

1) de interfaz con una R, independientemente del lugar donde se está ejecutando

2) Hacer esto de Heroku, donde hay un conjunto especial de desafíos.

Hay algunos enfoques generales para el primero de ellos - se puede utilizar una unión a R (rsruby, rinruby, etc.), se puede desembolsar a R (por ejemplo, de rubí R -e "RCODEHERE"), puede acceda a R como un servicio web (vea el paquete Rook, y específicamente algo como https://github.com/jeffreyhorner/rRack/blob/master/Rook/inst/exampleApps/RJSONIO.R), o puede acceder manualmente a R usando algo como rserve.

De estos, desgranar a R es la forma más fácil de hacerlo si solo está haciendo una sola operación y no está muy preocupado por el rendimiento. Necesitarás analizar la salida que vuelve, pero esa es la manera más rápida en mi experiencia para una sola operación.

Para un uso más significativo, sugiero usar cualquiera de los enlaces, o configurar R como un servicio web en otra aplicación Heroku y llamar a través de HTTP.

El siguiente desafío es ejecutar R en Heroku; no está disponible como parte del entorno estándar, y es un sistema de archivos de solo lectura sin acceso raíz, por lo que no puede hacer sudo apt-get install.

Es posible vender R en una joya; alguien ha empezado a hacerlo en https://github.com/deet-uc/rsruby-heroku, pero yo personalmente no pude hacerlo funcionar. También es posible construir R directamente en Heroku mediante la instalación de todas las dependencias, etc.- este es el enfoque que he tomado en https://github.com/noahhl/rookonheroku (el paso 1 es todo lo que necesitas si no estás usando Rook).

Tenga en cuenta que Heroku podría no permitirle realizar un segundo proceso en el mismo subproceso que su aplicación Rails, que es lo que hacen la mayoría de las vinculaciones. Esto puede dificultar el funcionamiento de estas vinculaciones, por lo que tiendo a favorecer el envío a R o exponerlo como un servicio web y acceder a él a través de HTTP.

Cuestiones relacionadas