Skip to main content
Machine Learning - Supervised

Machine Learning - Supervised

En el artículo anterior hablamos sobre qué es la Inteligencia Artificial, para poder comprenderla, comenzamos reflexionando sobre la definición de Inteligencia. Esto nos dio el punto de partida para desambiguar Inteligencia Artificial (AI) y poder hacer una comparativa con la Inteligencia Humana.

Terminamos dando una breve introducción a lo que el Machine Learning es y las diferentes formas en que un agente inteligente puede aprender.

En este artículo, buscaremos entender un poco más cómo es que estos agentes aprenden sin caer en tecnicismos, buscando mantener un nivel de lenguaje sencillo para ser inclusive con los lectores principiantes.

Una forma de describir al Machine Learning es:

“Una disciplina que busca extraer el conocimiento a través de datos”

Se podrán estar preguntando, ¿por qué conocimiento? Es muy buena pregunta si te la hiciste. El conocimiento nos sirve para tomar decisiones, generalmente, estas decisiones están basadas en experiencias, información, datos que podemos resumir en conocimientos.

La cuestión es que, no siempre podemos tomar bien esas decisiones, o no siempre tomamos la mejor decisión de manera constante.

Con el Machine Learning, buscamos construir modelos, esto siendo una reconstrucción simplificada de una realidad más compleja. Estos modelos pueden tener una infinidad de objetivos, desde predecir, seleccionar, clasificar o hacer cálculos extremadamente complejos de forma rápida.

Entonces, en esencia, el Machine Learning lo que busca es que a través de los datos que le proporcionamos, pueda generar conocimiento que nos aporte valor a nosotros los humanos, pero, sobre todo, que sea de forma constante y que pueda generar resultados correctos siempre.

Para ejemplificar esto, les proporcionaré una analogía para que podamos comprender mejor qué hace el Machine Learning.

Supongamos que estamos en medio de la jungla quintanarroense. Nos encontramos montando bicicleta en una ruta especial y el objetivo es llegar a un cenote, el cual hemos escuchado es espectacular.

Durante el paseo, una de las personas se cayó y tiene una herida que necesita que la sangre coagule, una de las personas que acompaña al grupo, menciona que existe un tipo de planta especial en la zona, hipotéticamente supongamos que es una planta Iris y que sirve para detener el sangrado.

Los ciclistas, un poco alertados, comienzan a buscar por todos lados, se dan cuenta que están rodeados por este tipo de plantas, el problema es que, en la zona donde se encuentran, existen tres tipos de plantas y solo una de ellas podrá detener el sangrado, mientras que las otras dos, aceleraran el sangrado por una toxina que tienen.

 

¿Cómo tomarías la decisión?

Lo más probable es que no quieras hacerlo, por qué para poder hacerlo, tendrías que cumplir con lo siguiente:

1.       Ser un experto en plantas para poder identificar la adecuada a través de la vista y/o el tacto.

2.       Deberías tener algún conocimiento de medicina natural para saber cómo aplicarlo.

En el problema que nos enfocaremos es en el número 1, identificar cuál es la flor adecuada.

Como lo mencionamos con anterioridad, para ello, necesitas conocimiento y si vemos, el conocimiento no es solo información, exige poder ser implementada para algo funcional, es decir, tiene que servir y en este caso, la función de utilidad es seleccionar la planta adecuada siempre.

El Machine Learning, cumple el mismo propósito, lo que buscamos es la creación de agentes que puedan extraer conocimiento de información suministrada (o no) y que tomen alguna decisión o realice alguna predicción útil.

En este sentido, si quisiéramos crear nuestro agente personal identificador de los tres tipos de Iris que se encuentran en la zona quintanarroense, primero tendríamos que enseñarle a este agente qué es una planta Iris y las diferencias entre estas.

Como pueden ver, lo que queremos hacer es predecir una de varias opciones de plantas, esto es a lo que llamamos un ejemplo de problemas de clasificación y estaríamos utilizando un algoritmo de clasificación.

Para ello, comenzamos suministrando datos, y te podrás estar preguntando, ¿qué clase de datos? Pues pensemos las diferentes formas de distinguir estas plantas, para empezar, las tres se ven igual.  Por lo que el color quedaría descartado, pero al observar más, nos damos cuenta de que unas tienen pétalos más grandes que otras y también vemos que esto aplica para los sépalos.

Pero la realidad es que la palabra “grande” no nos dice mucho y sigue sin darnos suficientes datos para poder hacer las distinciones acertadas, así que debemos de volver a observar (Feature Extraction), y al hacerlo, nos damos cuenta de que estas diferencias que inicialmente vimos, las podemos clasificar midiendo la relación de longitud y anchura, por lo que nos damos a la tarea de construir una tabla donde podamos vaciar esta información.

Supongamos que tomamos ciento cincuenta puntos de datos (Features) para cada punto de datos de flores (Samples) que tenemos, entonces, tendremos cincuenta datos para el primer tipo de Iris Setosa (Label), cincuenta para el segundo tipo de Iris Versicolor (Label) y cincuenta para el tercer tipo de Iris Virginica (Label). Aquí una muestra de las primeras cinco filas como ejemplo:


 

 

Con esta información, lo que buscamos es construir un modelo de Machine Learning que pueda predecir el tipo de planta Iris a partir de nuevas mediciones, como la anchura y la altura.

img1

 

 

 

 

 

 

 

 

http://suruchifialoke.com/2016-10-13-machine-learning-tutorial-iris-classification/

Pero ¿cómo precisamente sucede esto? Bueno, primero tenemos que ayudar a nuestro algoritmo a que pueda generalizar, esto significa que pueda hacer predicciones acertadas con información que nunca haya visto.

Para poder hacer esto, lo tenemos que entrenar y para entrenarlo, utilizamos la información que le hemos proporcionado, esto para que pueda ser clasificada. Para este tipo de problema podemos utilizar gráficas bidimensionales, que se verían de la siguiente manera:

bidimensionales

 

 

 

 

 

 

 

 

 

 

 

 

 

Toda esta información puede llegar a ser abrumadora, pero no te preocupes, en realidad es sencilla.  Lo que vemos aquí es la combinación de la información que poseemos. Por ejemplo, en la gráfica inferior, podemos ver la relación que existe entre la Altura del Sépalo y la Anchura del Pétalo para cade dato de los tres tipos de Iris.

iris

 

 

 

 

 

 

 

 

 

 

Lo interesante de esto, es que podemos ver claramente que cada especie comparte características únicas, lo que permite que se clasifiquen en grupos homogéneos, es decir, al mirar la gráfica podemos darnos cuenta de las diferencias entre cada especie de Iris.

Para cualquier problema de Machine Learning, es de gran importancia poder hacer este análisis de los datos que poseemos antes de intentar solucionar el problema, en este caso específico, los datos nos indican que lo más probable es que el modelo podrá aprender a separar cada una de las especies de Iris.

Entonces ¿cómo se entrena el algoritmo? Bueno, primero lo que tenemos que hacer es crear nuestro training set o nuestros datos de entrenamiento, para esto, lo que generalmente se hace es que, del total de los datos, extraemos el 70-75% de toda la información con sus respectivos labels y se revuelven las filas, 30-25% restante de los datos se utilizan como nuestro test set o datos de prueba y también las filas de estos datos se revuelven.

La información se tiene que revolver porque las computadoras almacenan información en matrices, no es tan relevante que sepamos esto para este artículo, por lo que no hablaré de ello, lo importante es entender que la información se revuelve por filas.

informacion

 

 

 

El objetivo de esto también es para que nuestros datos de prueba tengan información que sea representativa de cada especie y que pueda hacer las predicciones adecuadas (Classes).

Con esto, podemos a comenzar a trabajar en el algoritmo, para este problema, utilizaremos uno llamado k-nn o k-nearest neighbors. Lo que hace este algoritmo es que, dados ciertos datos, busca identificar a qué clase pertenece (Setosa, Versicolor o Virginica). Por lo que el conjunto de tablas que hicimos arriba nos permite entrenar ese modelo.

Para hacer una predicción para cada nuevo punto de datos el algoritmo buscará el punto más cercano en el training set que esté más cercano al nuevo punto.

Como ejemplo, digamos que tenemos los siguientes puntos de datos (Features) para una Flor (Sample), sin embargo, desconocemos a qué tipo de especie pertenece (Label) y queremos predecirlo (Class).

La Altura del Sépalo es de 5.4 centímetros y la Anchura del Pétalo es de 1.9 centímetros, nuestro algoritmo trazaría un punto de la siguiente manera, representado como un punto verde:

verde

 

 

 

 

 

 

 

 

 

 

Ahora, esto nos siguen sin decir a qué especie pertenece nuestra nueva flor, para ello, le indicaremos un valor k a nuestro algoritmo, en este caso le diremos que busque los 4 valores más cercanos a nuestro nuevo punto.

img

img

 

 

 

 

 

 

 

 

Como pueden ver, los vecinos más cercanos a nuestro nuevo punto son tres que corresponden a la especie Virgínica y uno que corresponde a la especia Versicolor. Lo que procederá a realizar nuestro algoritmo es clasificar a esta nueva especie como una perteneciente a Virgínica, dado a que la mayoría de los puntos aledaños son de esta especie, y tenemos nuestro primera predicción o valor de salida, cosa que llamaremos Class o Classes.

img

 

 

 

 

 

 

 

 

Esto que acabamos de ver, es un estilo de aprendizaje supervisado, porque tenemos las medidas para las que ya conocemos la especie correcta.

Si quisiéramos conocer qué tan correcto es nuestro algoritmo, podríamos computar un test de exactitud, sin embargo, para este artículo ha sido suficiente.

Espero lo hayas disfrutado tanto como yo, te adjunto la base de datos que utilicé, la cual consideró números aleatorios de mínimos y máximos utilizados en el estudio original hecho por Robert Fisher en 1936 para cada una de las 150 especies de Iris medidas.

Bibliografía:

Müller, Andreas C.; Guido, Sarah. Introduction to Machine Learning with Python. O'Reilly Media.

Géron, Aurélien. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow. O'Reilly Media.

Datos:

https://drive.google.com/file/d/1yyuHzFHxNbhkx8W5foOXmT7twcGRaGjp/view?usp=sharing