Introducción a Machine Learning

¿Qué es Machine Learning?

Machine Learning es el campo de la ciencia que busca que los ordenadores/máquinas aprendan sin ser explícitamente programados.

Es un cambio en el paradigma de la programación. Clásicamente se ha programado a los ordenadores para que hagan tareas definiendo explícitamente todos y cada uno de los pasos que debe seguir.

Con Machine Learning, le damos unos datos al ordenador y definiéndole cómo debe utilizarlos para aprender (preprocesando los datos, eligiendo el algoritmo, … como veremos más adelante). El ordenador entonces aprende de los datos y genera un programa que dados nuevos datos de entrada genera unos nuevos datos de salida.

Mientras que con el paradigma clásico teníamos que definir qué operaciones hacer con los datos de entrada y en qué orden, con Machine Learning el ordenador toma estas decisiones.

Tipos de problemas de Machine Learning

Los problemas de Machine Learning se pueden clasificar en dos tipos, regresión y clasificación. Según se trate de un problema de regresión o clasificación, utilizaremos métodos distintos.

Estamos ante un problema de regresión cuando la variable a predecir es un valor numérico. Y estaremos ante un problema de clasificación cuando la variable a predecir es categórica (dos o más clases distintas).

¿Cómo funciona Machine Learning?

A grandes rasgos el proceso de Machine Learning se resume en esta imagen:

Empezamos con unos datos que nos interesan para resolver el problema planteado, pueden ser datos de ventas de un producto, datos médicos de una serie de personas, imágenes de una línea de producción, etc.

Preprocesado

Debemos preprocesar estos datos, esto significa prepararlos para tener un formato válido para el algoritmo de Machine Learning. Algunos ejemplos de las transformaciones que podemos hacer son los siguientes. No es una lista completa ni mucho menos, cada problema es un mundo y hará falta un preprocesado distinto.

  • Rellenar valores que faltan (NaN)
  • Eliminar datos duplicados
  • Escalar valores numéricos
  • Convertir textos a números

Hecho esto debemos definir una estrategia de validación. Esto significa decidir cómo valoraremos si el algoritmo está funcionando bien o mal.

Estrategia de validación

Primero elegiremos la métrica con la que valoraremos el funcionamiento del algoritmo. Algunos ejemplos de métricas que se pueden utilizar son:

Para problemas de regresión:

  • RMSE (Raíz del error al cuadrado medio)
  • MAE (Error absoluto medio)
  • RMSLE (Raíz del error logarítmico al cuadrado medio)

Para problemas de clasificación:

  • Precisión
  • AUC (área bajo la curva)

La estrategia de validación más simple consiste en dividir todos los datos que tenemos en tres conjuntos distintos, uno de entrenamiento, uno de validación y uno de testing. En la imagen se ve un ejemplo de este tipo de estrategia de validación:

Los valores asignados los he escogido al azar, no tendrán que ser estos que he elegido yo, para cada problema el tamaño óptimo de cada conjunto de datos será distinto y te corresponde a ti elegir los valores adecuados.

Con esta división de datos, tenemos que trabajar con los conjuntos de entrenamiento y validación. Utilizaremos el training set para entrenar el modelo y el validation set para ver si lo que estamos haciendo funciona bien. Cuando ya hayamos trabajado mucho el problema y creamos haber llegado a la solución óptima obteniendo una buena puntuación en el set de validación, entonces y solo entonces utilizaremos el test set para evaluar el funcionamiento del modelo entrenado. Deberíamos obtener un rendimiento similar al set de validación, si no es así seguramente hayamos hecho algo mal durante el proceso de entrenamiento y validación.

Entrenamiento del modelo

Con los datos ya divididos, cogemos el conjunto de datos de entrenamiento y lo utilizamos para entrenar el modelo de Machine Learning que queramos. Cada modelo tiene un funcionamiento distinto y puede estar basado en distintas fórmulas.

El proceso de entrenamiento consiste en buscar los parámetros óptimos para el modelo y los datos elegidos.

Algunos ejemplos de algoritmos de Machine Learning que podemos utilizar son:

  • Regresión Lineal
  • Regresión Logística
  • KNN (K-Nearest Neighbors)
  • SVM (Support Vector Machine)
  • Decision Trees (Árboles de decisión)
  • Random Forest

Una vez entrenado el algoritmo, podemos pasarle unos datos que no haya visto antes (los de validación mientras estamos trabajando, los de test una vez creemos que hemos acabado) y obtendremos una puntuación según la métrica de evaluación que hayamos elegido.

Predicciones con un modelo de Machine Learning

Algoritmos de Machine Learning

Los algoritmos de Machine Learning se clasifican según los datos que utilizan. Los modelos pueden ser de aprendizaje supervisado, no supervisado o semi-supervisado.

Para el aprendizaje supervisado, necesitamos datos de la variable objetivo. Necesitamos tanto la variable predictora X como la variable a predecir y.

Aprendizaje supervisado en Machine Learning
Aprendizaje supervisado

Para el aprendizaje no supervisado, no necesitamos los datos de la variable objetivo y. En este caso solo tendremos la variable X.

En el caso del aprendizaje semi-supervisado, de la variable objetivo solo tendremos datos para algunas muestras de nuestros datos y para otras no sabremos su valor.

Aprendizaje semi-supervisado en Machine Learning
Aprendizaje semi-supervisado

Algoritmos de Machine Learning

Veamos algunos algoritmos de Machine Learning. He elegido solo unos pocos, los que creo que son más representativos de las distintas técnicas que hemos hablado en el artículo.

Regresión Lineal

La regresión lineal es un algoritmo de aprendizaje supervisado útil para problemas de regresión. En resumen lo que hace la regresión lineal es buscar la recta que mejor se ajusta a los datos.

Regresión lineal

Lo que hacemos es buscar los parámetros m y n de la función Y = m*X + n para que la recta se ajuste tanto como sea posible a los datos.

Regresión Logística

La regresión logística es un algoritmo de aprendizaje supervisado para problemas de clasificación binaria. Dados unos datos los clasifica entre dos categorías distintas.

Regresión logística
Imagen extraída de Wikipedia, subida por Michaelg2015

La fórmula de la regresión logística es algo más complicada de entender pero el concepto es el mismo, buscamos los parámetros β0 y β1 que mejor se ajustan a los datos.

K-Means Clustering

Este es un algoritmo de aprendizaje no supervisado, el único que veremos en este artículo. A partir de unos datos, el algoritmo busca datos similares y los clasifica en el número de categorías que deseemos.

Esta imagen es la mejor explicación del algoritmo que conozco:

Algoritmo K-means clustering
Fuente: Gareth James · Daniela Witten · Trevor Hastie · Robert Tibshirani – An Introduction to Statistical Learning with Applications in R

A grandes rasgos lo que hace el algoritmo es asignar una categoría aleatoria a cada punto de los datos (Paso 1). A partir de estas categorías, busca el punto medio (centroide) de cada categoría (Paso 2a) y asigna a cada punto la categoría correspondiente al centroide más cercano (Paso 2b). Y así sigue un proceso iterativo hasta llegar a la solución final cuando no hay cambios al recalcular el centroide.

Árboles de decisión

Los árboles de decisión son un algoritmo de aprendizaje supervisado que sirve tanto para tareas de clasificación como de regresión. Son muy poco potentes y generalmente dan un resultado muy malo pero como ventaja tienen que son muy fáciles de interpretar. Solo con esta imagen estoy seguro de que entenderás como funcionan:

Algoritmo árbol de decisión
Imagen extraída de Wikipedia, subida por Stephen Milborrow

El algoritmo decide una serie de divisiones para los datos y asigna una categoría (o un valor en el caso de un problema de regresión).

Random Forest

El algoritmo Random Forest tiene las mismas características que los árboles de decisión. De hecho, el algoritmo consiste en entrenar muchos árboles de decisión y unirlos para promediar su resultado. Si antes decíamos que los árboles de decisión son un modelo que funciona muy mal, los Random Forest suelen funcionar muy bien con todo tipo de datos.

Algoritmo Random Forest

Me parece genial… ¡Pero yo quiero más!

Esto ha sido una breve introducción al Machine Learning. Si quieres continuar aprendiendo y profundizar en todos los temas que hemos tratado, te recomiendo estos recursos.

Portada Hands-on Machine Learning

Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow es un libro que te enseña todo lo que necesitas saber para trabajar con algoritmos de Machine Learning. Tiene un enfoque muy práctico con muchos ejemplos de código.

Portada An Introduction to Statistical Learning

An Introduction to Statistical Learning es un libro que se enfoca en los algoritmos de Machine Learning. Está enfocado a la teoría y a explicarnos matemáticamente cómo funciona cada algoritmo.

Mi plantilla para Data Science con Python

Por último te recomiendo este artículo publicado en este mismo blog en el que hablo de la plantilla que utilizo para proyectos de Data Science. Se trata de un archivo en el que tengo todo el código necesario para ejecutar algoritmos de Machine Learning.

Este artículo sirve de apoyo a la presentación que he realizado para el CoronaConf 2020. La charla la puedes ver a continuación:

Albert Sanchez Lafuente

Estudié Ingenieria Industrial en la UPC. Continué mi formación en inteligencia artificial junto a la asociación Saturdays.AI de la que he formado parte del equipo de Barcelona desde sus inicios.