
Cuatro pasos para crear un modelo de Machine Learning
Aunque nuestro modelo dependa del problema, de los datos, y de los resultados esperados, podemos definir una serie de pasos que siempre tendremos que emprender a la hora de crear un modelo de Machine Learning supervisado (para ver la diferencia entre modelos supervisados y no supervisados echa un vistazo a mis anteriores artículos.):
- Extracción de los datos
- Preparación de los datos
- Creación del modelo
- Implementación del modelo
¡No te pierdas ningún nuevo vídeo!
Visita mi canal de Youtube
Extracción de los datos
Aunque parezca un paso trivial, la extracción de datos es un punto muy importante para la creación de un modelo. Primero, es fundamental entender las fuentes de datos y su contenido. Debemos estar seguros de lo que estamos extrayendo. Segundo, la calidad del dato es clave. Si queremos estimar el precio de una casa en base a su tamaño y antigüedad, pero el valor del precio no es correcto, nuestro modelo será incorrecto. Además, la fuente de datos tiene que ser compatible con la futura puesta en producción del modelo. Por ejemplo, si queremos implementar un algoritmo de recomendación en nuestra página web, pero entrenamos el modelo con datos que no vamos a tener desde la navegación web del usuario o que no podemos suministrar de manera fluida, pues probablemente nuestro modelo no se podrá implementar.
Preparación de los datos
Aunque en la fase de extracción nos hayamos asegurado de la calidad y de que significan los datos, necesitamos adaptarlos para nuestro modelo. Esta fase está más ligada el tipo de modelo elegido dado que tendrá una serie de requisitos específicos. Por ejemplo, un modelo KNN de clasificación necesita que las variables de entrada tengan la misma escala y probablemente necesitemos normalizarlos o estandarizarlos. O un modelo de regresión no admite “missings” y es sensible a los valores atípicos, por lo que deberemos solucionar estos puntos. Sin entrar demasiado en detalle, podemos diferenciar en dos partes la preparación de los datos: limpieza de datos y diseño de características (feature design).
Por limpieza de los datos, se incluyen todos los ajustes de formato necesarios. Por ejemplo, averiguar que en la extracción no haya problemas con comas, puntos o caracteres especiales, transformar las zonas horarias si necesario, unificar los nombres de una variable si aparecen de manera diferente etc. Además de esta limpieza “general”, hay otros dos puntos importantes: datos que faltan (missings) y valores atípicos. En el primer caso, hay que recordar que algunos modelos no los admiten, como las regresiones. Para solucionar esto, si no queremos eliminar el registro, debemos entender si el “missing” tiene un significado o no. Si por ejemplo tenemos los gastos de nuestros clientes en el último mes, y para algunos el valor es nulo, probablemente signifique ‘0’ y lo podemos reemplazar. Si se trata de datos de una encuesta, un nulo podría significar que el encuestado ha preferido no responder y podríamos incluir “sin respuesta” como una categoría más. Sin embargo, si el valor que falta es un error, y no queremos eliminar el registro de la tabla, podemos utilizar una estimación para reemplazarlo, desde un simple promedio, hasta un modelo de predicción.
Por otro lado, el análisis de los valores atípicos es un poco más complejo. Primero, tenemos que definir que es un valor atípico, aunque normalmente se utilizan técnicas estadísticas como el rango intercuartílico o la desviación típica. Segundo, es necesaria una valoración más cualitativa por parte del analista. Imagínate que vamos a crear un modelo para estimar el precio de una casa en base a tamaño y antigüedad. En los datos extraídos hay una vivienda cuyo precio es de 5 millones cuando el resto está entre 100.000 y 1M €. Hemos detectado que es un valor atípico, pero ¿qué hacemos con ello? Pues primero debemos intentar determinar si se trata de un error o no. Si lo podemos verificar, y se trata de un error, corregimos el registro o lo eliminamos. Si se trata de un valor real, entonces tenemos que razonar si nos conviene incluirlo o no en el modelo. Primero hay que pensar si es representativo. En nuestro ejemplo, puede que no lo sea ya que queremos crear un modelo que estime bien casas de un cierto valor, pero no nos interesa estimar otros tipos de viviendas. Además, no teniendo un abanico de precios entre 1 y 5 millones, puede crear problemas de estimación.
Siguiendo con el segundo punto de la preparación de los datos (feature design), podemos definirlo como la adaptación de los datos a los requisitos del modelo. Se suele incluir lo siguiente:
- transformaciones: se trata de transformaciones tanto para cumplir con los requisitos del modelo como para mejorar sus resultados. Por ejemplo, una regresión lineal necesita que todos los datos sean numéricos, por ello, si tenemos una variable categórica, hay que transformarla en una variable dummy (crear una o más variables de 0 y 1). Otros ejemplos de transformaciones son normalizar los datos, estandarizarlos, crear intervalos, agrupar, codificar etc.
- feature engineering: este proceso es ir más allá de los variables disponibles y crear nuevas variables a partir de las que tengamos. Se trata de cálculos entre dos o más variables (por ejemplo, una ratio o una multiplicación) o aplicar transformaciones a una variable. Este último es por ejemplo el caso cuando en una regresión la relación no es lineal y calculamos el logaritmo, la raíz o el valor inverso de la variable.
No suelo incluir en este punto la selección de variables dado que el trabajo de excluir o añadir variables se realiza durante el entrenamiento mismo del modelo. En esta fase podríamos hacer una primera selección en base al conocimiento del negocio, pero esta selección probablemente ya la tengamos desde la fase de extracción de datos. Además, una tendencia de Machine Leraning, comparado con la estadística tradicional (revisa este post), es incluir el mayor número de variables posibles, para después detectar patrones y afinar en base al rendimiento.
Creación del modelo
Esta es probablemente la parte más interesante del proceso de Machine Learning. No hay que olvidar que en la fase de preparación de los datos ya hemos tenido que adaptar nuestras variables al modelo, así que la última parte de la fase anterior y la primera parte de esta fase se desarrollan en paralelo. Me refiero a la elección del modelo o del algoritmo que utilizaremos. Más concretamente, se trata de definir qué tipo de función de predicción vamos a utilizar. Como expliqué en otro artículo, el objetivo de un modelo de Machine Learning es aproximar la función de predicción () a la función real (f). Por ejemplo, tenemos modelos lineales, logísticos, de árboles, bayesianos, KNN, o los ensamblados de diferentes modelos. Generalizando, la elección del modelo depende del tipo de problema (y objetivo) y de los datos a nuestra disposición. Retomando el ejemplo anterior, nuestro objetivo era de predecir el precio de una vivienda en base al su tamaño y antigüedad. Nuestro problema y principal objetivo es la predicción, así que podemos utilizar tanto una regresión lineal como una red neuronal, o un árbol de regresión. Cada uno tienes sus condiciones donde funciona mejor o peor, pero en principio podemos utilizarlos todos y ver que es mejor. Sin embargo, si nuestro objetivo fuera inferencial, es decir entender la relación entre las variables predictoras y el precio, entonces la regresión lineal sería nuestra elección debido a su mayor interpretabilidad. Otro aspecto a tener en cuenta es el tipo de variable objetivo, en concreto si estamos estimando un valor o una categoría. Esto se traduce en dos tipos de modelos: regresión y clasificación. Parte de los algoritmos funcionan con las dos con algunas adaptaciones, otros sólo se utilizan para uno y otro tipo.
El segundo punto de la fase de creación del modelo es definir la función de coste. Esta función es la que dice al modelo como aprender y que nos indica la bondad de ajuste de este. El mismo algoritmo puede utilizar diferentes funciones de coste, por ejemplo una regresión lineal puede utilizar el más común de los mínimos cuadrados, u otras como la desviación absoluta mínima. Hay que destacar que la elección de la función de coste depende del algoritmo utilizado y, en particular, de si se trata de un problema de clasificación o regresión. En el primer caso utilizaremos más bien ratios de error, mientras que en el segundo un valor que represente el error.
La siguiente parte es el entrenamiento del modelo y consta de tres pasos iterativos que se repiten hasta llegar a la versión final del modelo. Si utilizamos más de un algoritmo, habrá que realizar estos pasos para cada uno de ellos:
- aprendizaje: utilizando los datos de entrenamiento y los ajustes predeterminados lazamos el algoritmo para que optimice la función de predicción y nos dé los primeros resultados.
- evaluación: valoramos el resultado analizando tanto los indicadores del mismo aprendizaje (por ejemplo en una regresión el R cuadrado, los p-valores, los coeficientes etc.) como el rendimiento al aplicar el modelo a los datos de prueba (o test). Es decir que intentamos predecir utilizando un nuevo conjunto de datos. Esto es fundamental para simular como el modelo funcionaría en una predicción real, y así evitar posibles problemas de sobreajuste.
- tuneo de hiper-parámetros y variables: dependiendo del modelo, tenemos a nuestra disposición una serie de hiper-parámetros que podemos modificar para mejorar el rendimiento. Además, podemos excluir o añadir nuevas variables y volver al paso de “aprendizaje”.
Después de varias iteraciones y de dar con el modelo (o diferentes modelos si utilizamos diferentes algoritmos) más optimizado. Sin embargo, todas estas iteraciones hacen que nuestro modelo tiende a sobreajustar hacia los datos de prueba. Aunque lo estemos entrenando con los datos de entrenamiento, en cada iteración estamos haciendo modificaciones para que mejore su resultado con los datos de prueba. Por ello, para evitar este sesgo, deberíamos validar finalmente el modelo con un tercer conjunto de datos llamado “de validación”. Este paso se refiere a la validación del modelo y puede que necesitemos volver a los pasos anteriores si el resultado no es aceptable.
Implementación del modelo
La “puesta en producción” del modelo no es otra cosa que pasar de la teoría a la práctica, es decir explotar el modelo para tomar decisiones y acciones. El tipo y complejidad de la implementación depende del objetivo de nuestro modelo. Siguiendo con nuestra estimación del precio de una vivienda, puede que solo nos interesaba de forma puntual para dar información más completa del mercado a unos agentes inmobiliarios. Pero si nuestro objetivo era crear una aplicación para devolver al usuario el precio estimado de una vivienda, entonces deberemos desplegar nuestro modelo en un servidor o algo similar para que funcione e interactúe en la aplicación.