Machine Learning y algunas buenas prácticas

En el WIC se desarrollan proyectos multidisciplinarios que suelen encontrarse con un punto en común: El uso de Machine Learning para la detección de ciertos fenómenos asociados a un problema que puede ser representado a través de un conjunto de datos.

Pero, ¿qué es Machine Learning? En palabras simples, es el uso de algoritmos computacionales para que una máquina aprenda a hacer cosas. Podría existir interés en aprender a completar una tarea, realizar predicciones etc. Este aprendizaje siempre se realiza a partir de observaciones o datos asociados al fenómeno que se pretende aprender, como ejemplos, experiencia directa, instrucciones, entre otros. Entonces la premisa general es aprender a hacer mejor las cosas en el futuro, en función de la experiencia del pasado.

Entonces, ¿cómo se desarrolla un proyecto de Machine Learning? Géron (2017) propone 8 pasos principales para llevar a cabo el proyecto:

1.- Mirar la imagen completa

Es importante identificar el contexto del problema. ¿Por qué llevar a cabo este proyecto es beneficioso para la organización? ¿Cuál es el objetivo de negocio? ¿Qué existe actualmente? ¿Cuáles soluciones alternativas tenemos? ¿Cómo mediré el desempeño de mi modelo? Estas preguntas son relevantes a la hora de definir el problema y sus alcances. Una vez que eso está claro, es posible diseñar el sistema que construiremos: ¿Qué tipo de tarea debo diseñar? ¿Una clasificación o regresión? ¿Se utilizará aprendizaje supervisado o no supervisado?

2.- Obtener los datos

Una vez que se determina el problema y el sistema, es hora de mirar los datos y estudiar su estructura. Estadísticas básicas como cantidad de datos, media, desviación estándar, entre otros. También selección de muestras (aleatorias o estratificadas según corresponda) para generar un set de datos de prueba y un set de entrenamiento. El set de entrenamiento es lo que permitirá enseñar al modelo aquellos patrones que desea identificar, mientras que el set de prueba es el conjunto de datos que permitirá probar el rendimiento del modelo.

3.- Descubrir y visualizar los datos para obtener información

Similar al paso anterior, pero la idea es un análisis más profundo a partir de visualizar los datos gráficamente, observar correlaciones entre los atributos existentes, etc.

4.- Preparar los datos para los algoritmos de Machine Learning

Antes de aplicar algoritmos de Machine Learning sobre los datos, es necesario pre-procesarlos/transformarlos a través de distintas técnicas para que los algoritmos tengan un buen desempeño. Entre estas transformaciones se puede destacar el escalar a través de normalización o estandarización (los atributos numéricos podrían tener escalas diferentes y esto puede impactar negativamente el desempeño de los algoritmos).

En vez de realizar este paso manualmente de forma constante, el autor recomienda escribir funciones para hacerlo, lo cual conlleva varios beneficios: Permitiría reproducir el pre-procesamiento de forma fácil en cualquier conjunto de datos, se podrían utilizar en un sistema que transforme los datos en el momento mientras opera (por ejemplo, si se estuviese trabajando con datos transaccionales) y hará que probar distintas combinaciones de transformaciones/pre-procesamientos sea sencillo de realizar.

5.- Seleccionar un modelo y entrenarlo

Ahora es el momento de seleccionar un modelo de Machine Learning y entregarle datos de entrenamiento para que pueda “aprender” a identificar lo que queremos. ¿Cuál es el algoritmo de Machine Learning que debo utilizar? La respuesta es: Depende. Primero, considerar si se pretende trabajar con un algoritmo de aprendizaje supervisado (es decir, que aprende en base a ejemplos previamente etiquetados) o si es un aprendizaje no supervisado (es decir, el algoritmo se encarga de organizar los datos y darles una estructura ya que esta no es conocida previamente). Otras consideraciones se asocian a la precisión deseada (podría preferir métodos menos precisos para evitar que el modelo se sobreajuste a los datos), el tiempo de entrenamiento, linealidad (por ejemplo en algoritmos de regresión logística o SVM donde se asume que las clases a identificar podrían estar separadas mediante una línea recta o su análogo en mayores dimensiones), cantidad de atributos, entre otros.

6.- Ajustar el modelo

Asumiendo que en el paso previo se realizaron pruebas con distintos algoritmos de forma tal que ahora se cuenta con una breve lista de algoritmos prometedores, es hora de ajustarlos de forma detallada. Los algoritmos de Machine Learning en general podrían recibir una gran cantidad de parámetros, los cuales deben ser ajustados y distintas combinaciones de valores para estos podrían dar resultados diferentes en función de los datos. Entonces, la idea es probar con distintos valores para encontrar la configuración más adecuada. Sin embargo, esto podría ser tedioso de realizar de forma manual. En general, paquetes de análisis estadístico y Machine Learning como Scikit-Learn en Python disponen de herramientas que permiten realizar automáticamente esta búsqueda de parámetros.

7.- Presentar la solución

Antes de iniciar todo, es importante “presentar” esta solución, lo que involucra destacar lo aprendido, documentar aquellos elementos que funcionaron y que no funcionaron, dejar claros los supuestos hechos sobre el modelo y las limitaciones que éste tiene. Esto permitirá que sea validado por quienes deben aprobar su lanzamiento a producción.

8.- Iniciar, supervisar y mantener el sistema

Finalmente, luego de validar correctamente el modelo es hora de llevar la solución a un entorno de producción, estando preparado para recibir datos reales y poder operar en ese contexto. Es importante que exista código de monitoreo para supervisar el desempeño del sistema implementado y poder lanzar alertas en caso de que algo no funcione bien.