Pasos para crear un proyecto de Machine Learning exitoso: el framework de Datalized

Descubre cómo el framework de Datalized ayuda a desarrollar proyectos de Machine Learning exitosos en este artículo, que incluye pasos clave desde la definición de objetivos hasta la selección del algoritmo adecuado

Pasos para crear un proyecto de Machine Learning exitoso: el framework de Datalized

Un proyecto de Machine Learning es mucho más que entrenar un modelo con una red neuronal, ya que hay que entender y adaptar el problema que se quiere resolver y el entorno en donde el modelo vivirá.

Te presentamos las etapas que aumentan la probabilidad de que tu proyecto tenga éxito, basado en nuestras propias experiencias.

En la actualidad hay una gran cantidad de cursos de diferentes características que te enseñan aquello que tiene que ver con entrenar modelos, por ejemplo diferenciar una red neuronal de un árbol de decisión o también te instruyen en cómo codearse con Python o R utilizando las librerías Open Source de Machine Learning.

Sin embargo, hay cosas fundamentales que definen el éxito de un proyecto de Machine Learning y que se alejan del “tecnicismo” que un curso te puede enseñar: pasar de la idea a la producción y que se resuelva efectivamente el problema de negocio para el cual se entrenó un determinado modelo.

En Datalized hemos llegado al siguiente marco de trabajo para nuestros proyectos de Machine Learning:

  1. Contexto del problema.
  2. Análisis exploratorio de los datos.
  3. Entrenamiento de los modelos.
  4. Paso a producción de los modelos.
  5. Monitoreo y re-entrenamiento.
No hay texto alternativo para esta imagen

Si bien al pensar en Machine Learning por lo general se nos viene a la cabeza solo la tercera etapa, en Datalized le damos énfasis a la comprensión y entendimiento del problema de negocio, su entorno y cómo pasarlo a producción de manera correcta para poder monitorear los resultados.

  1. Contexto del problema

Nuestros proyectos de Machine Learning comienzan con la etapa más importante que es el contexto del problema, ya que las decisiones que se puedan tomar adelante dependen del conocimiento del problema de negocio a resolver.

El problema de negocio, define el tipo de modelo que vamos a entrenar, pudiendo ser un modelo de regresión (para estimar demandas), de clasificación (para identificar fugas de clientes, por ejemplo), modelos de segmentación, entre otros.

El contexto, por su parte, nos va dar luces de las restricciones operativas que tenga el modelo, y que se pueden desprender de las siguientes preguntas:

¿Qué datos podemos utilizar?: Es muy importante identificar en qué momento necesitamos la estimación para entender cuáles datos tenemos disponibles.

¿Qué tan rápido necesitamos hacer las estimaciones?:

La complejidad del modelo que se quiere entrenar queda, de cierta manera, asociada a que tan rápido se espera que responda un modelo.

Si se necesita que la estimaciones se hagan en tiempo real y de manera instantánea, se deben priorizar modelos más simples.

¿De qué manera se necesita hacer las estimaciones?:

Por lo general un modelo se pasa a producción a través de una API rest, pero en ciertos contextos esa no es la mejor solución. En algunos casos es preferible tener el modelo en un dispositivo o en servidores internos (si se quiere procesar un alto volumen de imágenes de video en tiempo real, por ejemplo).

¿Qué tan rápido recibiré feedback de lo bueno o malo de las estimaciones?:

En algunos contextos sabremos casi instantáneamente qué tan buena o mala fue la estimación como lo es, por ejemplo, en saber si un usuario hará o no click en un banner.

En otros, puede que nos demoremos más tiempo, como sucede cuando queremos saber si un cliente se fugará o no. En problemas con feedback lento, recomendamos utilizar modelos fáciles de interpretar (como un árbol de decisión o una regresión lineal) por sobre modelos de caja negra (redes neuronales, deep learning).

En esta etapa también consideramos relevante definir con qué métricas evaluar el éxito del proyecto. El problema definirá el tipo de modelo y por lo tanto la o las métricas con la que evaluaremos el poder predictivo del modelo.

2. Análisis exploratorio de los datos

El objetivo principal de esta etapa es identificar, a través de visualizaciones y análisis descriptivo, cuáles son las variables que permiten explicar el evento que se quiere predecir.

Además, otro punto importante de este paso es identificar problemas en los datos. Es común que el conjunto de datos inicial tenga valores vacíos, tipos de datos discordantes o valores extremos (outliers) que impactan fuertemente en el poder predictivo si es que no se enfrentan de manera correcta.

Un truco que hemos aprendido con el tiempo es buscar conocimiento experto de personas dentro de la empresa que enfrenten el problema de negocios en el día a día ya que, generalmente, tienen una idea muy clara de cuáles son las variables que más influyen en la predicción. También recomendamos intentar vivir el problema negocios en carne propia, esto te dará nociones de variables que no parecen tan obvias, lo cual ayuda a una mejor comprensión del problema presentado.

3. Entrenamiento de los modelos

Al comenzar un proyecto nuevo buscamos entrenar un modelo sencillo y en poco tiempo. La principal razón de hacerlo de esta manera es que buscamos validar que el problema de negocio se puede solucionar con Machine Learning (¡no siempre se puede!) y dejamos el cimiento listo para trabajar en las siguiente etapas.

Como mencionamos al comienzo, hay una amplia gama de cursos que hacen una muy buena labor explicando todos los detalles asociados al entrenamiento de modelos de Machine Learning.

4. Paso a producción de los modelos

Hay mucho trabajo entre entender el problema de negocios, hacer un análisis exploratorio de los datos y entrenar diversos modelos de Machine Learning, pero sin pasarlo a producción todo lo anterior podría quedar en nada. El paso de producción está más ligado al desarrollo de software que a la ciencia de datos.

Se tiene que pensar en cómo se va a consumir el modelo y cómo se van a utilizar las predicciones en el contexto de negocios.

Para consumir el modelo es recomendable levantar una API rest que recibe requests con los datos de entrada (con el mismo formato que con la data que se entrenó el modelo) y retorne predicciones. Esto involucra serializar el mejor modelo encontrado, por lo general en formatos .pkl o .h5, desarrollar un microservicio que cargue el modelo en memoria y espere los requests y levantar la infraestructura tecnológica necesaria para que la API escale vertical y horizontalmente en caso que se necesite. Esto es 100% un problema de desarrollo de software.

Para utilizar el modelo hay que entender cómo cambiarán mis procesos una vez que tenga la predicción. Quizás el backend de mi empresa tomará la predicción como input en un proceso interno o quizás existe un humano que necesita visualizar las predicciones para tomar una decisión de negocios. En ambos casos hay que tener una mirada de desarrollo de software y de producto/UX para entender cómo usar las predicciones.

Es muy importante pensar desde un inicio en cómo se utilizará el modelo debido a que hasta que no este en producción el modelo aporta muy poco valor. ¡No dejes esto para el final!

5. Monitoreo y re-entrenamiento

La parte más emocionante de todo este proceso es cuando el modelo esta en producción. En este momento se debe evaluar el comportamiento del poder predictivo y si está solucionando el problema de negocios por el cual se originó.

Es recomendable guardar las predicciones hechas por el modelo y compararlas con los valores reales para calcular el error del modelo. Otra buena práctica es tener diversos modelos distintos en producción y evaluar, con datos reales, cuál esta teniendo menor error a modo de A/B Test.

También recomendamos tener métricas de negocios que reflejen el problema que se quería solucionar y evaluar la evolución de estas métricas. Ambos parámetros nos van a indicar cuándo es necesario re-entrenar los modelos, y nuestra experiencia nos dice que las ventanas de tiempo son más grandes de las que se tiende a pensar.

¿Te hace sentido este framework? ¿Crees que falta agregar algo?

Te leemos!