Icono del sitio Arnau Dunjó Workspace

Introducción al Machine Learning

IA

IA

Recientemente me he introducido en el maravilloso mundo del “machine learning”. Unos cursos de Linkeding Learning y unas horas de dedicación han sido suficientes para entender que es capaz de hacer, posibles usos e incluso de realizar un modelo (muy sencillo) de clasificación automática de texto.

Más allá de una implementación concreta, que veremos en el próximo artículo, la idea es enseñar a grandes rasgos, cuál es la “magia” del Machine Learning y comprender sus posibilidades y limitaciones.

Que es el Machine Learning?


Como se puede ver en el diagrama siguiente, el Machine Learning (aprendizaje automático) es una disciplina dentro de la rama de la Inteligencia Artificial

Esquema de la composición de las dos grandes disciplinas que componen la Inteligencia Artificial

Si tuviera que resumir diría que consiste en la aplicación de algorítmicos matemáticos (especialmente estadísticos) para intentar predecir algo basándose en su histórico. Seguro que con un ejemplo lo ve más claro.

Ejemplos de uso del Machine Learning (ML)

Supongamos que queremos intentar predecir el retraso (más probable) que tendrá un vuelo de Barcelona a Girona. Pensaréis que no hay que hacer un modelo para encontrar una respuesta bastante aproximada a la realidad, que sólo hay que hacer una media de los retrasos de este vuelo de los últimos meses. Pues si no nos hace falta ser muy precisos podría ser suficiente, pero si queremos afinar tendremos que ir más allá y observar más variables. Sin darle muchas vueltas, podría ser interesante tener en cuenta también:

Diferencia entre Machine Learning y Deep Learning

El “aprendizaje” realizado por un modelo de Machine Learning se puede clasificar en dos grandes grupos: supervisado y no supervisado.

Diferencia entre el “machine learning” tradicional y el “deep learning”

La primera capa se representan las variables de entrada y en las posteriores se van aplicando algoritmos a cada una de estas variables de entrada para finalmente combinar todos estos datos de forma que dé un solo resultado. El ejemplo más clásico es el reconocimiento de objetos.

Distribución de las capas de una red neuronal de detección de objectos

Os dejo el enlace a una masterclass muy interesante que organizaron desde el CIDAI donde David Hurtado Torán (Customer Success Innovation Lead at Microsoft) explica de una forma muy didáctica las diferencias entre Machine Learning / Deep Learning, y “el estado de el arte “actual.

Etapas de un proyecto de ML

Como os comentaba la inicio del artículo, para hacernos una idea más concreta de lo que estamos hablando, comentaremos modelo de clasificación de texto muy sencillo que podríamos aplicar para categorización de incidencias.

Como todo proyecto, se recomienda seguir una serie de etapas para minimizar los posibles errores maximizando así las posibilidades de éxito:

  1. Definición del objetivo.
  2. Recopilación y preparación de los datos.
  3. Elegir el modelo.
  4. Entrenamiento del modelo.
  5. Evaluación del modelo.

1. Definición del objetivo.

Imaginemos que trabajamos con un software central donde se reciben todas las incidencias de la empresa, desde la solicitud que pide la creación de un nuevo usuario al sistema, hasta una reclamación sobre un error en una nómina. Para facilitar el cribado de las incidencias y que los especialistas sólo les lleguen las incidencias que pertenecen a su ámbito de conocimiento, todas las incidencias se clasificarán previamente en temáticas / colas.

El objetivo es crear un modelo de ML (de aprendizaje supervisado) que sea capaz de averiguar a qué temática / cola pertenece una nueva incidencia. Como es aprendizaje supervisado deberemos disponer de una cantidad suficientemente grande (del orden de miles) de ejemplos que facilitar al modelo para que aprenda qué tipo de incidencia cada cola.

2. Recopilación y preparación de los datos

Antes de facilitar los datos de ejemplo al modelo deberemos asegurarnos que están en un formato que sea fácil de leer por el ordenador.

Calidad de los datos

Todos los valores para una misma variable deben tener el mismo formato y la misma estructura (normalizar):

Por ejemplo, en el ejemplo anterior que trataba de adivinar el retraso de los vuelos, si tuviéramos un campo que informa del retraso de los vuelos, que se ha informado por diferentes personas manualmente, podríamos tener valores tan dispares como:

El modelo sólo entenderá el “12” y no sabrá que hacer con el resto de valores de aquella variable.

Para no complicar el ejemplo y podernos centrar en lo que realmente nos interesa, imaginamos que ya hemos hecho gran parte del trabajo de normalización de los textos y que nos hemos descargado todas las incidencias en un CSV donde aparezcan, al menos, los siguientes campos:

3. Elección del modelo

Actualmente hay 3 grandes tipos de modelos:

Dentro de cada tipo modelo hay diferentes algoritmos matemáticos posibles. Por ejemplo hay diferentes algoritmos de encontrar el plato preferido de un cliente y dependerá de la aproximación que quieras hacer y de los datos que tengas el que un algoritmo te genere mejor o peores resultados.

4. Entrenar el modelo

Ahora si, ya lo tenemos todo listo para empezar a programar el entreno del modelo.

Los lenguajes más conocidos para crear proyecto de Machine learning són R, Python y Java. Os recomiendo empezar a aprender ML en Python ya que es el más práctico para dar los primeros pasos ya que existen multitud de librerías que ayudan muchísimo y una cantidad muy grande de ejemplos y documentación.

Además, existe el proyecto JupyterNotebook que permite programar Python desde una interfaz web, pueden ejecutar el código para líneas de manera que puedes ejecutar sólo un parte del código tantas veces como quieras pero manteniendo los estados de las variables y objetos con los valores obtenidos de las líneas anteriores sin tener que ejecutar -las de nuevo. Es muy práctico cuando se trabaja con operaciones que pueden tardar mucho tiempo en ejecutarse como es el caso de los proyectos de ML.

Hasta aquí la parte teórica del ejemplo. Si deseáis ver una implementación en Python muy sencilla de un modelo clasificador de incidencias, he escrito un artículo de cómo hacerlo utilizando NL (Natural Language).

Conclusión

Hemos visto que la tecnología está en un punto que, nos permite predecir mucho mejor que con las técnicas clásicas. Ya hay mucha documentación y herramientas que “democratizan” muchísimo el acceso y que por lo tanto vale la pena incluirla sin “miedo” en los proyectos que puedan salir beneficiados.

Salir de la versión móvil