Recordemos que en la introducción al machine learning hemos hablado sobre cinco tipos de aprendizaje automático: aprendizaje supervisado, no supervisado, semi-supervisado, por refuerzo, y auto-supervisado. De entre estos, el aprendizaje supervisado es una de las ramas más populares entre la comunidad de la ciencia de datos dada la eficacia y variedad de sus técnicas para la generación de modelos entrenados con datos etiquetados.
En esta exploración de reconocimiento ahondaremos en los misterios de esta categoría del machine learning, abordaremos su definición, particularidades, formalidad matemática, y observaremos un caso práctico con código en Python ejecutable, en el que podrás ver y experimentar por tu cuenta el funcionamiento de un algoritmo de este tipo, sin necesidad escribir líneas de código.
Esta será la primera expedición de varias dentro del dominio del aprendizaje supervisado, y la primera que constará de las tres secciones arquetípicas principales mencionadas en la introducción al curso: descripciones generales, programación y matemáticas.
Equipaje recomendado
Nociones sobre conjuntos de datos y conjuntos de datos etiquetados
Nociones sobre preprocesamiento de datos
Fundamentos de machine learning
Programación en Python
Matemáticas: una pizca de álgebra y funciones
Algún alimento para amenizar la travesía
Notas
Recuerda que para utilizar Google Colab solo tendrás que hacer clic en el botón que te compartiré en la sección de programación, el cual te dirigirá hacia el espacio de trabajo con el código ejecutable y sus respectivas explicaciones. No olvides revisar la introducción a Colab si lo crees necesario.
¿Qué es el aprendizaje supervisado?
El aprendizaje supervisado es un tipo de aprendizaje de máquinas cuyo objetivo es la generación automática de modelos matemáticos que capturen patrones en un conjunto de datos etiquetados, es decir, de datos tipificados en dos clases: de entrada y de salida, donde las entradas son las variables independientes a considerar para el entrenamiento del modelo, y las salidas los valores de la variable dependiente.
Al principio puede parecer que esta forma cruda del término no logre evocar mucho significado por sí sola; para enriquecerlo y dotarlo de mayor sentido, desglosaremos la definición de aprendizaje supervisado identificando y ejemplificando cada uno de sus componentes.
Primero, hablaremos sobre sus dos elementos más característicos: las entradas y salidas.
Entradas y salidas en datos etiquetados
Este par de conceptos ya los habíamos avistado en nuestra sesión sobre conjuntos de datos de datos etiquetados. En el contexto del aprendizaje supervisado son de suma importancia, ya que son distintivos de este tipo de algoritmos: cuando tenemos los datos divididos de esta forma (en entradas y salidas), se suele decir que están etiquetados, y es con estas etiquetas con las que se guían los modelos de esta clase de machine learning para generar aprendizaje.
Recapitulemos brevemente sobre estas distinciones.
Entradas
Las entradas (inputs, features) son las características/atributos de los objetos que componen al conjunto de datos, y que determinan los valores de las salidas.
Salidas
Las salidas (outputs, labels), que se suelen denotar también como «etiquetas», son los objetivos a predecir, es decir, de los cuales queremos realizar inferencias matemáticas mediante nuestro modelo de aprendizaje de máquinas.
En la Tabla 3.1.1 puedes ver algunos ejemplos de este par de clases en el contexto de objetivos de algoritmos de aprendizaje supervisado y sus conjuntos de datos correspondientes:
OBJETIVO | CONJUNTO DE DATOS | ENTRADAS | SALIDAS |
---|---|---|---|
Estimar el precio de un libro respecto a sus características. | Datos sobre libros y sus características. | Características de los libros (número de páginas, material de la pasta, autor, etc.). | Precio de cada libro. |
Predecir el salario de una persona en función de sus datos demográficos. | Información de salarios de personas y sus respectivos datos demográficos. | Datos demográficos de cada asalariado (ubicación geográfica, salario actual, edad, educación, experiencia, industria en la que se desempeña, etc). | Salario de cada persona. |
Clasificar comentarios de películas en positivos y negativos. | Conjunto de opiniones de usuarios de películas. | Opiniones de los usuarios. | Clasificación de la opinión: positiva o negativa |
Clasificar correos electrónicos como spam o no spam. | Correos electrónicos categorizados como spam o no spam. | Texto de los correos electrónicos. | Clasificación de cada correo: spam o no spam. |
En la tabla anterior seguro has podido dilucidar más fácilmente cómo las entradas representan atributos generales de los objetos que componen al conjunto de datos, mientras que las salidas expresan un aspecto en particular del cual queremos realizar algún tipo de predicción.
Teniendo este par de piezas en el radar (de las cuales continuaremos hablando durante todo el recorrido), ahora exploraremos un aspecto que representa otro punto clave para la comprensión del aprendizaje supervisado: los tipos de salidas.
Tipos de enfoques en aprendizaje supervisado: regresión vs clasificación
Las salidas o enfoques a los que podemos apuntar mediante el entrenamiento de un modelo con un algoritmo de aprendizaje supervisado pueden ser de dos tipos:
- Números/regresiones: una cantidad que expresa algún aspecto de los objetos del conjunto de datos. Por ejemplo, el precio que puede tener una casa de acuerdo a sus características.
- Categorías o clases: denominaciones que nos sirven para clasificar/identificar objetos. Por ejemplo, distintas enfermedades con las que puede ser diagnosticado un paciente.
En aprendizaje de máquinas, estos tipos de enfoques también se suelen expresar como problemas de regresión y clasificación, donde la regresión es el método mediante el que se obtiene como resultado una salida numérica (de tipo continua), mientras que la clasificación nos entrega una salida categórica.
Nota: hay que recordar que, como vimos en el preprocesamiento de datos, toda entrada y fruto de un modelo de aprendizaje de máquinas es de tipo matemático, por lo que incluso las salidas categóricas provienen de interpretaciones de entidades matemáticas (generalmente, cantidades discretas). Esto lo entenderemos mejor más adelante en el curso.
¿Un poco enredoso? Si lo has percibido así no te preocupes, esta parte de tipos de salidas, sus interpretaciones y formatos la entenderás mejor conforme avancemos en el curso. Lo importante es que asimiles que regresión se refiere a problemas que abordan salidas numéricas de tipo continuo, mientras que la clasificación trata con salidas categóricas o de clases.
Exacto.
A partir de estos conocimientos, la definición de nuestro objeto de estudio es más clara: el aprendizaje supervisado busca engendrar modelos que modelen patrones «supervisando» cómo dadas ciertas entradas se generan determinadas salidas, dando como resultado un modelo entrenado que entregará salidas numéricas o categóricas.
Para reforzar estas percepciones, analicemos un ejemplo en el que utilicemos aprendizaje supervisado para la resolución de un problema.
Ejemplo de aprendizaje supervisado
Para ilustrar el objetivo que persigue el aprendizaje supervisado, y cómo lo alcanza, plantearemos el caso en el que buscamos obtener un modelo que sea capaz de estimar el precio de un teléfono celular respecto a sus especificaciones técnicas, ¿cómo podemos llegar a esto?
Como si se tratara de la receta de una pócima mágica, vayamos por pasos.
Primero, definamos cuáles son nuestras entradas:
Para este caso, nuestros datos de entrada son las especificaciones técnicas de los celulares, tales como memoria RAM, megapíxeles de la cámara, almacenamiento, tamaño de la pantalla, procesador, etc. Es decir, los atributos de los objetos del conjunto de datos.
Después, definamos cuáles son nuestras salidas:
Las salidas son los precios asignados a cada celular, el cual depende de las características que hemos definido como entradas; de este modo, dado un conjunto de valores dados por las características de un teléfono celular (entradas) se tiene un precio (salida).
Si tuviste la idea que la salida es de tipo numérico y estamos ante un problema de regresión, estás en lo correcto, ya que tenemos definida como salida el precio de los celulares, la cual es una variable continua cuyos posibles valores son números que no hacen alusión a alguna categoría.
¿Y cuál es el objetivo que perseguimos?
Sabemos por intuición cotidiana que un celular con ciertas características (cámara con buen sensor, mucho almacenamiento, cuantiosa memoria RAM, procesador de última generación, etc.) tendrá un precio elevado sobre el promedio, así como también podemos imaginar las características comunes que tiene un teléfono más barato, y es esta tendencia o patrón lo que pretendemos modelar utilizando machine learning.
El objetivo del aprendizaje supervisado es que, a partir del procesamiento de la información de las relaciones entre las entradas y las salidas, se obtenga un modelo que logre predecir salidas dada una nueva entrada desconocida. Esto se vería traducido en que queremos que la máquina aprenda a darnos el precio de un celular de acuerdo con sus especificaciones técnicas.
El aprendizaje supervisado y los modelos matemáticos
Tengas o no el objetivo de conocer a profundidad los aspectos matemáticos que subyacen a toda la teoría del machine learning, hay un mínimo necesario que es recomendable saber al respecto. En aras dar un ejemplo sencillo de cómo el resultado de un algoritmo de aprendizaje supervisado es un modelo matemático, invocaremos una de las formas más básicas y útiles del machine learning: la regresión lineal.
Dados los objetivos de este recorrido, por el momento definiremos la regresión lineal simplemente como el ajuste de una línea recta a un conjunto de datos.
Sin ahondar en cómo opera, solo mencionaré que se trata de uno de los métodos más elementales del aprendizaje de máquinas, y lo exploraremos minuciosamente en nuestra siguiente excursión.
Para ilustrar cómo es que se utiliza una técnica como esta para satisfacer los objetivos del aprendizaje supervisado, supongamos que hemos decidido predecir los precios de los celulares solo respecto a uno de sus atributos: su memoria RAM.
Para visualizar la relación entre estas entradas (memoria RAM) y salidas (precio), graficaremos cada punto RAM-Precio en un plano, como se muestra en la figura 3.1.4:
Entre estos datos, un patrón que podemos discernir echando un rápido vistazo, es que conforme la memoria RAM aumenta también lo hace el precio de forma proporcional, dibujando lo que parece ser una línea recta con pendiente positiva:
Esta línea recta sería un patrón en nuestros datos, el cual podemos expresar como un modelo matemático, el cual sería la ecuación de una recta:
\begin{aligned} y=mx+b\ \end{aligned}
Esta función puede ser utilizada para realizar estimaciones numéricas. Una vez entrenado, podemos decir que un modelo como este es capaz de estimar precios de celulares conforme a su memoria RAM. Algo así de sencillo ya es considerado coloquialmente como inteligencia artificial, o al menos ya se nombra como machine learning.
Esto se explorará de manera mucho más concisa en el apartado de definiciones matemáticas más adelante.
Después de estos prolegómenos, ya estamos casi listos para confrontar un ejemplo en código de programación en Python. Solo antes atisbaremos rápidamente cuáles son los algoritmos de aprendizaje supervisado más utilizados.
Algoritmos de aprendizaje supervisado más comunes
Echemos un vistazo rápido a los algoritmos pertenecientes a esta categoría que gozan de mayor popularidad por su versatilidad en la ciencia de datos, y que muy seguramente utilizarás en algún momento de tu carrera.
Los algoritmos de aprendizaje supervisado más utilizados son:
- Regresión lineal.
- Regresión logística.
- Redes neuronales artificiales.
- Máquina de soporte vectorial.
- k-vecinos más próximos.
- Bosques de decisión.
- Bosques aleatorios.
- Impulso de gradiente.
- Modelos de Lenguaje Macro.
Si no te sientes familiarizado con todos o alguno de estos algoritmos, no te preocupes, los iremos conociendo conforme avancemos en nuestros recorridos.
Por lo pronto, ya es hora de pasar a la práctica, ¿te interesa ver un modelo de machine learning en acción?, veamos un ejemplo.
Aprendizaje supervisado: código de programación en Python
En esta ocasión, y dado que será tu primera experiencia con un algoritmo de machine learning en código ejecutable en este curso, dejaremos a un lado el ejemplo de predicción de precios de celulares, el cual tiene salidas de tipo numéricas, e iremos con uno que arroje salidas de tipo categóricas: un modelo que aprenda a reconocer prendas de vestir.
Usaremos algo un poco más sofisticado. La regresión lineal y su programación computacional la dejaremos para la siguiente aventura. Para ilustrar el tema de esta exploración utilizaremos redes neuronales artificiales.
No ahondaremos en cuál es la definición y funcionamiento de estas, eso lo dejaremos para expediciones futuras, pero las usaremos y colocaremos en el contexto del aprendizaje supervisado con fines demostrativos.
Empecemos acomodando los elementos que procesará nuestro algoritmo para clasificar prendas:
Datos de entrada
Nuestros datos de entrada para este modelo son las imágenes, las cuáles son un conjunto de miles de fotos de ropa.
Datos de salida
El nombre de la prenda de vestir que corresponde a cada imagen son nuestras salidas; por lo tanto, dada una imagen (entrada) tenemos un nombre de la prenda asignado (salida).
Nuestro objetivo es que el algoritmo ajuste un modelo que aprenda a clasificar imágenes de prendas con un alto grado de precisión procesando estos datos.
Ahora que hemos planteado y analizado el conjunto de datos y el algoritmo a utilizar, puedes observarlo funcionando por tu cuenta. Para esto dirígete a la libreta de Google Colab pulsando el botón aquí abajo.
También puedes observar el código y previsualizar sus salidas en la siguiente ventana, pero sin posibilidad de ejecutarlo:
Con esto concluimos las partes descriptivas y de programación sobre el aprendizaje supervisado.
Como ya he señalado en ocasiones anteriores, para tener un acercamiento completo a cada tema hay que virar hacia su inherente cuerpo matemático, el cual abordaremos a continuación.
*Nota:
Los tramos de nuestros recorridos que corresponden a las matemáticas no son imprescindibles para programar algoritmos de aprendizaje de máquinas, y decidir si aprender o no sobre esta parte depende mucho de la manera en la deseas conocer el machine learning, y de tu nivel actual de experticia en la materia. Si no deseas abordar las matemáticas, puedes saltar estos bloques y poner suma atención a los términos y los ejemplos expuestos, pero recuerda: un mago o maga de alto rango en ciencia de datos conoce sus herramientas de trabajo desde todos los ángulos posibles, y tiene ventaja sobre quienes no ahondan en sus más insondables misterios.
Mi recomendación: intenta explorar y comprender los temas también desde su fundamento matemático, te dará una visión mucho más completa, y te proveerá la mejor preparación para encarar situaciones intrincadas.
Aprendizaje supervisado: definición matemática
En esta parte generalizaremos las matemáticas del aprendizaje supervisado. Toma en cuenta que estas definiciones tendrán más sentido conforme conozcas la teoría aplicada en nuestras prácticas, por lo que si no lo entiendes del todo no te preocupes por ello.
Conjuntos de datos etiquetados: definiciones asociadas
Para formalizar la definición de aprendizaje supervisado, debes tener en mente las definiciones que aprendimos en la sesión sobre conjunto de datos etiquetados. Si no las recuerdas del todo, te recomiendo que les eches un vistazo.
Tomando en cuenta lo anterior, ahora volvemos al ejemplo de celulares utilizado para hablar sobre los modelos matemáticos, el conjunto de datos segmentado a precios de celulares dada su memoria RAM puede constar de una tabla con información organizada como sigue:
Memoria RAM (GB) | Precio (USD) |
---|---|
4 | 200 |
5 | 225 |
5.5 | 240 |
6 | 250 |
8 | 340 |
En la tabla 3.1.2. se puede visualizar información de los precios de celulares de acuerdo con su capacidad de memoria RAM. Los valores de memoria RAM son entradas \mathcal{x}_{n}\in\mathcal{X} , donde la memoria RAM es una característica de los objetos de los cuales queremos realizar predicciones, y los valores del precio son las salidas \mathcal{y}_{n}\in\mathcal{Y}, que a su vez dependen las características de cada \mathcal{x}_{n}. Dado que cada renglón de la tabla contiene entradas y salidas, cada uno de estos representa a un ejemplo de entrenamiento.
Podemos visualizar los valores de una entrada y salida para un ejemplo de entrenamiento en el primer renglón de la tabla:
En este ejemplo de entrenamiento se tiene el par de entradas y salidas (\mathcal{x}_{1}, \mathcal{y}_{1}).
Como habíamos visto antes, cuando se trata de conjuntos de datos dispuestos en tablas, las entradas \mathcal{x}_n se pueden representar con un vector D-dimensional
\begin{aligned} \mathbf{x}_{n} &= \begin{bmatrix}\mathcal{x}_{n}^{1} & \mathcal{x}_{n}^{2} & \dots & \mathcal{x}_{n}^{D} \end{bmatrix}\:, \tag{3.1} \end{aligned}
donde cada elemento \mathcal{x}_{n}^{1}, \mathcal{x}_{n}^{2},...,\mathcal{x}_{n}^{D} corresponde a una característica o atributo de la entrada \mathbf{x}_n.
Por lo tanto, para el primer ejemplo de entrenamiento mostrado en la Tabla 3.1.3, el vector de características es de dimensión 1, y queda como sigue:
\begin{aligned} \mathbf{x}_{1} =\begin{bmatrix}4 \ \end{bmatrix}\:, \tag{3.2} \end{aligned}
con la característica \mathcal{x}_{1}^{1}=4. Su correspondiente salida, el precio del celular, toma el siguiente valor:
\begin{aligned} y_{1} = 200\: \tag{3.3}. \end{aligned}
Por lo tanto, el primer ejemplo de entrenamiento es
\begin{aligned} \mathcal{o}_{n} &= (\mathbf{x}_{n}, y_{n}) \\ &= \left( \begin{bmatrix}4 \end{bmatrix}, 200 \right) \tag{3.4} \end{aligned}
Recordemos que las entradas están constituidas por representaciones matemáticas de características o atributos de un conjunto de objetos, mientras que las salidas (etiquetas) son entidades dependientes de estas características. En el caso de haber más características, cada entrada las contendría. Por ejemplo, supóngase que además de la memoria RAM, se considera el almacenamiento interno y la cantidad de megapíxeles de la cámara del celular, dando como resultado un ejemplo de entrenamiento como el siguiente:
Memoria RAM (GB) | Almacenamiento (GB) | Pixeles (MP) | Precio (USD) |
---|---|---|---|
4 | 32 | 16 | 200 |
En este caso, el par (entradas/salida) del ejemplo de entrenamiento quedaría como se muestra acontinuación:
\begin{aligned} (\mathbf{x}_{n}, y_{n})=(\begin{bmatrix}4& 32 & 16 \ \end{bmatrix},200)\tag{3.5} \end{aligned}
Por lo tanto, basándonos en la Definición 2.5, el conjunto de datos de características de celulares y sus precios sería el conjunto
\mathcal{D}=\lbrace (\mathbf{x}_{1},y_{1}),…,(\mathbf{x}_{n},y_{n}),…,(\mathbf{x}_{N},y_{N})\rbrace,\tag{3.6}
donde cada par (\mathbf{x}{n}, y{n}) es un ejemplo de entrenamiento, el cual está compuesto por un vector de características (atributos de los celulares) y una salida asociada (su precio).
Aprendizaje supervisado
Definición 3.1. (Aprendizaje supervisado). Sea \mathcal{D} un conjunto de datos etiquetados de N ejemplos de entrenamiento
\mathcal{D}=\lbrace (x_{1},y_{1}),…,(x_{n},y_{n}),…,(x_{N},y_{N})\rbrace,\tag{3.7}
donde cada \mathcal{x}_{n} representa una entrada de D-características del n-ésimo ejemplo, y \mathcal{y}_{n} es su respectiva salida o etiqueta, se asume que estas salidas son mapeadas por una función desconocida f(x) tal que
\begin{aligned} &f: \mathcal{X} \rightarrow \mathcal{Y} \tag{3.8}\\ & \mathcal{x} \rightarrow f(x), \end{aligned}
donde \mathcal{X} y \mathcal{Y} son los conjuntos de entradas y salidas, respectivamente, por lo que f(x) mapea las relaciones entre los valores de las entradas y salidas del conjunto de datos \mathcal{D}. El objetivo del aprendizaje supervisado es encontrar una función h(x) que se aproxime a f(x).
Entre otras palabras, h(x) es una función hipótesis que pretende aproximarse a f(x), la cual se asume que es el modelo que describe el comportamiento subyacente de los datos (las relaciones entre las entradas y las salidas); los algoritmos de aprendizaje supervisado tienen como misión la búsqueda a través de posibles hipótesis, de aquella que se próxima más a f(x). Este proceso de búsqueda, es lo que llamamos entrenamiento o ajuste del modelo.
En esencia esa es la meta del aprendizaje automático. Para poder entenderlo de una manera más intuitiva, apoyémonos con el ejemplo antes citado.
Ejemplo de entrenamiento de modelos mediante aprendizaje supervisado
Remitámonos una última vez más al ejemplo de predicción de precios de celulares con regresión lineal, suponiendo, como se había planteado, que tomamos como entradas solamente una característica de los objetos: su memoria RAM.
En la Fig. 3.1.7 se puede observar al conjunto de datos graficado en un espacio de dos dimensiones, donde el eje x representa los valores de la memoria RAM de los celulares, y el eje y los precios de los mismos.
Como ya vimos, para este caso un ejemplo de entrenamiento es un par de valores RAM-precio, y cada uno de estos se puede observar como un punto en nuestro plano. Este grupo de puntos que se generan de nuestros ejemplos de celulares y sus precios respecto a su memoria RAM, es la representación de nuestro conjunto de datos, y lo que buscamos es obtener una función que describa su comportamiento de manera aproximada.
Como vimos en la sección anterior, es notorio que la tendencia de estos puntos es lineal: los valores de y aumentan conforme crecen los valores de x de forma proporcional (si la memoria RAM es más alta, el precio también), generando una forma parecida a una línea recta con pendiente positiva. Por ende, suponemos que existe una función desconocida f(x) que determina este comportamiento lineal, y la misión del aprendizaje supervisado es encontrar la función hipotética h(x) más próxima a f(x) considerando las entradas y salidas que conforman al conjunto de datos.
La regresión lineal es un modelo de machine learning que justamente nos permite encontrar la línea recta (ecuación de la recta) que se ajusta mejor a conjuntos de datos con este tipo de patrones subyacentes. Y una vez que la encontramos, podemos decir que tenemos un modelo capaz de estimar nuevas salidas respecto a nuevas entradas, o en términos de nuestro ejemplo: estimar el precio de un celular dadas otras cantidades de memoria RAM no incluidas en el conjunto de datos.
Esta función resultante es lo que llamamos hipótesis, y que a su vez es el modelo generado por un algoritmo de aprendizaje supervisado.
Mediante algoritmos de aprendizaje supervisado se busca una función que se ajuste de manera eficiente al comportamiento de los datos (a un patrón subyacente), y su forma (imagen de la función) a veces podrá lucir gráficamente como una línea, una curva, o cualquier tipo de figura en espacios n-dimensionales, dependiendo del conjunto de datos.
En este caso, se pretende hallar la función que dibuja una recta, como se muestra en la Figura 3.1.8.
En resumen, estas funciones que suponemos que modelan a los datos son los patrones que tiene como objetivo desenmascarar el machine learning, y que podemos aproximar mediante el uso de aprendizaje supervisado, el cual genera un modelo matemático mediante el procesamiento de datos etiquetados.
Con esto concluimos nuestra exploración de reconocimiento de esta rama del aprendizaje automático. Dados estos conocimientos previos, puedes comenzar a aprender cómo utilizar desde los más sencillos hasta los más poderosos algoritmos de aprendizaje supervisado.
Es hora de dar inicio al dominio de estas técnicas indagando la más primordial de sus formas: la regresión lineal.