🎙 Episodio 22. Las claves del aprendizaje supervisado

En el episodio de hoy de Un Podcast Ninja sobre Big Data vamos a hablar de las claves del aprendizaje supervisado y en particular del modelo más sencillo: La regresión lineal.

Hace ya unos cuantos episodios, en el episodio 7 ya dedicamos un rato a hablar de lo qué era el Machine Learning y cómo se encuadraba dentro del campo de la Inteligencia Artificial.

Mencionamos de pasada los tipos de Machine Learning que existen, el supervisado, el no supervisado y el aprendizaje por refuerzo.

Y unas cuantas semanas más tarde, en el episodio 14, cuando hablábamos de conseguir datos para resolver un problema que nos había traído un cliente, veíamos que una parte muy costosa de la etapa conseguir datos era la de etiquetarlos.  

Quedaros con lo de etiquetar los datos porque es clave en lo que vamos a hablar hoy.

Hoy vamos a unir las piezas del puzzle y vamos a profundizar un poquitín más en el aprendizaje supervisado.

Supongamos ahora que voy a abrir una tienda de camisetas y que no tengo un almacén muy grande para guardar las que aún no he vendido. Obviamente, no quiero tener muchísimo stock sin vender que ocupe espacio pero tampoco quiero que vengan clientes y no me quede ninguna camiseta para venderle.

Sería una maravilla poder ser capaces de saber cuántas camisetas voy a vender y así no tener demasiadas ni demasiado pocas.

Así que decido apuntar en un papel las que vendo cada día.

DíaCamisetas vendidas
115
21
350
463
59
61
722

Ya llevo una semana vendiendo camisetas…

Y ahora vamos a hacer un experimento… El experimento consiste en que yo os pregunto cuántas camisetas se venden en el día que yo os diga. Podéis coger lápiz y papel si queréis pero no os voy a dar mucho tiempo… 

Empezamos.

¿Cuántas camisetas he vendido el día 6? ¿Y el día 4? ¿Y el día 1?

Bueno, pues si no habéis acertado todas, no os preocupéis que no es que vayáis mal de Machine Learning, eso sí… igual tenéis que comer más nueces o rabillos de pasas, para la memoria y eso.

Como habéis podido deducir os he preguntado solo sobre días que ya estaban en mi  papelito con las ventas así que lo único que hay que hacer es ir a la tabla y buscar la respuesta.

Conclusión:

El Machine Learning sólo nos puede ayudar con observaciones  que no hemos visto antes. Si no son instancias nuevas pues vamos a la tabla, buscamos el día que queremos y ya estaría.

¿Qué pasa si os pregunto cuántas camisetas he vendido el día 8?

En realidad no había ninguno pero el cerebro humano es particularmente bueno buscando patrones.

Por eso jugamos a buscar formas de animales y caras en las nubes. Si se mira durante un rato lo suficientemente largo siempre se encuentra algo. 

Así que en una tabla donde las observaciones no siguen ningún patrón, el Machine Learning tampoco puede ayudarnos. Bueno, ni el Machine Learning ni nada porque sacar un patrón de la tabla de ventas de la primera semana de mi tienda de camisetas es como sacar un patrón de los números premiados del gordo de navidad de los últimos 7 años.

Si nos quedamos un buen rato mirándolos igual nos viene la inspiración como cuando miramos nubes pero seguramente no generalice bien en observaciones nuevas.

Así que si ahora os digo que las ventas de mi tienda de camisetas desde el primer día hasta el séptimo son 2, 4, 6, 8, 10, 12, 14… pues me diréis que el día 8 vendí 16 camisetas porque el patrón de los datos es muy claro.

La receta sería coger el número de día y multiplicarlo por dos y mientras el modelo generalice bien pues los resultados serán precisos.

La única manera de poder resolver el problema es que haya patrones en las observaciones, que seamos capaces de encontrarlos  y hacer una especie de “receta” que sea útil en la nueva situación. Para comprobar que nuestra “receta” funciona esperaríamos unos cuantos días más y comprobaríamos si generaliza en observaciones nuevas.

Sería la validación del modelo.

Patrones y modelos chorra como el que acabamos de ver en el ejemplo son fáciles hasta para nosotros simples humanos que manejamos los datos de una semana. 

Ahora imaginad que tengo datos de 5 años todos metiditos en una tabla de Excel, pues para eso mejor un ordenador que se encargue de encontrar esos patrones y sacar una receta o modelo de Machine Learning.

 Y ya que estamos hablando de recetas vamos a hacer otro experimento.

¡Vamos a hacer smoothies!

En el smoothie voy a incorporar una base de yogur y un ingrediente secreto y el objetivo es que averigüéis el número de calorías del brebaje.

¿Preparados?

Pues os dejo 3 segundos para averiguar las calorías del primer smoothie mientras lo voy preparando…

 ¿Alguna idea? Pues bien, he añadido 30 gramos de anacardos, mi fruto seco favorito y las calorias totales son 260 así que si habéis respondido algo, aunque sea a boleo tengo que felicitaros porque habéis nacido para dedicaros al aprendizaje automático.

La idea detrás del Machine Learning no es pensar con mucho cuidado la respuesta y no decirla hasta que estemos segurísimos de que es la correcta sino dar una respuesta, ver cuánto nos hemos equivocado e intentar ajustar mejor en el siguiente intento… y así durante muchísimos intentos.

Otra oportunidad.

Tal vez ahora, sabiendo que con 30 gramos de anacardos y el yogur el smoothie tenía 260 calorías, os hayáis quedado más cerca de ese número. La respuesta es que he añadido una manzana que pesaba 180 gramos y las calorías totales han sido 175.

Fijaos que os he estado diciendo el peso del ingrediente secreto en la respuesta, si os lo diera como observación… tal vez podríais dibujar en un papel las calorías de los batidos en función de los pesos… y quien sabe, tal vez se podría  dibujar una línea recta q más o menos pasara por todos esos puntos.

Este modelo de Machine Learning, el más sencillo de todos, es el modelo de regresión lineal. Que no es ni más ni menos que un modelo matemático que introdujo Legendre en 1805 y después Gauss.

La idea es tan sencilla como intentar aproximar unos puntos, en nuestro caso las calorías del smoothie en función del peso del ingrediente secreto, por una línea recta.

Para hacerlo, una vez que hemos preparado los suficientes batidos, hemos representado las calorías en función del peso del ingrediente secreto y hemos dibujado una línea que pase por todos nuestros batidos (o casi...) pues ya tenemos nuestro primer modelo de Machine Learning, que es esa línea.

O lo que es lo mismo, la receta para calcular calorías que consiste en multiplicar un numerito por el peso del ingrediente secreto y sumarle otro numerito.

Sí, amigos... Lo que hay detrás de los modelos de Machine Learning son operaciones matemáticas. Ni más ni menos.

Y para ir ajustando el modelo, se hace iterativamente.

Cada intento que hacemos vemos cuanto nos hemos equivocado para cada smoothie. El error entre las calorias de verdad y las que había calculado el modelo. 

Para tener un único error que analizar en lugar de uno para cada smoothie, los sumamos todos y lo dividimos entre el número de batidos que hemos preparado. Sin embargo, para que no se nos compensen los errores de un smoothie al que le hemos calculado más calorias de las que le tocaban con otro al que le hemos calculado menos pues antes de sumarlos los elevamos al cuadrado. Así todo suma y se penalizan más errores más grandes.

Por si lo veis por ahí, esto se llama error cuadrático medio.

La idea es ir ajustando el númerito por el que multiplicamos el peso del ingrediente secreto  y el numerito que sumamos al final hasta obtener el error lo más pequeño que podamos en media.

Esto lo podríamos hacer a mano y echar una tarde o podemos usar algún algoritmo de optimización y que lo calcule el ordenador, que para eso está.

Y ya está, cuando tengamos un error que consideremos aceptable pues habríamos terminado.

 Si queremos mejorar el resultado, podríamos seguir haciendo más batidos y ajustando nuestra receta de cálculo de calorias o podríamos buscar más información sobre el ingrediente secreto. Otros atributos o características.

Tal vez si os doy la composición del ingrediente secreto en gramos de grasa, gramos de hidratos y gramos de proteína podemos mejorar el cálculo de calorías de un smoothie con nuestro ingrediente secreto.

Si hay algún entendido en nutrición en la audiencia seguro que sabe que es mucho más informativa la composición en grasas, proteína e hidratos del ingrediente secreto que únicamente su peso…

Son atributos más informativos.

En este caso nuestra receta tendría que ajustar para todos los smoothies que tengamos un numerito para las multiplicar por las proteinas, otro para las grasas, otro para los hidratos y otro para sumar  al resultado final. Ese sería nuestro modelo de Machine Learning que iríamos ajustando intentando hacer el error entre las calorias  que nos devuelve el modelo y las de verdad cada vez más pequeño.

Pero como ahora en vez de 2 numeritos a ajustar ya son 4 pues ya mejor se lo dejamos directamente al ordenador y su algoritmo de optimización y hoy ni siquiera nos vamos a preocupar de cómo funciona.

Ya lo hizo algún matemático antes por nosotros.

De todas maneras, si algo ha aprendido la humanidad acerca de nutrición a lo largo de la historia es que las calorías totales de un alimentos se pueden aproximar

  • Gramos de proteina x 4
  • Gramos de hidratos x 4
  • Gramos de grasa x 9

y sumandolo todo con el numerito final, que no sería ni más ni menos que las calorías del yogur que tenemos como base.

Ese sería nuestro modelo de aprendizaje automático supervisado, y más concretamente un modelo de regresión lineal.

Recapitulando… hemos preparado un montón de smoothies, que eran nuestras observaciones y os he dicho las calorías de cada uno, que eran las etiquetas.

También os he dicho el peso del ingrediente secreto que sería un atributo que podríamos  usar para nuestro modelo, pero después hemos pensado que igual unas características más informativas en el mundo de la nutrición nos daría mejor resultado. Así que hemos usado la composición de grasa, proteína e hidratos.

Al final para obtener el modelo no hay más que ir ajustando los pesos que le damos a cada atributo, en este caso, grasas, hidratos y proteínas. Si un alimento tiene más gramos de grasa seguro que tiene más calorías así que le vamos a dar más importancia a las grasas multiplicando por un numerito más grande.

Cómo ajustar todos estos pesos es algo muy repetitivo como para hacerlo a mano pues mejor usar un algoritmo de optimización.

Y cuando obtenemos un error que nos parece lo suficientemente bajo, podemos dar nuestro modelo por bueno y ver si funciona para calcular las calorías de nuevos smoothies.

Esto nos vale igual para calcular las calorías de un smoothie, que para obtener las ventas de una tienda, que para estimar el valor de una propiedad. Solo tenemos que fijarnos en las características adecuadas dependiendo del problema y ver si hay alguna manera de integrarlas al problema como hemos hecho con la composición del ingrediente secreto.

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 Google podcasts 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