[MÚSICA] Hola, bienvenidos a un nuevo video de ayudantía de nuestro curso de minería de datos. En este video veremos otro ejemplo del algoritmo de árbol de decisión. El objetivo principal de este video es aplicar el algoritmo que vimos en clases hace un par de semanas, sobre los datos de pacientes que se les fue diagnosticado cáncer de cuello uterino. Como bien se acordarán, realizamos un primer experimento utilizando la base de datos de un zoológico y aplicando el algoritmo de árbol de decisión. Esta base de datos constaba en una mayoría con variables binarias para describir a los animales. La idea de este video es utilizar variables continuas junto con variables binarias y numéricas. Aproximadamente, 11.000 nuevos casos de cáncer invasivo de cuello uterino se diagnostican cada año en los Estados Unidos, el cual mata cerca de 4.000 mujeres en este mismo país y alrededor de 300.000 mujeres en todo el mundo. Sin embargo, el número de casos nuevos de cáncer de cuello uterino ha ido disminuyendo constantemente en las últimas décadas gracias a la detección temprana. En esta ocasión trabajaremos con información real de mujeres del Hospital Universitario de Caracas, las cuales presentan o no este diagnóstico. La base de datos, como se habrán imaginado, se centra en la predicción del diagnóstico de cáncer de cuello uterino, usando distintos indicadores, el conjunto de datos incluye información demográfica, hábitos y registros médicos históricos de 858 pacientes, varios pacientes decidieron no responder alguna de las preguntas, debido a problemas de privacidad, por lo que existen valores faltantes. En este último video de ayudantía veremos el algoritmo de árbol de decisión aplicado a una base de datos real de mujeres que tienen cáncer de cuello uterino. A diferencia del video anterior, en este video lo que vamos a hacer es hacer una validación cruzada, además de trabajar con datos faltantes en esta base de datos. Para partir, primero lo que tenemos que hacer es bajar la base de datos, para esto utilizaremos Kaggle, y la base de datos se llama Cervical Cancer Risk Classification, lo pueden encontrar en Google, en cualquier parte, la aprietan con su cuenta usuario y se la descargan. Una vez descargado llegará un archivo csv el cual contiene signos de interrogación, es por esto que anteriormente, antes de pasar a RapidMiner y cargar los archivos, lo que tenemos que hacer es abrirlo en Excel, por eso tengo dos archivos acá, uno original y uno editado, el cual el original contiene un signo de interrogación, como se puede ver acá, y el archivo editado se lo eliminé y puse un caracter especial. Fue lo único que se realizó. Teniendo ese cambio podemos trabajar con los missing data y poder reemplazarlo por el promedio o por cosas que nos hagan sentido en cada uno de los atributos. Una vez que tenemos descargados los archivos, nos procedemos a nuestro programa de RapidMiner y agregaremos los datos. Nos vamos a Data, My computer, como lo habíamos hecho anteriormente y buscamos así el archivo, en este caso, lo tengo en Data Mining, Video de ayudantía 5 y tenemos el archivo original y el editado que no tiene estos signos de interrogación. Nos vamos a next y como pueden ver estas casillas quedan simplemente vacías, nuevamente a next y aquí tenemos que dar, tenemos que buscar la columna que corresponde a la biopsia, que es la clase, en este caso, cambiaremos de rol como lo hemos hecho anteriormente a label, así RapidMiner sabe que es la columna para hacer clasificación, además cambiaremos el tipo a binominal y ahí solo está 0 1, si está en la biopsia o no está en la biopsia, si encontró el cáncer o no. Apretamos next y por último guardamos nuestro archivo, le vamos a poner el nombre de cáncer. Una vez tenemos agregado nuestro archivo, nos vamos directamente a la ventana de Diseño y procedemos a poner estos datos en la ventana de Proceso con el operador. En este caso, como les mencionamos anteriormente, haremos una validación cruzada y también aprenderemos a cómo cambiar estos valores. Para eso vamos a usar el operador llamado Replace Missing Values y conectaremos la salida out con la entrada exit y veremos los parámetros que tiene este operador. Este operador lo que hace está por defecto, cambia todos los valores que están vacíos en la columna por el promedio, es decir, saca todos los datos que no son faltantes, calcula el promedio, y a los datos que son faltantes les coloca este promedio. También lo que vamos a hacer, que es algo es muy interesante, vamos a seleccionar qué tipo de atributo queremos que se le produzca a esto, por ejemplo, queremos que solo a la columna que tiene la, al año, se le cambie los valores faltantes por el promedio o también un sub conjunto, etcétera. Si quisiéramos hacer distinto, distinto a por ejemplo, a una columna uno le queremos hacer el promedio y la columna dos le queremos hacer el valor más chico, el mínimo o el máximo o reemplazarlo con 0 o con una valor en específico, podemos poner varias de estas casillas que vayan a una columna específica. Una vez que you tenemos reemplazado, que en este caso vamos a poner que todas las columnas que se reemplacen por el promedio, lo que vamos a proceder a hacer es una validación cruzada usando un Chain Fold Cross Validation, para eso iremos a la ventana de operación, de operadores y agregaremos el operador Cross Validation, aquí está la cajita amarilla y conectaremos la salida exa con la entrada exa de Cross Validation. Cross Validation, los parámetros que en él reside son la cantidad de folds y la forma en que queremos hacer estos folds, esta forma está con el formato automático pero lo cambiaremos a estratificado, es decir, que se mantengan las proporciones de clase entre cada folds. Haremos doble click en Cross Validation y automáticamente nos redirigirá a una nueva ventana de diseño en la cual podemos ver acá que esta está con proceso, es decir, si queremos ver solo hace falta apretar aquí. Apretamos doble clic nuevamente y tenemos dividida en dos nuestra ventana, una es la parte de training y una parte de testing. Si nosotros hacemos un Chain Fold Cross Validation tenemos nueve folds que usaremos para el training y uno para testing, donde cada fold se usará una vez como testing, es decir, se usará diez veces. Una vez que tenemos esto, agregamos el operador decision tree, que es el árbol de decisión a la ventana de training y conectamos la entrada tra con la, la entrada tra con tra y la salida mod, que es el modelo, con mod. Por último aplicaremos nuestro modelos como lo hemos hecho en los videos anteriores, con el Apply Model y con Performance Classification, y conectamos mod con mod, test con unl, esto es el modelo que está entrando en modelo y este es el set de testing, el fold, que está entrando al testing, por último lab con lab y sacaremos el Performance. Una vez que tenemos hecho esto nos vamos nuevamente a la ventana de Proceso y conectamos Performance con Resultados, le damos clic a Play y vemos los resultados que obtenemos. En este caso tenemos un 96.27% de accuracy lo cual es muy bueno, para ver cuánto fue la diferencia usando estos datos faltantes, lo que podríamos hacer es descargar de nuevo el archivo original, podemos conectar el archivo original al ejemplo [INCOMPRENSIBLE] Cross Validation y en este caso, en esta casilla, este operador, no serviría para nada pero para ver la diferencia, podemos ver que disminuye el accuracy en un 0.25% aproximadamente, 0.23 porque fue un 96.27, lo cual indica que efectivamente tuvo mejora, tuvo mejora. También podemos mejorar aún más los resultados, voy a devolver esto acá, si cambiáramos los parámetros del decision tree, por ejemplo, el decision tree en este momento tiene un máximo de profundidad de 20, le podríamos poner que fuera de ocho y aplica pruning y pre-pruning que es poder podar el árbol, le vamos a quitar estos parámetros y vamos a dar nuevamente clic a Play y podemos ver que disminuyó el accuracy, antes teníamos 96 y ahora tenemos un 95.57. Veamos qué pasa cuando disminuimos la profundidad. Y la idea es que ustedes jueguen con su modelo para poder encontrar cuál les da mejores performance, en este caso un 96.27% con una profundidad de ocho y podríamos ver qué pasa cuando tengo una profundidad de ocho y aplicamos pruning y pre-pruning, y lo mantenemos. También pueden cambiar la cantidad mínima de ganancia que se requiere para poder pasar al siguiente nivel, la cantidad mínima de filas en cada hoja, la cantidad mínima en este caso, si le ponemos 10 va a afectar profundamente al desempeño, 96.15, que es menor a lo que obtuvimos. Entonces, en este video lo que queríamos enseñarle, y a lo largo de los video ayudantías, es que RapidMiner es una herramienta súper fácil para poder hacer su modelo y aplicarlo, existen estos operadores como Replace Missing Values, perdón, los cuales les va a permitir poder cambiar estos valores faltantes y también hacer una validación cruzada de forma estratificada. En este video vimos cómo aplicar el algoritmo de árbol de decisión sobre pacientes diagnosticados con cáncer de cuello uterino, además se utilizaron distintos tipos de variables y en donde algunos incluso contenían datos faltantes. Bueno, eso ha sido todo por hoy y espero que hayan aprendido a utilizar el algoritmo y puedan utilizarlo en el futuro en sus propios proyectos personales. [AUDIO_EN_BLANCO]