A la hora de usar Machine Learning, es conveniente seguir un proceso si queremos obtener buenos resultados. Al seguir un proceso, podemos hacer un mejor uso de nuestro tiempo. Además tendremos una orientación sobre qué es lo que debemos hacer en caso de que nuestros resultados no sean tan buenos como esperábamos. En este artículo vamos a hablar sobre las fases del proceso de machine learning y cómo están relacionadas entre ellas.

Las fases del proceso de machine learning

El diagrama muestra las distintas fases del proceso de machine learning y cómo interaccionan entre ellas. Están basadas en el estándar CRISP-DM, con la excepción de que me he permitido incluir la fase de «evaluación de la solución actual».

Fases del proceso de Machine Learning
Fases del Proceso de Machine Learning

Entender el Problema

Es muy importante entender el problema que tenemos que resolver. A lo mejor no me crees si te digo que he visto casos en los que se encontró una solución perfecta para un problema diferente del que se tenía. Entender el problema normalmente lleva bastante tiempo, sobre todo si el problema proviene de un sector en el que tienes pocos conocimientos. Le he asignado un esfuerzo relativo medio a esta fase porque la idea es colaborar con las personas que saben mucho acerca del problema.

Mi consejo para tener un mejor entendimiento del problema es preguntar ¿por qué? … y cuando te respondan, pregunta otra vez ¿por qué? … y así hasta que te quedes satisfecho. En muchos casos, sabiendo el porqué de las cosas puede ayudarte a entender rápidamente la forma de pensar en esa industria. Además te va a resultar más fácil imaginarte la respuestas a otras preguntas que seguro que tendrás cuando estés trabajando en el problema.

Entender los datos

Tan importante como entender el problema es entender los datos que tenemos disponibles. Es común hacer un análisis exploratorio de datos para familiarizarnos con ellos. En el análisis exploratorio se suelen hacer gráficos, correlaciones y estadísticas descriptivas para comprender mejor qué historia nos están contando los datos. Además ayuda a estimar si los datos que tenemos son suficientes, y relevantes, para construir un modelo.

Definir un Criterio de Evaluación

Imagínate que obtenemos un modelo de machine learning perfecto … ¿cómo lo sabríamos? O peor aún, ¿cómo sabríamos que un modelo da resultados de poca calidad? Antes de empezar siquiera a pensar en utilizar un modelo de aprendizaje automático, tenemos que definir cómo vamos a evaluarlo.

El criterio de evaluación se trata normalmente de una medida de error. Típicamente se usa el error cuadrático medio para problemas de regresión y la entropía cruzada para problemas de clasificación. Para problemas clasificación con 2 clases (que son muy comunes), podemos utilizar otras medidas tales como la precisión y exhaustividad.

Le he asignado un esfuerzo relativo bajo a esta fase porque hay ya varios criterios de evaluación estándar que funcionan para muchos problemas. Además son tan generales que funcionan en casi todos las industrias y sectores.

Evaluación de la solución actual

Probablemente el problema que queremos resolver con Machine Learning, ya se esté resolviendo de otra forma. Seguramente, la motivación de usar aprendizaje automático para resolver este problema sea la de obtener mejores resultados. Otra motivación común es la de obtener resultados similares de forma automática,  reemplazando posiblemente un trabajo manual aburrido.

Si medimos el rendimiento de la solución actual (con el criterio de evaluación elegido), podemos compararlo con el rendimiento del modelo de machine learning. Así podremos saber si merece la pena usar el modelo de machine learning o si nos quedamos con la solución actual.

Si no hay ninguna solución actual, podemos definir una solución simple que sea muy fácil de implementar. Por ejemplo, si queremos predecir el precio de una vivienda con machine learning, podríamos compararlo con una solución simple (por ejemplo, valor mediano del metro cuadrado por barrio). Sólo así, cuando tengamos un modelo de machine learning terminado, podremos decir si es suficientemente bueno, si necesitamos mejorarlo, o si no merece la pena.

Si al final resulta que la solución actual o una solución simple es similar a la solución que nos da el machine learning, probablemente sea mejor usar la solución simple. Funcionará casi siempre mejor y será más robusta.

Preparar los datos

La preparación de datos es una de las fases del machine learning que supone un mayor esfuerzo. Los principales desafíos a los que nos vamos a encontrar en esta fase son los siguientes:

Datos Incompletos

Es bastante normal que no tengamos todos los datos que nos gustaría tener. Por ejemplo, si queremos predecir qué clientes tiene más probabilidad de comprar un producto y los datos que tenemos provienen de una encuesta por internet. Habrá muchas personas que no hayan rellenado todos los campos. Pero la vida es así, y tener datos incompletos es mejor que no tener datos en absoluto. Así que ¿cómo podemos lidiar con datos incompletos?

  • Eliminándolos: una opción fácil es sólo quedarnos con los datos completos. Esto puede ser una opción si se trata de una minoría. Pero casi nunca es la mejor opción porque habría muchos datos (encuestas) que estaríamos obligados a desechar.
  • Imputarlos con un valor razonable: cuando falte un valor, pondremos automáticamente un valor que tenga sentido. Por ejemplo, si alguien no ha puesto su edad en una encuesta, podríamos usar la edad media de los encuestados que sí han especificado su edad.
  • Imputarlos con un modelo de aprendizaje automático: si queremos ser más sofisticados, podemos construir un modelo de machine learning que prediga cuál es el valor que nos falta aprendiendo de los casos en los que sí tenemos datos.
  • No hacer nada y usar alguna técnica de machine learning que pueda manejar datos incompletos.

Combinar datos de varias fuentes

Casi siempre tenemos que combinar datos de diferentes fuentes. Algunos datos pueden venir de una base de datos, otros de una hoja de cálculo, de ficheros, etc. Tenemos que combinar los datos de forma que los algoritmos de machine learning puedan considerar toda la información.

Darle el formato adecuado a los datos

Si queremos usar librerías de machine learning que ya están disponibles, tenemos que darle formato a nuestros datos. En general, estas librerías esperan que los datos tenga forma de matriz o de tensor. Un tensor es una generalización de una matriz. Si la matriz tiene 2 dimensiones, el tensor tiene un número «n» de dimensiones.

Calcular características relevantes (features)

Los algoritmos de machine learning funcionan mucho mejor si le ofrecemos características relevantes en vez de los datos puros. Por poner un ejemplo, a nosotros nos resulta mucho más fácil saber la temperatura en grados Celsius que saber cuánto se han dilatado tantos miligramos de mercurio en un termómetro tradicional. De la misma forma, es muy útil transformar los datos para hacer la tarea de aprendizaje más fácil.

La fase de calcular características relevantes («features»en inglés) requiere un esfuerzo mayor. Hay que pensar en qué características van a ser más relevantes para solucionar el problema y probarlo. Algunas veces la característica que hemos creado no funciona tan bien como hubiéramos pensado… pero otra muchas veces sí. Aquí la experiencia es un grado. Cuantos más problemas de machine learning resolvamos, no volveremos mejores creando características.

Normalización de datos

En muchos casos, es útil normalizar los datos para hacerle más fácil a la técnica de machine learning el aprendizaje. Por normalizar nos referimos a poner a todos los datos en una escala similar. Hay varias formas de normalizar los datos, que ya veremos en otro artículo.

Construir el modelo

La fase de construir un modelo de machine learning, una vez que tengamos los datos preparados, requiere sorprendentemente poco esfuerzo. Esto es así porque ya existen varias librerías de machine learning disponibles. Muchas de ellas son gratuitas y de código abierto.

Durante esta fase, tenemos que elegir que tipo de ténica de machine learning queremos usar. El algoritmo de machine learning aprenderá automáticamente a obtener los resultados adecuados con los datos históricos que hemos preparado. Eso sí, tendrá un error.

Análisis de Errores

La fase del  análisis de errores requiere un esfuerzo relativo medio. Analizar errores es importante para entender qué es lo que tenemos que hacer para mejorar los resultados de machine learning. En particular las opciones serán:

  • usar un modelo más complejo
  • usar un modelo más simple
  • darnos cuenta de que necesitamos más datos y / o más características
  • desarrollar una mejor comprensión del problema y entender mejor cuál es el siguiente paso a dar

En la fase de análisis de errores intentaremos asegurarnos que nuestro modelo es capaz de generalizar. La generalización es la capacidad que tienen los modelos de machine learning de producir buenos resultados cuando usan datos nuevos. Desarrollaremos más el análisis de errores y la generalización en otro artículo.

En general, no es difícil conseguir resultados aceptables usando este proceso. Sin embargo, si queremos obtener resultados realmente buenos, deberemos iterar sobre las fases anteriores varias veces. Con cada iteración, nuestro entendimiento del problema y de los datos será cada vez mayor. Esto hará que podamos diseñar mejores características relevantes y reducir el error de generalización. Un mayor entendimiento también nos ofrecerá la posibilidad de elegir con más criterio la técnica de machine learning que más se ajuste al problema.

Casi siempre, tener más datos ayuda. En la práctica, más datos y un modelo simple tiende a funcionar mejor que un modelo complejo con menos datos.

Puedes consultar el artículo Análisis de Errores en Machine Learning para profundizar más en este tema.

Modelo integrado en un Sistema

Una vez que estemos satisfechos con el error, tenemos que compararlo con el error de la solución actual. Si es lo suficientemente mejor, integraremos el modelo del machine learning en nuestro sistema.

La fase de integrar un modelo de machine learning en un sistema requiere un esfuerzo relativo mayor. Esto es así porque necesitamos:

  • poder repetir de forma automática las fases de preparación de datos
  • lo que requiere que el modelo de machine learning se comunique con otras partes del sistema
  • y que los resultados del modelo se usen en el sistema
  • además, debemos monitorizar automáticamente los errores del modelo
  • y avisar si los errores del modelo crecen con el tiempo
  • para re-construir el modelo de machine learning con nuevos datos, ya sea manual o automáticamente

Una parte considerable del esfuerzo va a construir interfaces de datos. Estos interfaces son necesario para que el modelo pueda obtener datos automáticamente y para que el sistema pueda usar su predicción de forma automática. Aunque es un esfuerzo considerable, es esencial. Para que el machine learning y la inteligencia artificial sean útiles, en la mayoría de los casos deben integrarse en un sistema mayor. Así que la cuestión no es tanto ¿qué puede hacer el machine learning? sino ¿qué puedo hacer con el machine learning?

Ejemplo de modelo integrado

El sistema de traducción de Google no sería muy útil si Google sólo hubiese construido un modelo de machine learning. Esto estaría muy bien como estudio académico pero no tendría valor comercial. El verdadero valor está en que el modelo está integrado en un sistema web en la nube. Y este sistema permite a millones de personas usar este modelo de machine learning para traducir frases

Recursos

  • [vídeo] introductorio a la Inteligencia Artificial y al Aprendizaje Automático (en inglés)

Suscríbete a IArtificial.net

Fases del Proceso de Machine Learning

2
Deja un comentario

avatar
1 Hilos de comentario
1 Respuestas de hilo
1 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
2 Autores de comentarios
Jose Martinez HerasJosé David Autores de comentarios recientes
  Suscribir  
el más nuevo el más antiguo el más votado
Notificar de
José David
Invitado
José David

Hola.
Podríamos decir que el porcentaje para la preparación de los datos supone un 75-80% del proceso total?.
Un saludo.
José David.