Todos nos damos cuenta de lo importante que es poder analizar los datos que recopilamos y extraer información útil de ellos. 2UDA es un paso en esa dirección y tiene como objetivo unir el almacenamiento y la gestión de datos (PostgreSQL) con la minería y el análisis de datos (Orange).
pgpredict es un proyecto en desarrollo y apunta a ser el siguiente paso que hará que todo se complete. Comenzando con los datos (en nuestro caso almacenados en una base de datos), primero debemos dar acceso a ellos a expertos que puedan analizarlos con herramientas y métodos especializados. Pero después, cuando por ejemplo entrenan un modelo predictivo que puede resolver algo importante y beneficioso para nosotros, necesitan poder transmitir esos resultados para que podamos explotarlos. Esto es precisamente lo que intenta resolver pgpredict:implementar modelos predictivos directamente dentro de la base de datos para una ejecución eficiente y en tiempo real.
El proyecto comenzó como una continuación de 2UDA, que ya permite utilizar Orange para trabajar con datos almacenados en una base de datos PostgreSQL. Lo que se necesitaba era una forma de exportar modelos predictivos entrenados, transferirlos a donde se necesitan (por ejemplo, el servidor de producción) e implementarlos. Entonces, el proyecto se divide en extensiones para Orange que pueden exportar modelos a archivos .json y para Postgres que pueden cargar y ejecutar esos modelos. Debido a que los modelos se almacenan en archivos de texto, se pueden rastrear en un sistema de control de versiones. El formato json también les permite almacenarse fácilmente en la base de datos después de la carga, haciendo uso de las capacidades json de PostgreSQL.
Actualmente existe una implementación funcional para un número limitado de modelos predictivos y aún no se ha optimizado a fondo. Pero ya se muestra muy prometedor.
Para probarlo, generé una tabla de clientes imaginarios con 10 millones de filas con algunas variables aleatorias independientes (edad, salario, visitas) y una variable de salida (gastado). A continuación, se utilizó Orange para cargar la tabla y obtener un modelo predictivo. Debido a que utiliza TABLESAMPLE (una característica de PostgreSQL 9.5), probar diferentes parámetros y configuraciones funciona rápidamente (incluso para datos mucho más grandes que en esta prueba). Por lo tanto, el científico de datos puede probar de forma interactiva diferentes soluciones, evaluarlas y llegar a un buen modelo al final. Luego, el modelo de regresión de la cresta final se exportó y se cargó en la base de datos. Allí se puede usar en tiempo real para predecir el monto gastado por los nuevos clientes que aparecen en la base de datos.
El uso de pgbench demostró que mientras se seleccionaba una columna existente para un solo cliente de la tabla se necesitaban 0,086 ms, solo era un poco más largo para obtener las variables independientes y hacer una predicción del valor gastado:0,134 ms.
Predecir la cantidad gastada para 10^6 clientes no lleva 10^6 veces más tiempo (134 s) desde que se realiza la inicialización del modelo la primera vez y luego reutilizado. Así que en realidad tardó 13,6 s, lo que lo hizo 10 veces más rápido.
Estas cifras se obtuvieron para un modelo simple, en mi computadora portátil, con un código que tiene potencial para una optimización mucho mayor. Espere una evaluación más rigurosa pronto, cuando estemos listos para lanzar pgpredict al público. Pero incluso ahora, creo que la eficiencia y la facilidad de uso exhibidas lo convertirían en una gran ventaja para la gran mayoría de los usuarios potenciales que buscan análisis predictivos para sus almacenes de datos basados en PostgreSQL.