(sucesos) que puedes surgir a partir de una decisin asumida en cierto momento. Nos ayudan a tomar la decisin mas acertada desde un punto de vista probabilstico, ante un abanico de posibles decisiones. Permite desplegar visualmente un problema y organizar el trabajo de clculos que deben realizarse. Tcnica que permite analizar decisiones secuenciales basada en el uso de resultados. Los rboles de decisin se pueden usar para generar sistemas expertos, bsquedas binarias y rboles de juego. Las ventajas de un rbol de decisin son: Facilita la interpretacin de la decisin adoptada. Proporciona un alto grado de comprensin del conocimiento utilizado en la toma de decisiones. Explica el comportamiento respecto a una determinada tarea de decisin. Reduce el nmero de variables independientes. Es una magnifica herramienta para el control de la gestin empresarial.
Nodo de decisin: Indica que una decisin necesita tomarse en ese punto del proceso. Esta representado por un cuadrado.
Nodo de probabilidad: Indica que en ese punto de proceso ocurre un evento aleatorio. Esta representado por un circulo.
Rama: Nos muestra los distintos caminos que se pueden emprender cuando tomamos una decisin o bien ocurre algn evento aleatorio.
Es un rbol compuesto por nodos intermedios, que representan afirmaciones, de los que salen enlaces, segn la afirmacin sea cierta o no, hacia dos nodos descendientes. Los nodos hoja representan afirmaciones finales que ya no se evalan. Tambin pueden verse los nodos intermedios como preguntas que solo tienen dos posibles respuestas si y no y los nodos hoja como afirmaciones concluyentes. QU SON? Es grande ? Tiene cuello largo? Jirafa Tiene trompa? Elefante Le gusta esta en el agua? Hipoptamo Rinoceronte Emite chillidos? Ratn Ardilla si si si si si no no no no no Comienzo nodo-actual := nodo-raiz; Mientras not(nodo-hoja(nodo-actual)) hacer respuesta:= preguntar(nodo-actual); Si respuesta =cierto entonces nodo-actual := descendiente-cierto(nodo-actual); Si respuesta =falso entonces nodo-actual := descendiente-falso(nodo-actual); Fin Visualizar-afirmacion(nodo-actual) Fin ALGORITMO DE SOLUCION (deffacts datos (clase t) (rama se-mueve si) (rama patas no)) (defrule animal (clase t) (rama se-mueve si) => (assert (clase animal))) (defrule vegetal (clase t) (rama se-mueve no) => (assert (clase vegetal))) (defrule ciempies (clase animal) (rama patas si) => (assert (solucion ciempis)) (printout t "El animal es un ciempis" crlf))) (defrule gusano (clase animal) (rama patas no) => (assert (solucion gusano)) (printout t "El animal es un gusano" crlf))) PROBLEMA 1 Se mueve? Tiene patas? Es un ciempis Es un gusano Es un vegetal si no si no Debemos registrar todos los nodos que se nos presenta en el rbol de decisin
PROBLEMA 2 si si si si si no no no no no Es grande ? Tiene cuello largo? Jirafa Tiene trompa? Elefante Le gusta esta en el agua? Hipoptamo Rinoceronte Emite chillidos? Ratn Ardilla (deffacts datos (clase t) (rama es-grande no) (rama emite- chillidos no) ; (rama cuello- largo no) ; (rama tiene- trompa no) ; (rama gusta- agua si) ) (defrule grande (clase t) (rama es-grande si) => (assert (clase grande))) (defrule pequeno (clase t) (rama es-grande no) => (assert (clase pequeno))) (defrule jirafa (clase grande) (rama cuello-largo si) => (assert (solucion jirafa)) (printout t "El animal es una jirafa" crlf)) (defrule cuellopequeno (clase grande) (rama cuello- largo no) => (assert (clase cuellopequeno))) (defrule elefante (clase cuellopequeno) (rama tiene- trompa si) => (assert (solucion elefante )) (printout t "El animal es una elefante" crlf)) (defrule notrompa (clase cuellopequeno) (rama tiene- trompa no) => (assert (clase notrompa))) (defrule hipopotamo (clase notrompa) (rama gusta- agua si) => (assert (solucion hipopotamo)) (printout t "El animal es un hipopotamo" crlf)) (defrule rinoceronte (clase notrompa) (rama gusta- agua no) => (assert (solucion rinoceronte)) (printout t "El animal es un rinoceronte" crlf)) (defrule raton (clase pequeno) (rama emite- chillidos si) => (assert (solucion raton)) (printout t "El animal es un raton" crlf)) (defrule ardilla (clase pequeno) (rama emite- chillidos no) => (assert (solucion ardilla)) (printout t "El animal es una ardilla" crlf)) PROBLEMA 2 PROBLEMA 2 Si el plato principal es carne roja ENTONCES servir vino tinto SI el plato principal es ave y es pavo ENTONCES servir vino tinto SI el plato principal es ave y no es pavo ENTONCES servir vino blanco SI el plato principal es pescado ENTONCES servir vino blanco
PROBLEMA 3 El plato principal es Carne Roja? Mejor eleccin VINO TINTO El plato principal es Ave? El plato principal es Pavo? Mejor eleccin VINO BLANCO Mejor eleccin VINO TINTO El plato principal es pescado? Mejor eleccin VINO BLANCO Mejor eleccin DESCONOCIDO si no si no si no si no
En los arboles de decisin binario (permite dos decisiones), dificultan la representacin que permite un conjunto de respuestas o una serie de casos.
Un nodo de decisin capaz de permitir ramas mltiples dara una solucin ms directa.
si no El plato principal es Carne Roja? Mejor eleccin VINO TINTO El plato principal es Ave? Mejor eleccin VINO BLANCO El plato principal es Pavo? Mejor eleccin VINO TINTO Mejor eleccin DESCONOCIDO si no si no Procedure Resolver_rbol Establecer la ubicacin del nodo raz en el rbol en el nodo raz While la ubicacin actual es un nodo de decisin do Preguntar en el nodo actual hasta que Se proporcione una respuesta vlida para el conjunto de opciones de este modo. Establecer el nodo actual en el nodo hijo de La rama asociada con la opcin seleccionada. End do Devolver la respuesta al nodo actual End procedure
El plato principal? Mejor eleccin VINO TINTO Mejor eleccin VINO BLANCO El plato principal es Pavo? Mejor eleccin VINO TINTO Mejor eleccin VINO BLANCO Mejor eleccin DESCONOCIDO Carne roja Ave Pavo Otro si no Procedure Resolver_rbol_binario Establecer la ubicacin del nodo raz en el rbol Al nodo raz While la ubicacin actual es un nodo de decisin do Preguntar en el nodo actual. If la respuesta de la pregunta es s Establecer el nodo actual en la rama s Else Establecer el nodo actual en la rama no End if End do Devolver la respuesta al nodo actual End procedure Procedure Resolver_rbol Establecer la ubicacin del nodo raz en el rbol en el nodo raz While la ubicacin actual es un nodo de decisin do Preguntar en el nodo actual hasta que Se proporcione una respuesta vlida para el conjunto de opciones de este modo. Establecer el nodo actual en el nodo hijo de La rama asociada con la opcin seleccionada. End do Devolver la respuesta al nodo actual End procedure Una vez que el rbol de decisin alcanza una respuesta, pregunta si la respuesta es correcta, no se hace nada mas; en cambio que pasa cuando la respuesta es incorrecta entonces se modifica para ajustar a la respuesta correcta.
Para este caso consideramos arboles de decisin binarios cuyas posibilidades de respuestas a las preguntas en los nodos internos son "SI" o "NO". CLIPS>(run): Es muy grande? (si o no) : SI Tiene un cuello largo : (si o no): NO Tiene una trompa (si o no): SI Creo que es un/a elefante Estoy en lo cierto? (si o no): SI
SI se quisiera clasificar un gato? La pregunta que deberamos incluir es: Malla?
CLIPS>(run): Es muy grande? (si o no) :NO Emite Chillidos ?: (si o no): NO Creo que es un/a ardilla Estoy en lo cierto? (si o no): NO Que animal es? : gato Que pregunta se debe contestar para distiguir gato de ardilla? : Maulla? Ahora ya puedo distiguir un/a gato CLIPS>(run): Lo intentamos de nuevo? (si o no): SI Es muy grande? (si o no) :NO Emite Chillidos ?: (si o no): NO Maulla? (si o no) : SI Estoy en lo cierto? (si o no): SI Lo intentamos de nuevo? (si o no): NO