home

Bienvenidos! Este Wiki está diseñado con el objetivo de que puedas aprender el uso de una valiosa herramienta, como lo es el Árbol de Decisión.

Un árbol de decisión (también conocido como árbol de clasificación) es una técnica que permite analizar decisiones secuenciales, basadas en el uso de resultados y sus probabilidades asociadas.

Los árboles de decisión son los bloques de construcción tradicionales de la minería de datos, utilizado en el ámbito de la inteligencia artificial, a partir del cual se desarrollan diagramas de construcciones lógicas, muy similares a los sistemas de predicción basados en reglas, que sirven para representar y categorizar una serie de condiciones que ocurren de forma sucesiva, para la resolución de un problema.

Un árbol de decisión tiene variables de entrada referidas a una situación descrita por medio de un conjunto de atributos y a partir de estas entradas, devuelve una respuesta la cual es una decisión que es tomada a partir de ellas. Los valores que pueden tomar las entradas y las salidas pueden ser valores discretos o continuos. Por lo general se utilizan más los valores discretos por la simplicidad de la interpretación. Cuando se utilizan valores discretos en las funciones de una aplicación se denomina clasificación y cuando se utilizan los continuos se denomina regresión.

Los árboles de decisión son normalmente construidos a partir de la descripción de la narrativa de un problema. Proveen una visión gráfica de la toma de decisión necesaria, especifican las variables de entrada que son evaluadas, qué acciones deben ser tomadas y el orden en la cual la toma de decisión será efectuada. Cada vez que se ejecuta un árbol de decisión, solo un camino será seguido dependiendo del valor actual de la variable evaluada.

La estructura de árbol se utiliza en muchos campos del conocimiento, como la medicina, lógica, informática, en resolución de problemas, mercadeo, y la ciencia de la administración.

A partir de la raíz, el árbol divide su único tronco en dos o más ramas. Cada una se podría dividir aún más, en dos o más ramas. Esto continúa hasta que lleguemos a una hoja, a partir de la cual no habrá más división y representan cada una de las posibles decisiones. La raíz y las hojas son consideran también como nodos.



Ahora veremos cómo desarrollar un árbol de decisión, utilizando el programa Rattle.

Rattle es una herramienta de la minería de datos que posee una interfaz muy intuitiva y fácil de manejar. Cuenta con ayudas que amplían la información que son utilizadas por este paquete. Una de las grandes ventajas es que está desarrollado bajo el lenguaje R, por lo que es gratuito y sólo se necesita una conexión a internet para adquirirlo. En el siguiente archivo encontrarás la dirección de la página en la que puedes descargar R. También se detalla el paso a paso para realizar su instalación, así como la instalación de Rattle



Existen varias maneras de cargar los datos, debido a la variedad de formatos en que se pueden encontrar. Por lo general, los datos se consiguen en una tabla de Excel, es por esta razón que se explicará detalladamente cómo importar los datos si se encuentran en este formato.

En primer lugar, debes abrir el archivo teniendo en cuenta que las columnas corresponden a las variables y las filas corresponden a los individuos, excepto la primera que es donde se identifica cada una de las variables. Asegúrate de que los nombres asignados no contengan acentos, esto arrojará un error más adelante.

En el menú Archivoà guardar como, selecciona el tipo de archivo, el cual debe ser CSV(delimitado por comas)

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Si te aparecen los siguientes mensajes, presionas Aceptar o Sí, según sea el caso (todos los que te aparezcan)



<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Una vez completado este proceso, ubica el archivo guardado anteriormente, cliqueas sobre él con el botón derecho del mouse, escoges la opción Abrir con, seleccionas Block de nota.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Una vez abierto el archivo en Block de nota, debes cambiar las comas por puntos (para las cifras decimales) y luego los punto y coma por coma (para separarlos datos) y debes hacerlo en este orden. Recuerda que el archivo debe estar delimitado por comas, es decir que cada dato se separa por coma y cuando lo abres observarás que las separaciones están hechas con punto y coma.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Para esto seleccionas en el menú Edición, Reemplazar. En la casilla buscar colocas primero una coma y en reemplazar un punto (.) Presionas Reemplazar todo.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Posteriormente en la casilla buscar colocas un punto y coma y en reemplazar una coma  y cambia tambien las vocales acentuadas a no acentuadas, por ejemplo si una variable en algún momento toma el valor "Sí" cambia la í por i para que la opción sea "Si"



<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Luego seleccionas en el menú Archivo, Guardar y puedes cerrarlo.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Puedes intentar hacer estos pasos con el siguiente archivo:

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">el cual debe quedar de esta manera



<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Ahora es el momento de abrir el programa Rattle, recuerda que primero debes abrir R y una vez en la consola, escribes los siguientes comandos:

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">> library(rattle)

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">> rattle

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Una vez que el programa Rattle se ha abierto, debes seleccionar en la pestaña Datos, menú origen, Hoja de cálculo (1). Luego presionas el botón que se encuentra a la derecha de Archivo, en el cual debe aparecer la palabra Ninguno (2), para que se desplieguen los archivos disponibles, ubica el archivo en la carpeta que lo hayas guardado y seleccionas abrir (3) y luego ejecutar (4). <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">En nuestro caso, el archivo se llama “EXTUBACION.csv” el cual se refiere a datos que corresponden a los registro de 79 recién nacidos, que en el período comprendido entre Febrero y Diciembre de 2011, fueron ingresados a la Unidad de Cuidados Intensivos Neonatales del Instituto Autónomo Hospital Universitario de Los Andes, por requerir ventilación mecánica. De éstos niños, 24 tuvieron como resultado de la extubación endotraqueal, no exitosa.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Las variables que se consideran tienen mayor relevancia al momento de realizar la extubación son: <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">La edad gestacional, peso al nacer, Frecuencia Respiratoria del paciente (FR), Frecuencia respiratoria aportada por el ventilador mecánico, Frecuencia Cardiaca (FC), Tensión Arterial Media (TAM), Saturación de oxígeno, Tiempo en Ventilación Mecánica (TVM), Frecuencia Ventilatoria (FV), Presión Media de la Vía Aérea (PMVA), Presión parcial de Dióxido de Carbono (PCO2), pH sanguíneo y Test de Sílverman, que mide el esfuerzo respiratorio.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">El objetivo del ejercicio que vamos a desarrollar a continuación, consiste en predecir a partir de las variables de entrada, el éxito o fracaso de la extubación, utilizando para ello el árbol de decisión.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Una vez cargado los datos, debes asegurarte que la variable destino esté seleccionada correctamente. Esta es la variable dependiente, la cual divide al conjunto de datos en tantos grupos como categorías tenga. En nuestro caso, tenemos a extubación exitosa como variable destino, por lo que el conjunto de dato se divide en “Si”, para aquellos niños cuya extubación fue exitosa y “No”, para aquellos que no lo fue.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Existe la posibilidad de ignorar las variables que se deseen ya que puede darse el caso en el que éstas no posean información relevante para el análisis. Esto se hace seleccionando la variable y luego presionando el botón rojo de ignorar. Siempre que se realicen cambios sobre las variables se debe presionar de nuevo el botón ejecutar.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Hecho esto, en la pestaña Modelo, debes seleccionar el tipo de modelo que deseas aplicar, en nuestro caso, sería Árbol.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Al momento de generar el modelo se pueden ajustar ciertas opciones con el fin de que el modelo se adapte a lo que se desea. El primer cuadro de texto que se observa es “División mínima” este campo especifica el número mínimo de observaciones que deben existir en un nodo antes de que se realice la división. “Cubo mínimo” indica el mínimo de observaciones que debe haber en cada hoja del árbol. “Profundidad máxima” es el número máximo de niveles permitidos en el árbol. “Complejidad” es un parámetro utilizado para controlar el tamaño del árbol y para seleccionar el tamaño óptimo, si el costo de agregar otra variable al nodo de decisión supera el valor de este parámetro se detiene la construcción del árbol. En caso de haber datos faltantes, debes seleccionar la opción para esto.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Finalmente presionas ejecutar y aparece lo siguiente.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Si presionas el botón dibujar, aparecerá el diagrama que representa al árbol de decisión.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Al observar el Árbol, podemos notar que con los datos con los que se contaban, la variables con mayor poder predictivo son:


 * <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Tiempo en Ventilación Mecánica
 * <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Saturación de Oxígeno
 * <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Edad Gestacional
 * <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Presión parcial de Dióxido de Carbono y
 * <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Frecuencia Cardiaca

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Veamos un ejemplo de la desición que se ha de tomar de acuerdo a algunos valores de la variable:

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Si el Tiempo en Ventilación Mecánica es mayor a 5.5 días, la saturación de oxígeno es mayor a 94.7% y la edad gestacional es menor a 31.5 semanas, el paciente no debe ser extubado, ya que existe un 100% de probabilidad de que la extubación sea no exitosa. Nos referimos a la hoja marcada con un círculo rojo en el árbol. Veamos otra predicción:

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 17px; text-align: justify;">Si el Tiempo en Ventilación Mecánica es menor a 5.5 días, la Presión parcial de Dióxido de Carbono es menor a 44.4 y la Frecuencia Cardíaca es mayor a 144.5 pero menor a 147 pulsaciones por minuto, el paciente no debe ser extubado, ya que existe un 100% de probabilidad de que la extubación sea no exitosa. Nos referimos a la hoja marcada con un círculo azúl en el árbol. <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

Si bien es cierto que se cuenta con un número limitado de datos, los resultados no se alejan de la realidad. Este ejercicio práctico sólo con fines didácticos, demuestra el valor predictivo de este recurso, que sería aún más certero y significativo si se cuenta con una mayor cantidad de datos.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Con el fin de determinar el comportamiento de las variables más relevantes para la predicción de acuerdo al árbol de decisión, se puede hacer una represnetación gráfica de cada una de ellas.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Para esto selecionas la pestaña Explorar, Tipo: Distribuciones, y escoges las representaciones que más te interesen.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">En nuestro caso seleccionaremos Diagrama de caja e Histogramas, ya que dan una buena información referente a la distribución y comportamiento de las variables.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Esto lo harmos con algunas de las variables que según el árbol, tienen mayor relevancia predictiva, como son Tiempo en Ventilación Mecánica, Saturación de Oxígeno y Frecuencia Cardíaca del paciente.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

En primer lugar tenemos la representación en mosaico que nos muestra la proporción de cada grupo. <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Se puede observar que existe una mayor proporción de pacientes que fueron extubados exitosamente.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">
 * Veamos la distribución del Tiempo en Ventilación Mecánica **

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">En los Gráficos se puede observar que el tiempo en ventilación mecánica de los pacientes cuya extubación fue exitosa, es menor que el de los que tuvieron una extubación no exitosa. Esto da indicios de que a mayor tiempo en ventilación mecánica, mayor es el riesgo de fracaso en la extubación.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;"> **Veamos ahora la distribución de la Saturación de Oxígeno**

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">En los Gráficos se puede observar que la saturación de oxígeno en los pacientes cuya extubación fue exitosa, es mayor que la de los que tuvieron una extubación no exitosa. Esto da indicios de que a mayor saturación de oxígeno, menor es el riesgo de fracaso en la extubación. Esto debido a que mientras más alto sea este valor, indica que es mayor el porcentaje de oxígeno que es entregado a los tejidos.


 * <span style="font-family: Arial,Helvetica,sans-serif; font-size: 120%;">Veamos ahora la distribución de la frecuencia Cardíaca **

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">La Frecuencia Cardiaca de los pacientes cuya extubación fue exitosa, es menor que la de los que tuvieron una extubación no exitosa. Esto da indicios de que a mayor frecuencia cardiaca, mayor es el riesgo de fracaso en la extubación.

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;">Todos estos resultados coinciden con las combinaciones plasmadas en el Árbol de decisión

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 130%; text-align: justify;"><span style="font-family: Arial,Helvetica,sans-serif; font-size: 120%;">Para profundizar más aun en este tema, se recomienda el libro de Graham Williams sobre Minería de Datos usando Rattle

<span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 20px; text-align: justify;">A continuación se presenta un material interesante en el que encontrarás casos de estudio de la minería de datos usando R <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 20px; text-align: justify;"> <span style="display: block; font-family: Arial,Helvetica,sans-serif; font-size: 20px; text-align: justify;">