Está en la página 1de 30

Un rbol de decisin es una forma grafica y

analtica de representar todos los eventos


(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