machine learning explicado

Árbol de decisión

Muy buenos días y Bienvenidos a inteligencia artificial, el podcast donde hablamos del presente y el futuro de la inteligencia artificial, analizamos casos donde ya se están usando estas tecnologías y vemos como podemos aplicarlo en el día a día de nuestros trabajos, proyectos y empresas.

Yo soy Pocho Costa, ingeniero en sistemas, programador y amante de la tecnologia, y me podes encontrar en pochocosta.com donde ahí también vas a encontrar las notas del programa y otros medios para ponerte en contacto conmigo.

EMPEZAMOS!

Hay un artículo muy muy muy bueno escrito por Stephanie Yee y Toni Chu que son dos mega cracks de inteligencia artificial y Data Science que se llama A visual introduction to machine learning que me pareció genial y me dió muchas ganas de compartirlo con ustedes también sabiendo que uno de los episodios de este podcast que más les gustó fue el número 5 donde hicimos una pequeña introducción al machine learning. Así que me pareció una buena idea retomar el tema, profundizar un poco más y agregar algunos conceptos nuevos.

Aprendizaje Estadístico

En machine learning las computadoras aplican técnicas de aprendizaje estadístico para identificar patrones en los datos. Y estas técnicas pueden ser usadas para hacer predicciones con mucha precisión.

La idea del artículo, y lo que yo voy a estar tratando de explicar ahora, es como se puede armar un modelo de machine learning al que le demos datos del mercado inmobiliario y pueda predecir si los datos que le estamos dando se refieren a una vivienda en Nueva York o una en San Francisco. Esto es lo que en machine learning se conoce como una tarea de clasificación. Que si lo pensamos dos segundos, no parece ser algo fácil para un humano…a menos que sea un especialista en el mercado inmobiliario de esas dos ciudades, y así y todo habría que ver que porcentaje de acierto logra.

Lo importante acá es que vamos a estar resolviendo un ejercicio y aunque voy a tratar de explicarlo lo mejor que pueda, esto va a requerir que lo escuches con bastante atención, te recomiendo que te prepares algo para tomar y te sientes cómodo a escucharlo.

Así que bueno, metámonos en el problema: para empezar se sabe que San Francisco es una ciudad medio montañosa por lo que la elevación a la que se encuentra una vivienda podría ser uno de los datos que nos ayuden a distinguir entre las dos ciudades.

Basado en los datos que usaron para el ejercicio, se puede afirmar que la vivienda más alta de Nueva York estaba a 73 metros de altura y las de San Francisco iban hasta los 227 metros. Por lo que una vivienda a más de 73 metros de altura debería ser clasificada como que es de San Francisco.

clasificación de viviendas según elevación
clasificación de viviendas según elevación

Bien, con ese análisis podemos resolver una partecita del problema, pero todavía nos quedan un montón de viviendas que con el solo dato de la elevación no podemos asignar a ninguna categoría.

Entonces bueno, ¿que otro dato podríamos agregar que nos ayude a distinguirlas?

Se sabe que en Nueva York el precio del metro cuadrado de las propiedades puede llegar a tener un valor muy elevado, entonces veamos que pasa si agregamos este otro dato… y lo relacionamos con la elevación de la vivienda. Ahora para cada vivienda tendríamos dos datos: elevación y precio del metro cuadrado. La cosa se va poniendo un poco más compleja pero no te preocupes que vamos por buen camino!

Ahora vamos a necesitar recordar un poco de las matemáticas que aprendimos en el colegio y asignar estos valores en un eje de coordenadas x e y. Donde en el eje Y tenemos la elevación y en el eje X el precio del metro cuadrado. Por ahora nada complicado.

Al hacer esto te das cuenta que de las viviendas que están a 73 metros de elevación o menos y que tienen un precio de más $19116,7 por metro cuadrado está en Nueva York. O sea que está sería otra posible variable para predecir donde está una propiedad. Y aunque todavía quedan unas cuantas viviendas que aún no se pueden clasificar, vimos cómo con solo agregar un dato más se pudo ajustar bastante el porcentaje de precisión.

Gráfico de dispersión de viviendas por elevación y precio del metro cuadrado
Gráfico de dispersión de viviendas por elevación y precio del metro cuadrado

Entonces es el momento de introducir un concepto clave para entender machine learning, y este concepto son los límites. Si miramos como quedaron todos los puntos en el gráfico nos vamos a dar cuenta que en la parte superior quedaron todas las viviendas de San Francisco que son las de más elevación. Entonces podríamos hacer una línea y decir, de acá para arriba son todas de San Francisco. Ese sería un límite. Y lo mismo vamos a ver en la parte inferior derecha porque los precios más caros están en Nueva York, y vimos que a partir de $19116,7 hacia la derecha son todas de Nueva York y hacia arriba vamos hasta la línea que acabamos de dibujar que es el límite donde a partir de ahí son todas de San Francisco.

Esta parte marea un poco, pero yo creo que se está entendiendo igual. Sino les dejo el gráfico en las notas y cuando lo vean se van a dar cuenta enseguida.

Límites según elevación y precio del metro cuadrado
Límites según elevación y precio del metro cuadrado

Machine Learning

Si se acuerdan al principio de todo dijimos que las computadoras usan aprendizaje estadístico para detectar patrones en los datos, y la identificación de límites es algo esencial para esto.

En este ejercicio se usan la elevación, el precio total de la vivienda, el precio del metro cuadrado, y además el año de construcción de la vivienda, la cantidad de habitaciones y la cantidad de baños.

Cuando empezas a combinar de a dos estos valores y los dibujas en el eje X e Y, te vas dando cuenta cómo se van formando líneas o formas que representan patrones, es muy loco verlo!

Matriz de dispersión de variables
Matriz de dispersión de variables

Y acá es donde entra en juego el machine learning para buscar límites y descubrir esos patrones, ya que si tuviéramos que hacer todo eso a mano tardaríamos tanto y sería tan aburrido que nos cansaríamos y lo abandonariamos jajaja

Árbol de decisión

Uno ejemplo de uno de los métodos de machine learning más simples y rudimentarios es el árbol de decisión que corresponde al aprendizaje supervisado. Esto sería decir “si la elevación de una vivienda es mayor a tal número, entonces probablemente está en San Francisco, y sino está en Nueva York”. Esto en programación se conoce como sentencias if/then/else y en machine learning se llama bifurcación. Que se trata de dividir los datos en dos ramas basándonos en un valor. Este valor se llama punto de división y sería como un límite pero aplicado en un árbol de decisión.

Ahora bien, al aplicar el árbol de decisión a las viviendas según la elevación nos encontramos con que algunas viviendas de San Francisco están siendo clasificadas como si estuviesen en Nueva York. A esto en machine learning se lo llama falsos negativos. Y si cambiaramos el punto de división para poder capturar a cada vivienda de San Francisco también va a incluir muchas viviendas de Nueva York…estas serían falsos positivos.

Un tema que tenemos acá es que por más que hayamos visto que la vivienda más elevada de Nueva York estaba a 73 metros de altura y hayamos elegido ese número como punto de división, estamos teniendo muchas viviendas mal catalogadas. Y para mejorar esto, existen cálculos matemáticos que nos ayudan a obtener el punto de división óptimo, que si bien va a seguir teniendo errores van a ser mucho menos. En este ejercicio de las viviendas ese punto es 28 metros de altura y nos da una precisión del 82%. Pero bueno, esto no queda acá, todavía se puede mejorar más! Y es que el algoritmo puede repetir este proceso usando las otras variables variables, precio total, precio del metro cuadrado, cantidad de baños, habitaciones y año de construcción. Esto es lo que en machine learning se conoce como recursión. Entonces agregar otros niveles de bifurcación posteriores al de la elevación.

En este ejercicio por ejemplo el algoritmo detectó que para las viviendas de menor elevación la siguiente mejor bifurcación es el precio por metro cuadrado y el mejor punto de división es $1061 dólares por metro. En cambio para las de mayor elevación conviene preguntar por el precio total de la vivienda, siendo el mejor punto de división $514500. Imaginense la cantidad de cálculos que tuvo que hacer para llegar a todo esto! Y además lo rápido que lo hace! Por esto es que para esto son mejoras las máquinas que nosotros.

Agregando estas bifurcaciones se va aumentando la precisión de la predicción. Y agregando esa capa le damos profundidad al árbol y aumentamos la precisión a un 84%. Y si agregas más capas con los otros datos podés llegar hasta un 96%, incluso agregando mas datos podemos llegar hasta un 100% de precisión.

Ejemplo diagrama de árbol

árbol de decisión
árbol de decisión

No sé si la explicación es entendible, pero para imaginarnos todo esto de una manera gráfica pensemos en que las viviendas son pelotitas que soltamos y las bifurcaciones las van llevando por diferentes caminos hasta caer en bolsitas. Y habrá bolsitas que son para San Francisco y otros para Nueva York. Lo que acá llamé bolsitas en realidad se llama nodos hoja.

Cada vez que hacemos que una vivienda del set de entrenamiento pase por el árbol estamos entrenando al modelo y el set usado se llama datos de entrenamiento. Y como hicimos crecer el árbol hasta llegar al 100%, cada vivienda se asigna correctamente a la ciudad que corresponde.

Pero ahora llega el momento de verificar la realidad, o sea, debemos probar el modelo con datos nuevos que nunca hayan pasado por el modelo y ver que pasa. Estos datos se llaman datos de prueba. Lo ideal entonces sería que el modelo se comporte igual que con los datos de entrenamiento y se obtenga un 100% de precisión. Para este ejercicio se hizo pasar un set datos de prueba y se obtuvo un 89,7% de precisión. Si bien no era lo que se buscaba, nos sirve para introducir un nuevo concepto: el sobreajuste. Y es que nuestro modelo había aprendido a tratar cada detalle de los datos de entrenamiento como si fuera algo importante incluso algunos que resultaron ser irrelevantes. Y esto es lo que en machine learning se conoce como sesgo.

Probando el modelo con datos de prueba
Probando el modelo con datos de prueba

Y bueno, con esto cerramos este episodio un tanto diferente a los anteriores porque fue más largo y más teórico. Espero que no se les haya echo muy largo o aburrido y en todo caso les pido que me escriban por twitter donde me encuentran como @pochocosta para pasarme sus comentarios y así saber cómo quieren que sean los próximos episodios. Si les gusta que hable de teoría, o si les gusta más que hable de novedades y casos de éxito. Y si les parece bien que de vez en cuando metamos un episodio teórico.

Así que hagamos esto, hoy no les voy a pedir que me dejen una reseña de 5 estrellas en iTunes ni un me gusta o comentario en iVoox, sino que lo que les pido es que me agreguen en twitter donde soy @pochocosta y así podemos estar en contacto e opiniones sobre los temas que nos interesan.

Y ahora sí me despido pero no sin antes decirles que Nos escuchamos en el próximo episodio donde seguiremos hablando de este hermoso mundo de la inteligencia artificial.

EDITADO: Si te interesó el tema y queres seguir profundizando, hablé del sobreajuste también conocido como overfitting en el episodio llamado «Ajuste del modelo – Equilibrio entre el sesgo y el sobreajuste».


Comentarios

19 respuestas a «Árbol de decisión»

  1. muy buen episodio pocho ! voto x unos episodios teoricos cada tanto q vienen muy bien

    1. Avatar de Pocho Costa
      Pocho Costa

      Anibal, este podcast tiene que ser como los que lo escuchan me digan, así que gracias por pasarte y dejar tu comentario 😉

  2. muy buen episodio pocho ! voto x unos episodios teoricos cada tanto q vienen muy bien

    1. Avatar de Pocho Costa
      Pocho Costa

      Anibal, este podcast tiene que ser como los que lo escuchan me digan, así que gracias por pasarte y dejar tu comentario 😉

  3. Me gustó el episodio, Pocho. Felicitaciones, muy bien explicado.

    Saludos!

    1. Avatar de Pocho Costa
      Pocho Costa

      Gracias Agustín por hacermelo saber, me alegra que te haya gustado. Esto me da fuerzas para seguir adelante y saber que alguien más ademas de mi esposa lo escucha. 😀

  4. Me gustó el episodio, Pocho. Felicitaciones, muy bien explicado.

    Saludos!

    1. Avatar de Pocho Costa
      Pocho Costa

      Gracias Agustín por hacermelo saber, me alegra que te haya gustado. Esto me da fuerzas para seguir adelante y saber que alguien más ademas de mi esposa lo escucha. 😀

  5. También me sumo a los que votamos este tipo de episodios!!
    Saludos

    1. Avatar de Pocho Costa
      Pocho Costa

      Muchas gracias Nacho! 🙂

  6. También me sumo a los que votamos este tipo de episodios!!
    Saludos

    1. Avatar de Pocho Costa
      Pocho Costa

      Muchas gracias Nacho! 🙂

  7. Muy bien. Excelentes podcasts, aunque este pudo ser un video tutorial también. 😉

    1. Avatar de Pocho Costa
      Pocho Costa

      Muchas gracias JavenQuram! Si es verdad, este tema iba mas para video, totalmente! A ver si algún día me animo 😀

  8. Muy bien. Excelentes podcasts, aunque este pudo ser un video tutorial también. 😉

    1. Avatar de Pocho Costa
      Pocho Costa

      Muchas gracias JavenQuram! Si es verdad, este tema iba mas para video, totalmente! A ver si algún día me animo 😀

    1. Gracias por el aporte!

    2. Avatar de Pocho Costa
      Pocho Costa

      Gracias por el aporte!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *