🎙 Episodio 80. Machine Learning 101

En el episodio de hoy de Un podcast ninja sobre Big Data hablamos de 3 cosas que tendrían que explicar en cualquier clase de Machine learning 101.

En episodios anteriores del podcast hemos hablado sobre Machine learning y los tipos de aprendizaje automático que hay:

Claves del Machine Learning

Vamos con dos cosas claves:

La primera es que un sistema de Machine Learning es un sistema que es capaz de realizar una tarea sin ser específicamente programado para ella. No le damos instrucciones sino que le damos datos.

La segunda es que el ciclo de vida de un modelo de machine learning tiene dos fases.

  • Una de entrenamiento 
  • Una de inferencia o predicción

Ciclo de vida de un modelo de Machine Learning

En la fase de entrenamiento, utilizamos un conjunto de datos conocido, el conjunto de datos de entrenamiento para ajustar los parámetros internos del modelo y conseguir minimizar un objetivo determinado, dependiendo del modelo.

La fase de inferencia o predicción tiene lugar cuando el modelo ya está entrenado, es decir que ya hemos ajustado sus coeficientes y los consideramos lo suficientemente buenos como para dejarlos fijos.

Durante esta fase el modelo recibe datos que no ha visto antes y produce una salida que, si hemos entrenado bien el modelo, resolverá la tarea que le habíamos asignado al modelo de Machine Learning.

Tareas de un modelo de Machine Learning

Las tareas que podemos asignar a un modelo de Machine Learning son fundamentalmente de dos tipos:

  • De clasificación.
  • De regresión.

Clasificación

En el caso de ser un modelo de clasificación la salida del modelo será una etiqueta o categoría que asigna a la observación de entrada una clase concreta de todas las posibles para nuestro problema.

Por ejemplo, un modelo de detección de fraude tendría como entrada datos acerca de la última transacción con nuestra tarjeta de crédito.

La fecha, hora, importe, comercio, lugar de la compra, cosa que se ha comprado y a partir de ahí el modelo genera una salida, que categoriza la observación como fraude o transacción legítima.

Dos clases posibles.

Podrían ser más, pero en este ejemplo pues son dos.

regresión

Por otro lado, los modelos de regresión tienen como salida un número, un número real. 

Otro ejemplo, tenemos un modelo que lo que hace es predecir el precio de un alquiler.

Como entrada al modelo tenemos una posible vivienda con su superficie en metros cuadrados, su ubicación, el número de habitaciones, la fecha, la distancia al metro más cercano, la orientación, el piso… lo que se os ocurra.

Con esa observación de entrada, el modelo calcula un precio… que es un número.

Estamos ante un modelo de regresión.

Podríamos tener un tercer modelo generado a partir de un montón de medidas de distintos usuarios.

¿Como cuando compráis ropa online que ponéis vuestra altura, peso, medidas y os recomienda una talla?

Pues así. 

Tenemos todos esos datos de medidas de gente y queremos producir camisetas de tres tallas diferentes.

El modelo podría agrupar todos los usuarios en 3 grupos diferentes según una medida de la similitud de los usuarios que hay en cada grupo.

A partir de ahí podríamos saber de qué tamaños hacer las tres tallas de camisetas (S, m, L) y después si un nuevo usuario nos da sus datos, saber qué talla recomendarle.

¡Aquí no tenemos ni idea de las tallas cuando estamos entrenando el modelo!

Sólo tenemos datos de entrada con medidas de gente.

Es un detalle importante porque define el tipo de aprendizaje durante la fase de entrenamiento.

Tipos de aprendizajes en Machine Learning

Si no tenemos muestras de las salidas que se esperan del modelo para los datos de entrenamiento, como en el caso de las tallas de las camisetas, sería aprendizaje no supervisado.

Si sí tenemos muestras de las salidas que se esperan, como en el caso de los precios de las viviendas, sería aprendizaje supervisado.

El modelo de detección de fraude podría entrenarse tanto por aprendizaje supervisado si tuviéramos en el dataset de entrenamiento observaciones con su correspondiente etiqueta de fraudulenta o no fraudulenta o por aprendizaje no supervisado, si no tuviéramos esa información.

Es decir, no sabríamos de antemano, a la hora de entrenar el modelo,  qué transacciones son fraudulentas y qué transacciones no lo son, por lo que utilizaríamos modelos capaces de identificar patrones o anomalías en los datos.

O sea, si todas nuestras observaciones son similares y hay alguna muy diferente, pues señalarla como posible fraude.

Igual alguna vez habéis viajado a algún sitio exótico y de repente os han rechazado un pago.

Pues eso.

El tipo de aprendizaje lo determinan los datos de entrenamiento que tenemos y si están etiquetados o no.

Dependiendo de los datos que tengamos disponibles o seamos capaces de recolectar podremos utilizar técnicas de aprendizaje supervisado o no supervisado durante el entrenamiento del modelo.

Bloques básicos de un modelo de ML

Dentro de cada una de estas categorías tendremos diversos modelos que podremos seleccionar, cada uno con sus particularidades pero con 3 cosas en común:

  • una función de error o de distancia,
  • un criterio de optimización basado en esa función,
  • un proceso de optimización que utilice los datos de entrenamiento para encontrar una solución al criterio de optimización que hemos definido.

En el caso de modelos supervisados generalmente la función a optimizar está basada en el error que comete el modelo a la hora de predecir la salida.

Es decir, en nuestro dataset de entrenamiento tenemos la etiqueta real de la observación y el modelo obtiene una etiqueta para esa observación.

La diferencia entre una y otra es el error que comete el modelo.

Este error se define de distintas maneras dependiendo del modelo que elijamos y del problema ante el que nos encontremos. 

Modelo de regresión

Si estamos ante un problema de regresión en el que estamos tratando números pues el error es la diferencia entre el resultado del modelo y el resultado real.

Una posibilidad es definir la función de coste como el valor cuadrático medio de los errores en cada observación del dataset, es decir, elevamos los errores al cuadrado. 

¿Por qué hacemos esto?

Al elevar los errores al cuadrado, conseguimos dos cosas importantes.

  • Primero, nos aseguramos de que errores grandes tengan un impacto mucho mayor en nuestra medida final, lo cual es lógico porque un error grande es, por lo general, más problemático que un error pequeño.
  • La segunda cosa es que evitamos que los errores positivos y negativos se compensen entre sí.

Por ejemplo, si un modelo predice un valor demasiado alto y positivo en un caso y uno demasiado negativo en otro, estos errores no se anularán mutuamente. 

Después, promediamos todos esos errores al cuadrado y obtenemos un solo número que nos indica cómo de preciso es el modelo en general.

Esta es la función de coste y lo que queremos es que sea lo más pequeña posible.

Queremos minimizarla.

Fijaos que aquí hemos tomado un par de decisiones bastante arbitrarias porque nos venían bien:

  1.  Elevar los errores al cuadrado, que podríamos haberlos elevado a la 4 o tomar el valor absoluto y habría funcionado igual pero nos ha convenido elevarlas al cuadrado. Esto nos va bien porque como queremos llegar al mínimo de la función de coste tendremos que diferenciarla y para eso nos es más fácil diferenciar algo elevado al cuadrado que alguna otra transformación más complicada. Básicamente nos estamos simplificando la vida.
  2. Hemos obtenido el valor promedio de todas las observaciones.

Al final estas decisiones que se toman en la definición de la función de coste es lo que acaba diferenciando a un modelo de Machine Learning de otro.

Nuestro criterio de optimización es minimizar la función de coste.

Cuando hagamos eso habremos conseguido que el error promedio que comete el modelo sea lo más pequeño posible.

Modelo de clasificación

Si estamos ante un problema de clasificación estaremos tratando con categorías así que para medir el error del modelo se utiliza la función de verosimilitud.

La función de veromilitud indica cuánto de probable es que la observación de entrada sea de una clase o de otra.

Lo que queremos es que el modelo devuelva probabilidades muy altas para la clase correcta y probabilidades muy bajas para el resto de clases.

En problemas de clasificación, la función de coste actúa como un marcador que nos dice cómo de bien está haciendo su trabajo el modelo.

Cuando el modelo asigna una probabilidad alta a la categoría correcta y bajas a las incorrectas, la función de coste produce un valor pequeño, indicando que el error es bajo.

Por el contrario, si el modelo se equivoca, asignando una alta probabilidad a una categoría incorrecta, la función de coste da un valor alto, señalando un error grande.

Así que queremos minimizar la función de coste para asegurarnos un buen modelo.

En problemas de clasificación esto se hace con una función que se denomina  entropía cruzada y que hace precisamente eso que os contaba.

Pero como digo, distintas funciones de coste dan lugar a distintos modelos de Machine Learning.

La cuestión es que hemos  definido dos posibles funciones de coste, una para regresión y otra para clasificación, y tenemos un criterio de optimización que es hacerlas lo más pequeñas posibles.

Proceso de optimización

El proceso de optimización implica ajustar los parámetros del modelo de manera que la función de coste sea minimizada. 

Aquí es donde realmente entrenamos el modelo.

El proceso de optimización se realiza utilizando técnicas de optimización matemática.

Una de las técnicas más comunes para realizar esta optimización es el descenso del gradiente.

Algoritmo de descenso de gradientee

El descenso del gradiente es un algoritmo que ajusta iterativamente los parámetros del modelo para reducir la función de coste.

En cada iteración,  calcula el gradiente de la función de coste con respecto a cada parámetro.

El gradiente es básicamente una dirección y magnitud que nos indica cómo cambiar los parámetros para llegar al mínimo de la función de coste más rápidamente.

Con esos valores vamos ajustando poco a poco, iteración a iteración los parámetros del modelo hasta que alcanzamos un criterio de parada.

Igual teníamos un número máximo de iteraciones o la función de coste cambia tan poco entre iteraciones consecutivas que ya no nos merece la pena seguir… lo que sea.

Tipos de modelos de Machine Learning

Estos algoritmos de Machine Learning están diseñados para optimizar un criterio específico de manera explícita, la función de coste.

Esto significa que tienen una función objetivo claramente definida, cuya optimización directa guía el proceso de aprendizaje del algoritmo. 

Otros algoritmos también tienen un criterio de optimización pero es algo implícito. Lo que significa que aunque buscan minimizar el error o maximizar la precisión, no lo hacen ajustando una función objetivo explícita.

En su lugar, estos algoritmos se basan en heurísticas o reglas que guían el proceso de aprendizaje.

Algunos de estos algoritmos, como los árboles de decisión, fueron desarrollados experimentalmente y basados en la intuición más que en un criterio de optimización predefinido.

Cuando se inventó todo esto,  muchos de los algoritmos detrás de modelos de Machine Learning se descubrieron mediante la experimentación y la adaptación de técnicas estadísticas.

La eficacia de los algoritmos se validaba a través de prueba y error y luego se desarrollaba toda la argumentación matemática.

TL;DR

En esto del machine learning, independientemente de si estamos trabajando con aprendizaje supervisado o no supervisado, o si estamos ante problemas de regresión o de clasificación, siempre operaremos bajo tres principios que definirán el modelo:

  • una función de error o distancia,
  • un criterio de optimización basado en esa función,
  • un proceso de optimización que ajusta los coeficientes del modelo utilizando los datos de entrenamiento.

A partir de aquí ya podemos empezar a ver distintos tipos de modelos de Machine Learning.

Espero que os guste el episodio.

Si es así, no olvidéis dejar un «Me gusta» y algún comentario al episodio en Ivoox o una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Youtube o donde quiera que escuchéis el podcast. 

Recordad que si tenéis cualquier duda o pregunta podéis contactar conmigo a través del formulario de contacto o podemos seguir la conversación en Twitter.

Muchas gracias por estar ahí y os espero en el próximo episodio de Un Podcast Ninja sobre Big Data.

Accede a todo el contenido premium

Ya no necesitas pagar cientos de euros por un Bootcamp para convertirte en ninja de los datos. Por solo 17€/mes (o menos 🤯), obtén acceso al podcast premium, a todos los tutoriales y a los resúmenes de los libros más top sobre Machine Learning y Ciencia de datos y aprende a tu ritmo.
¡Empieza ahora!
Copyright © 2024  · Datos 🥷 · Todos los derechos reservados