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

Advertisements

Clasificación de especies de cactus.

Soy Alejandro Cassis, estudiante de quinto semestre de la carrera en ISC. Estuve familiarizándome con Machine Learning desde hace un año, y realicé dos proyectos hasta el semestre pasado: Una red bayesiana (de juguete) para calcular la probabilidad de tener ciertas enfermedades basándose en ciertas evidencias, y un clasificador de señas del lenguaje de sordomudos.

Durante el verano de este año, tuve la suerte de tomar un curso serio de Machine Learning en ITMO, una gran universidad Rusa. Gracias a esta oportunidad, pude aprender con profundidad muchos de los conceptos, algoritmos y técnicas utilizados en este área, y este semestre estoy involucrado en un proyecto mucho más retador.

Me dieron acceso a un conjunto de datos con información de microsatélites de una variedad de especies de cactus endémicos a ciertas zonas de México. El dataset está dividido en especies, y a la vez, de la región de dónde se recolectó el perfil genético de dicho individuo.

De forma muy general, la tarea que tengo es poder construir un clasificador. El mismo debe permitir identificar a qué zona pertenece cierto cactus, a partir de su perfil genotípico. En pocas palabras, poder determinar de forma automática a qué región pertenece un cactus de cierta especie.

Las dificultades en esta tarea son múltiples. Algunas de ellas son:

  1. Se cuenta con -relativamente- pocos datos de ciertas especies, lo cual dificulta el entrenamiento y uso de ciertos algoritmos de clasificación.
  2. La investigación parte de la hipótesis de que individuos de la misma especie se diferencian según la zona a la que pertenecen. Esto no es necesariamente cierto, y por lo tanto es posible que no se obtenga los resultados esperados.
  3. Al trabajar junto a un experto en el área, es necesario que los resultados que obtenga sean interpretables. Esto es particularmente difícil cuando se utilizan algunos algoritmos (Redes Neuronales, por ejemplo).

Además de estas, existen otras dificultades de carácter más técnico. Por ejemplo, que el modelo generalice bien con nuevas observaciones y no este “overfitted”. 

Durante las próximas semanas, estaré haciendo una serie de posts en este blog explicando conceptos básicos de Machine Learning, y en particular, del Aprendizaje Supervisado. A partir de estas ideas, explicaré algunos algoritmos sencillos con los que experimenté. Particularmente, Regresión Logística, y Naive Bayes.

Finalmente, con este contexto podré explicar con más detalle el algoritmo que me está brindando los mejores resultados: Random Forests.