[MÚSICA] Hola y bienvenidos a un nuevo video de ayudantía de nuestro curso de minería de datos. En este video veremos un ejemplo del algoritmo de árbol de decisión. El objetivo principal de este video es aplicar el algoritmo de árbol de decisión sobre los animales de un zoológico y clasificarlos de acuerdo a siete clases. Al igual que en el video anterior, recordaremos brevemente en qué consiste el algoritmo de árbol de decisión. Como bien dice su nombre, este es un árbol, en el cual cada nodo es una variable exceptuando en las nodos hojas, y en donde en cada flecha corresponde a los valores que pueda tomar o instanciar esa variable. Cuando queremos clasificar un dato nuevo, bajamos por el árbol hasta llegar a un nodo hoja, el valor del nodo hoja corresponde al valor de la clase predecida. La forma en que se construye este árbol hace que las variables que estén más arriba son más importantes a la hora de clasificar, you que nos entregan una mayor ganancia de información. En este caso, tenemos un árbol que tiene tres variables, cliente, historial e ingreso, para predecir si se aprobó el crédito de un cliente o no. Por ejemplo, ¿cuál es la clasificación para el crédito de un cliente que tiene buen historial y alto ingreso? Para ver su clasificación iremos bajando por el árbol hasta llegar a un nodo hoja, primero, es un cliente, por lo que nos vamos al lado izquierdo, segundo, tiene un buen historial, por lo que nos vamos nuevamente al lado izquierdo. Por último, nos damos cuenta que estamos en un nodo hoja y el valor es aprobado, por lo que este cliente le fue aprobado su crédito. Como se mencionó anteriormente, la base de datos que utilizaremos consiste en 101 animales reales descritos en 16 variables binarias, esta base de datos la extrajimos usando el repositorio de UCI Irvine. Lo que intentaremos hacer es clasificar los animales en siete tipos de clases, mamífero, ave, reptil, pez, anfibio, insecto e invertebrado. Como se mencionó anteriormente, en esta oportunidad aplicaremos el algoritmo de árbol de decisión sobre una base de datos real de un zoológico. Para esto, iremos a nuestro navegador preferido, en este caso Google Chrome, nos iremos a Google y escribiremos UCI Machine Learning Repository zoo, y nos iremos al primer link, una vez que seleccionan o aprietan el primer link, los redirigirá automáticamente a esta página, la cual ustedes pueden ver, corresponde a la base de datos de UCI Irvine la cual tiene varias base de datos reales de distintos casos, de distintos objetos. En este caso, usaremos la base de datos de un zoológico la cual pueden descargar de forma sencilla apretando en este link, esta base de datos consta de 101 instancias con 17 atributos y no contiene ningún dato faltante. Es importante recalcar que en estos dos videos de ayudantía que vienen, la primera va a consistir, ambas dos consistirán de algoritmo de árbol de decisión, en la primera veremos este dato de zoológico que es un ejemplo sencillo la cual no tiene ningún dato faltante, podremos ver la creación de este árbol, como además también la matriz de confusión. En el siguiente video lo que haremos es una validación cruzada y sobre una base de datos real, además que también, que cuenta con datos faltantes. Una vez que tienen descargados los datos, nos vamos a nuestro programa RapidMiner y procederemos a agregarlos, además de agregar el operador a [INCOMPRENSIBLE] Para esto nos vamos a Repository, a Data, My computer y vamos a buscar el archivo. [SONIDO] En este caso, llamado zdo csv, le damos click a next, nuevamente a next, y vamos a la columna que corresponde a la clase, en este caso tenemos una columna que se llama class type la cual va del uno al siete. Si bien los nombres no son lo más adecuado, existe otro archivo que también se pueden descargar en el repositorio de UCI, el cual contiene la asociación de los números con la clase correspondiente, en este caso, cambiaremos el rol, como lo hemos hecho anteriormente, del tipo label para decirle al programa de que esta es nuestra columna clase y además cambiaremos el tipo a polinomial, por último terminaremos y lo agregaremos llamándolo zoológico. Una vez que los datos estén agregados procederemos a agregar el algoritmo de árbol de decisión. Primero que todo, tenemos que agregar el operador llamado Split data, como lo habíamos hecho anteriormente, para poder dividir nuestros datos. Para esto, iremos a Edit numeration en Parameters y agregaremos dos entradas, 70% para training y un 30% para testing, conectamos la salida out con la entrada exit. Ahora agregaremos el operador de árbol de decisión llamado decision tree, el cual está en esta cajita verde y tiene los siguientes parámetros, el criterio de ganarse información, tiene ganarse información, accuracy, least square, etcétera, la cantidad máxima de profundidad del árbol y si se quiere aplicar pruning o pre-pruning, que como vimos en clase, es poder podar este árbol antes o después de haberlo realizado, antes, me refiero a medida que lo estamos realizando. Conectamos la salida par con la entrada atrás de decision tree y eso por ahora. Ahora agregaremos el operador Apply model, el cual nos permitirá poder realizar este modelo y por último agregaremos el operador performance para saber la matriz de confusión. Una vez que tenemos agregados todos los bloques, iremos conectando cada uno de ellos, la otra salida par que corresponde al testing se lo agregaremos a la salida, a la entrada unl del Apply model y la salida mod, que corresponde al modelo, a la entrando mod del Apply Model, por último lab con lab, y per con res, con esto podemos ver la matriz de confusión pero también nos gustaría ver el árbol que se genera, es por esto que la salida mod del operador Apply model corresponde a la misma entrada mod, you que no se le hace ningún cambio sino que se y queremos poder visualizar, la salida mod la vamos a llevar a la entrada res. Una vez que tengan todo conectado de esta forma, le dan clic a Play y automáticamente le llegarán los resultados. Si se final bien, como tenemos salida también en modelo, automáticamente nos lleva a la lista donde está el modelo y podemos ver el árbol de decisión que se formó. El primer atributo corresponde a feathers, que es pluma, si tiene pluma o no, como este atributo es un atributo binario que va entre 0 y 1 él simplemente puso mayor a 05 y menor a 05, que es contiene o no contiene, también podríamos aplicar una transformación booleana, como lo hemos dicho en videos anteriores, la cual nos diga si está o no está, y acá el atributo de salida true y false. Entonces, acá nos dice que es la clase dos y cosas de ese estilo. También puedo ver la matriz de confusión, en este caso fue de un 86.21% lo cual es bastante bueno. Veremos los distintos parámetros del árbol de decisión, en este caso, quitaremos la opción de hacer pruning y pre-pruning y veremos qué sucede. En este caso, si se fijan bien, el árbol creció, antes terminaba por acá más o menos, en una profundidad de 6, ahora está en una profundidad de 7, y la matriz de confusión no se vio afectada. Por último, como la máxima profundidad es 7, podemos quitarle la máxima profundidad, podemos modificarle, vamos a poner un valor de 4 para que vean qué sucede, y aquí nos da solo tres atributos con un performance de un 86.21% también. Y hay clases donde, hay clases que tienen 100% porque no todas las clases con esta profundidad se vieron representadas, si se fijan bien en el árbol, solo podemos decir de la uno, la dos, la cuatro y la siete, que ambas, que todo, la uno, la dos, la cuatro y la siete, tienen un recall del 100% pero la seis, la cinco y la tres no se vieron representadas, es más, el accuracy de cada una de estas clases es cero, en la otra es, es bueno. [SONIDO] En este video vimos cómo aplicar el algoritmo de árbol de decisión usando el programa de RapidMiner y sobre los animales de un zoológico. Eso ha sido todo por hoy y espero verlos pronto en el siguiente video, donde usaremos nuevamente el algoritmo para la predicción de cáncer de cuello uterino.