tutorial - the django project
Opciones para implementar modelos R en producción (5)
No parece haber demasiadas opciones para implementar modelos predictivos en la producción, lo cual es sorprendente dada la explosión en Big Data.
Entiendo que el PMML de código abierto se puede usar para exportar modelos como una especificación XML. Esto se puede usar para la puntuación / predicción en la base de datos. Sin embargo, parece que para hacer esto, necesitas usar el plugin PMML de Zementis, lo que significa que la solución no es realmente de código abierto. ¿Hay alguna manera más fácil de asociar PMML a SQL para la puntuación?
Otra opción sería usar JSON en lugar de XML para generar predicciones del modelo. Pero en este caso, ¿dónde estaría el modelo R? Supongo que siempre tendrá que estar mapeado en SQL ... a menos que el modelo R pueda estar en el mismo servidor que los datos y luego correr contra los datos entrantes con un guión R?
Alguna otra opción?
Elise de Yhat aquí.
Como se mencionó en @Ramnath y @ leo9r, nuestro software le permite poner cualquier modelo R (o Python, para el caso) directamente en producción a través de puntos finales REST API.
Manejamos en tiempo real o por lotes, así como también todas las pruebas de modelo y control de versiones + sistemas asociados con el proceso.
Este estudio de caso que co-escribimos con VIA SMS podría ser útil si está pensando en cómo hacer que los modelos R entren en producción (su equipo de datos de datos estaba recodificando en PHP antes de usar Yhat).
¡Aclamaciones!
La respuesta realmente depende de cuál sea su entorno de producción.
Si sus "big data" están en Hadoop, puede probar este relativamente nuevo motor de puntuación PMML de código abierto llamado Pattern .
De lo contrario, no tiene otra opción (salvo escribir código personalizado específico del modelo), sino ejecutar R en su servidor. Utilizaría save
para guardar sus modelos ajustados en archivos .RData y luego load
y ejecutar la predict
correspondiente en el servidor. (Eso seguramente será lento, pero siempre puedes probar y lanzarle más hardware).
Cómo lo haces realmente depende de tu plataforma. Por lo general, hay una forma de agregar funciones "personalizadas" escritas en R. El término es UDF (función definida por el usuario). En Hadoop puede agregar tales funciones a Pig (por ejemplo, https://github.com/cd-wood/pigaddons ) o puede usar RHadoop para escribir código map-reduce simple que cargaría el modelo y llamaría a predict
en R. Si su los datos están en Hive, puede usar Hive TRANSFORM para llamar al script R externo.
También hay formas específicas de proveedores para agregar funciones escritas en R a varias bases de datos SQL. Nuevamente busque UDF en la documentación. Por ejemplo, PostgreSQL tiene PL/R
La siguiente es una lista de las alternativas que he encontrado hasta ahora para implementar un modelo R en producción. Tenga en cuenta que el flujo de trabajo para usar estos productos varía significativamente entre ellos, pero de alguna manera están orientados a facilitar el proceso de exposición de un modelo R entrenado como un servicio:
Puede crear API RESTful para sus scripts R utilizando fontanero ( https://github.com/trestletech/plumber ).
Escribí una publicación en el blog sobre esto ( http://www.knowru.com/blog/how-create-restful-api-for-machine-learning-credit-model-in-r/ ) usando modelos de crédito desplegados como ejemplo .
En general, no recomiendo PMML porque los paquetes que usó podrían no ser compatibles con la traducción a PMML.
Una práctica común es anotar un conjunto de datos nuevo / actualizado en R y mover solo los resultados (ID, puntajes, probabilidades, otros campos necesarios) al entorno de producción / almacén de datos.
Sé que esto tiene sus limitaciones (actualizaciones poco frecuentes, confianza en TI, restricciones en el tamaño del conjunto de datos / potencia de computación) y puede no ser la respuesta de vanguardia que muchos (de sus jefes) están buscando; pero para muchos casos de uso, esto funciona bien (¡y es económico!).