Aprendizaje Supervisado

En este post, explicaré de forma general la tarea del Aprendizaje Supervisado. Además, introduciré cierta notación para que sea más sencillo elaborar sobre estos conceptos posteriormente.

(Me referiré a “Aprendizaje Automático” como Machine Learning el 99% del tiempo, porque no me gusta la traducción).

Machine Learning:

Debido a que Machine Learning es un área de estudio relativamente nueva, no existe una definición aceptada por todos los especialistas. Sin embargo, hay dos definiciones muy populares, con las cuáles basta para tener una idea clara de la disciplina:

El aprendizaje automático es el proceso que le da a las computadoras la habilidad de aprender sin ser explícitamente programadas. – A.L Samuel

Se dice que un programa de computación aprende de la experiencia E con respecto a una tarea T y alguna medida de rendimiento P, si es que el rendimiento en T, medido por P, mejora con la experiencia E. – T.M Mitchell

La segunda definición es mucho más clara, e incluso nos da la idea general de funcionamiento de la mayoría de los algoritmos de aprendizaje: Crear un programa que pueda aprender a realizar una tarea, y mejorar su rendimiento en la misma mediante entrenamiento (experiencia).

Existe una serie larga de problemas y tareas a resolver dentro de Machine Learning. Aunque las dos más conocidas son el Aprendizaje Supervisado, y el No Supervisado. En este artículo daré una breve introducción al primero.

Aprendizaje Supervisado

De forma simple, en Aprendizaje Supervisado se cuenta con un conjunto de ejemplos de los cuáles conocemos la respuesta. Lo que deseamos es formular algún tipo de regla o correspondencia que nos permita dar (o aproximar) la respuesta para todos los objetos que se nos presenten.

Por ejemplo, podemos contar con información de casas (conjunto de ejemplos), y los precios correspondientes de cada una (respuesta). A partir de esto, queremos aprender alguna regla de correspondencia entre casas y sus precios, que nos permita predecir el costo cuando tengamos información de nuevas casas.

Ahora presentaré un poco de notación matemática, que nos permitirá explicar con mayor facilidad otros conceptos.

Formulación del problema

{X} – conjunto de objetos.

{Y} – conjunto de etiquetas (o respuestas).

{y}:{X}\to {Y} – función de dependencia entre los objetos y etiquetas.

y_i = y{(x^{(i)})}, i = 1, \dots , l – valores conocidos de la función.

Problema: Encontrar h : X \to Y , una función h , que permita aproximar el conjunto de objetos al de respuestas.

De esta forma, nuestra meta es poder encontrar la función h, también conocida como hipótesis. Para este propósito, se utiliza un algoritmo de aprendizaje, que permite aproximar esta función.

¿Cómo se describe a los objetos?

Cada objeto está descrito por una serie de predictores también conocidos como features. Como se puede inferir de forma intuitiva, los features son una serie de características de dicho objeto.

Por ejemplo, los features de una casa podrían ser su tamaño, número de cuartos, número de pisos, años de antigüedad, etc.

Formalmente,

{x^{(i)}} \in \mathbb{R}^{n} – es decir, un objeto se representa como un vector de n dimensiones, donde n es el número de features de dicho objeto. Usaremos la notación x^{(i)} para denotar el objeto i, y x_i para denotar el feature i del objeto.

Puede sonar complicado, pero esto sólo significa que podemos representar una casa de la siguiente manera: (500, 4) . Un vector con el tamaño en metros cuadrados y el número de cuartos.

Escoger qué features utilizar es muy importante para el desempeño de nuestro algoritmo. Hay muchas formas en las que podemos realizar esta selección, y depende de qué algoritmos utilicemos así como la naturaleza del problema.

Por ejemplo, los features de una imágen son los pixeles. Y por lo tanto, una imágen sería un vector donde cada componente correspondería al valor de intensidad del pixel. Te podrás imaginar que imágenes grandes pueden tener millones de features fácilmente, por lo que es común redimensionar las imágenes.

Por lo tanto, nuestro conjunto de datos está representado por una matriz donde cada columna representa a un feature, y cada fila a un objeto:

Screen Shot 2015-10-20 at 3.21.52 PM

¿Cómo se describen las respuestas o etiquetas?

Dentro del aprendizaje supervisado existen (básicamente) dos problemas a solucionar: Clasificación y regresión.

En clasificación,  |{y}| \ll {\infty}. Es decir, que el número de posibles respuestas es finito.

De forma sencilla, esto significa que en tareas de clasificación, la intención es asignar una de un conjunto bien definido (y finito) de categorias a nuestro ejemplo. Por ejemplo, si se quiere determinar si un mail es spam o no, existen dos respuestas: spam, y no spam. Por lo tanto, es una tarea de clasificación.

En regresión, {Y} {\in} {\mathbb{R}} . Es decir, la respuesta es una variable numérica con una infinidad de posibles resultados.

En el problema de predecir el precio de una casa, la tarea es de regresión, ya que se quiere predecir un resultado continuo. Una variación del mismo problema en términos de clasificación, sería determinar si una casa tiene precio “alto”, “medio” o “bajo”.

Aprendizaje supervisado

Finalmente, podemos definir formalmente el problema de aprendizaje supervisado.

Consideremos a una pareja ({x_i},{y_i}) , que representa a un objeto junto a su etiqueta. Esta pareja es conocida como training sample, o un ejemplo del entrenamiento.

Para el aprendizaje supervisado contamos con un conjunto de entrenamiento:

\left\{({x^{(i)}},{y^{(i)}}) , \dots,({x^{(m)}},{y^{(m)}}) \right\} \subset {X}

El cual utilizamos para entrenar un algoritmo de aprendizaje. Este algoritmo nos otorga una aproximación a la función de dependencia desconocida entre objetos y respuestas.

Screen Shot 2015-10-20 at 2.47.33 PM

Como se puede ver en el diagrama, el aprendizaje supervisado consta de dos pasos esenciales:

  1. Entrenamiento, donde usamos el conjunto de entrenamiento en conjunto con un algoritmo que nos permita crear una hipótesis.
  2. Prueba, donde utilizamos la hipótesis obtenida en el paso anterior para realizar nuevas predicciones con objetos nuevos.

Todo este proceso se llama aprendizaje supervisado, ya que al conocer las respuestas de cada ejemplo del conjunto de entrenamiento, podemos corregir la hipótesis producida por el algoritmo. Se supervisa el entrenamiento del algoritmo, corrigiendo los parámetros del mismo según los resultados que obtengamos, de forma iterativa.

Conclusión

En este post, se delineó de forma general el Aprendizaje Supervisado. Para hacer un re-cap rápido, la meta de este tipo de aprendizaje es aprender una hipótesis mediante el entrenamiento de un algoritmo. El entrenamiento se realiza con un conjunto de entrenamiento, que no es nada más que un grupo de objetos (como casas) con sus respectivas respuestas que deseamos estimar (como precios). Posteriormente, utilizamos la hipótesis aprendida para estimar nuevos objetos u observaciones.

Aún quedan muchas preguntas como por ejemplo, ¿cómo medir el rendimiento de una hipótesis y/o un algoritmo? O más aún, ¿cómo es que funcionan estos algoritmos?

En próximos posts intentaré responder estas preguntas, empezando por la introducción de algoritmos sencillos, así como formas de evaluar las respuestas que obtenemos.

Referencias:

Las imágenes usadas fueron extraídas de las Lecture Notes de CS229 de Stanford, con autoría de Andrew Ng. http://cs229.stanford.edu/materials.html