Análisis de datos

 Servicio de análisis de datos

Cambie para siempre la forma de relacionarse con sus datos y obtenga predicciones precisas y obtenga patrones de comportamiento mediante la aplicación de algoritmos de Machine Learning a sus datos, buscando siempre la solución tecnológica más adecuada a sus necesidades.

  • Captura de datos
  • Limpieza y transformación de datos
  • Escenarios tabulares, textuales y de visión artificial
  • Algoritmos supervisados y no supervisados

Tecnología

Software

El análisis se realizará en Python usando como framework el entorno Jupyter sobre Anaconda y Visual Studio Code. Entre las librerías a utilizar se encontrarán todas aquellas que los procesos de análisis y el modelo final exijan (algunas comunes a todo proceso de análisis como pandas, numpy, pyplot, seaborn…; y otras específicas como Keras sobre TensorFlow, LightGBM, XGBoost, etc.).

Hardware

En función de las necesidades del cliente se trabajará en la nube (Azure) o en equipos locales. En el segundo caso el proyecto incluirá el uso exclusivo de una estación de trabajo con especificaciones que dependerán de la complejidad del mismo.

El modelo entrenado puede publicarse como Servicio Web para la predicción en tiempo real si así se especifica.

Fases del análisis

El análisis a realizar puede dividirse en las siguientes fases:

  • Consultoría, a realizar junto al equipo del cliente, destinada a transmitir el "conocimiento del entorno" (domain knowledge) al análisis. Esta fase incluye la definición del objetivo del análisis, la identificación de las variables involucradas, su interdependencia y relación.
  • Análisis Exploratorio de los Datos (EDA), tratamiento estadístico de los datos de los que se parte en el análisis. En esta fase se realiza un análisis de la “forma” de los datos o características, estudiando el perfil de cada una de las características, la covarianza entre ellas, los outliers (valores fuera del rango habitual) y su impacto en el conjunto de datos, los datos “no válidos”, etc.
  • Tratamiento previo de datos, parte del conjunto de procesos conocidos como ETL (extracción, tratamiento y carga de datos) que incluye el tratamiento de valores nulos, de registros repetidos, de registros incoherentes entre sí, etc., decisiones todas que impactarán en el comportamiento del modelo predictivo a desarrollar.
  • Ingeniería de características, generación de las características predictivas que van a alimentar el modelo. Parte de ellas serán extraídas directamente de los datos históricos del cliente, y parte serán generadas a medida a partir de los resultados del EDA y de la fase de consultoría.
  • Generación de un modelo predictivo base. Una vez realizado el análisis exploratorio de los datos, la fase de consultoría, el tratamiento previo de los mismos y completada la fase de ingeniería de características, ya es posible la generación de un modelo predictivo base. En entornos tabulares (numéricos), los algoritmos candidatos a ofrecer los mejores rendimientos suelen ser algoritmos de tipo “Gradient Boosting” (LightGBM o XGBoost). En entornos de minería de textos tanto los algoritmos de tipo "Gradient Boosting" como Redes Neuronales pueden ser buenos candidatos. Por último, en entornos de visión artificial o entornos complejos la única opción factible son las Redes Neuronales Convolucionales o arquitecturas más complejas.
    Este primer modelo base ofrecerá un rendimiento razonable, pero normalmente lejos del rendimiento que se obtiene tras su optimización y ajuste fino.
  • Optimización del algoritmo y ajuste fino. Una vez desarrollado el modelo base, se entra en un ciclo que repite la gestión de los datos (limpieza, ingeniería de características, generación de nuevos modelos) que incluyen no solo la mejora del modelo predictivo base sino pruebas con nuevos algoritmos.
  • Ensamblado de algoritmos. Durante las fases anteriores se habrán generado modelos basados en diferentes algoritmos. Una forma de mejorar el resultado es aplicar algún tipo de ensamblado que considere dos o más modelos y generar una nueva predicción a partir de ellos. La mejora producida en el rendimiento del modelo con esta técnica puede rondar entre el 0.5% y el 1%.

Documentación

La documentación a entregar incluye:

  • EDA. El análisis exploratorio de los datos se entrega al cliente en formato Jupyter notebook y en formato PDF una vez se completa esta fase.
  • Modelo predictivo base y primera predicción. Tras el desarrollo del modelo predictivo base se envía al cliente el código correspondiente (incluyendo el tratamiento de los datos, la ingeniería de características, la creación del modelo y su entrenamiento) y una primera predicción (que solo debe servir como prueba de concepto, pues su exactitud será todavía demasiado baja).
  • Modelo predictivo. En este documento -a entregar al final del proyecto también en formato Jupyter notebook o formato Python (.py) y PDF- se incluye el código de limpieza de datos y de ingeniería de características, así como el código que genera el modelo, lo entrena y realiza una predicción. Este código permitirá en el futuro el reentrenamiento del modelo por parte del cliente si así lo desea.
  • Código predictivo. A partir del modelo predictivo anterior se generará este documento, una vez más en formato Jupyter notebook o Python y PDF, que, a partir de los datos de que se disponga, permitirá en el futuro al cliente realizar nuevas predicciones. La diferencia con el documento anterior es que en éste no se incluye el código de reentrenamiento (por el tiempo que puede exigir su ejecución), tan solo el código correspondiente al tratamiento de los datos, generación del modelo y la predicción.
  • Conclusiones del análisis. En este último documento -a completar tras la finalización del proyecto- se detallan las conclusiones del análisis, así como, si las hubiere, recomendaciones para el mantenimiento y mejora del modelo.

 Documentación