Árboles de Decisión Árboles de Sintaxis Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas
Árboles de Decisión
Árbol de Decisión Forma gráfica de representar y visualizar todos los eventos que pueden surgir a partir de la toma de decisiones secuenciales. Facilita la identificación de la decisión más acertada, a partir de probabilidades. Permite el análisis de consecuencias, del comportamiento en la toma de decisiones.
Árbol de Decisión Ámbitos de utilización: Probabilidad y estadística: Uso en investigación de operaciones, en teoría de la decisión. Herramienta de apoyo empresarial. Tipos de nodos: Nodo de decisión: indica una toma de decisión. Nodo de probabilidad: indica un evento aleatorio. Nodo terminal: posible salida o resultado.
Árbol de Decisión http://www.treeplan.com/treeplan-for-decision-trees.htm
Árbol de Decisión Ámbitos de utilización: probabilidad y estadística. Análisis por medio de un árbol de decisión: 1.Definir el problema. 2.Dibujar el árbol de decisión. 3.Asignar probabilidades a los eventos aleatorios. 4.Estimar los resultados para cada combinación posible de alternativas. 5.Resolver el problema utilizando la ruta que proporcione la política óptima.
Árbol de Decisión Ejemplo: Una compañía de seguros nos ofrece una indemnización por accidente de $210.000. Si no aceptamos la oferta y decidimos ir a juicio podemos obtener $185.000, $415.000 o $580.000 dependiendo de las alegaciones que el juez considere aceptables. Si perdemos el juicio, debemos pagar los costos que ascienden a $30.000. Sabiendo que el 70% de los juicios se gana, y de éstos, en el 50% se obtiene la menor indemnización, en el 30% la intermedia y en el 20% la más alta, determinar la decisión más acertada.
Árbol de Decisión Ejemplo: 0.5 Bajo $ 185.000 0.7 Gana 0.3 Medio $ 415.000 Juicio 0.2 Alto $ 580.000 0.3 Pierde - $ 30.000 Arreglo extrajudicial $ 210.000
Árbol de Decisión Ejemplo: 0.7 $ 224.100 Juicio 0.5 $ 333.000 Gana 0.3 0.2 Bajo Medio Alto $ 185.000 $ 415.000 $ 580.000 $ 224.100 0.3 Pierde - $ 30.000 Arreglo extrajudicial $ 210.000
Árbol de Decisión Ámbitos de utilización: Aprendizaje de máquina y sistemas expertos: Enseñar al computador a tomar decisiones de acuerdo a comportamientos previos. Realizar predicciones (clasificación, regresión). Tipos de nodos: Nodos internos: implementan una función de decisión. Nodos hoja: salidas esperadas o posibles.
Árbol de Decisión Ejemplo: Administración de un fármaco. www.utm.mx/~jahdezp/archivos%20estructuras/desicion.pdf
Árbol de Decisión Ejemplo: Árbol de decisión a partir de datos. Cada dato caracterizado por: - Dos valores numéricos (x1 y x2) - Una forma geométrica Cómo separar las diferentes formas? Alpaydin, E. Introduction to machine learning. MIT press, 2004.
Árbol de Decisión Ejemplo: Árbol de decisión a partir de datos. Alpaydin, E. Introduction to machine learning. MIT press, 2004.
Árbol de Decisión Ejemplo de clasificación: 1. entrenamiento. No. Atributos Apariencia Temperatura Humedad Viento Clase 1 soleado alta alta no desfavorable 2 soleado alta alta si desfavorable 3 nublado alta alta no favorable 4 lluvioso media alta no favorable 5 lluvioso baja normal no favorable 6 lluvioso baja normal si desfavorable 7 nublado baja normal si favorable 8 soleado media alta no desfavorable 9 soleado baja normal no favorable 10 lluvioso media normal no favorable 11 soleado media normal si favorable 12 nublado media alta si favorable 13 nublado alta normal no favorable 14 lluvioso media alta si desfavorable
Árbol de Decisión Ejemplo de clasificación: 2. árbol de decisión. apariencia soleado lluvioso humedad nublado viento alta normal favorable si no desfavorable favorable desfavorable favorable
Árbol de Sintaxis
Árbol de Sintaxis Representación en árbol de la estructura sintáctica del código fuente. Abstracto en el sentido de que no incorpora de forma exacta cada detalle presente en el código (por ejemplo, los paréntesis están implícitos). Facilita la visualización de la estructura del código, la localización de elementos dentro del mismo, y la anotación de información adicional.
Árbol de Sintaxis Ejemplo: while (b!= 0) if (a > b) a = a b; else b = b a; return a;
Árbol de Sintaxis http://en.wikipedia.org/wiki/abstract_syntax_tree
Árbol de Sintaxis Interpretación del lenguaje: Qué representan las hojas? Qué representan los demás nodos? Qué significa recorrer el árbol? Preorden. Inorden. Posorden. Niveles.
Árbol de Sintaxis Ejercicio: int i = 0; int j = 4; for ( ; i<10; i++) { if (i<j) { j = i*j; } } return j;
Árbol de Sintaxis http://blog.zenika.com/index.php?post/2012/08/23/static-analysis-%28part-1/4%29
Árbol de Sintaxis inicio asignación asignación condición mientras variable nombre: x operación op: + variable nombre: y operación op: * comparación op: > cuerpo variable nombre: a variable nombre: b variable nombre: a variable nombre: b variable nombre: y variable nombre: a bloque asignación asignación variable nombre: a operación op: + variable nombre: x operación op: + variable nombre: a constante valor: 1 variable nombre: a variable nombre: b
Árbol de Sintaxis x = a + b; y = a * b; while (y > a) { a = a + 1; x = a + b; }
Árbol binario de expresión: Aplicación específica de un árbol binario para la evaluación de ciertas expresiones: Algebraicas o Booleanas. Operadores unarios o binarios.
((a + b) * c) + 7 http://en.wikipedia.org/wiki/binary_expression_tree
Cada nodo hoja contiene un único operando. Cada nodo interno contiene un único operador (unario o binario). Los subárboles izquierdo y derecho de un nodo operador representan subexpresiones que deben ser evaluadas antes de aplicar el operador en la raíz del subárbol.
Los niveles de los nodos indican la precedencia relativa de su evaluación (no se requieren paréntesis). Operaciones en los primeros niveles (niveles altos) se evalúan despúes que operaciones en los últimos niveles (niveles bajos). La operación en la raíz es siempre la última en ejecutarse.
Ejercicio Construir el árbol asociado a la expresión: ( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 )
( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 ) * / ^ + - 4 2 5 z 8 commons.wikimedia.org/wiki/file:binary_algebraic_expression_tree.jpg
( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 ) * / ^ + -8 4 2 5 z commons.wikimedia.org/wiki/file:binary_algebraic_expression_tree.jpg
Recorridos? Preorden: Posorden: Inorden:
Recorridos? Preorden: * / + 5 z - 8 ^ 4 2 * / + 5 z -8 ^ 4 2 Posorden: 5 z + 8 - / 4 2 ^ * 5 z + -8 / 4 2 ^ * Inorden: 5 + z / - 8 * 4 ^ 2 5 + z / -8 * 4 ^ 2
Recorridos: Asociados con la generación de expresiones en notación: Polaca (notación prefija): recorrido en preorden. Polaca inversa (notación posfija): recorrido en posorden. Infija (la más común): recorrido en inorden. + 3 5 3 5 + 3 + 5
Recorridos: Asociados con la generación de expresiones en notación: Polaca (notación prefija): recorrido en preorden. Polaca inversa (notación posfija): recorrido en posorden. Infija (la más común): recorrido en inorden. + 3 5 no ambigua 3 5 + no ambigua 3 + 5 ambigua (requiere paréntesis)
Generación del árbol a partir de la expresión?
Ejercicio: ( 7 + 8 ( 4 / ( 2 * 9 ) ) ) + 10
Ejercicio: ( 7 + 8 ( 4 / ( 2 * 9 ) ) ) + 10
Preorden (prefija): Posorden (posfija):
Preorden (prefija): + - + 7 8 / 4 * 2 9 10 Posorden (posfija): 7 8 + 4 2 9 * / - 10 +
Generación del árbol a partir de la expresión Expresión posfija?
Ejemplo expresión posfija: 2 6 * 3 8 / +
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz & actual
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / 8 actual
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual 3 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz & actual / 3 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz actual * / 3 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz * / actual 6 3 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz actual * / 6 3 8
Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz * / actual 2 6 3 8
Generación del árbol a partir de la expresión Expresión prefija?
Ejemplo expresión prefija: + * 2 6 / 3 8
Ejemplo expresión prefija: + * 2 6 / 3 8 +
Ejemplo expresión prefija: + * 2 6 / 3 8 * +
Ejemplo expresión prefija: + * 2 6 / 3 8 * + 2
Ejemplo expresión prefija: + * 2 6 / 3 8 * + 2 6
Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6
Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6 3
Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6 3 8
Evaluación de expresiones: Encontrar el valor numérico resultado de la expresión. Implica: - Sustituir variables (si las hay) por valores numéricos. - Aplicar las operaciones en el orden dado por la expresión (precedencia de paréntesis u orden dado por prefija o posfija).
Evaluación de expresiones: Notación infija? Notación posfija? Notación prefija?
Evaluación de expresiones. Notación posfija: Evaluar la expresión de izquierda a derecha. Si el elemento es un operando, insertar en la pila. Si el elemento es un operador, extraer los dos operandos de la pila, aplicar el operador, e insertar el resultado en la pila. Al final, retornar el elemento en el tope de la pila como resultado de la expresión.
Evaluación de expresiones. Notación posfija: 7 8 + 4 2 9 * / - 10 +
Evaluación de expresiones. Notación prefija: Evaluar la expresión de derecha a izquierda. Si el elemento es un operando, insertar en la pila. Si el elemento es un operador, extraer los dos operandos de la pila, aplicar el operador, e insertar el resultado en la pila. Al final, retornar el elemento en el tope de la pila como resultado de la expresión.
Evaluación de expresiones. Notación prefija: + - + 7 8 / 4 * 2 9 10
Referencias en.wikipedia.org/wiki/decision_tree www.dmae.upct.es/~mcruiz/telem06/teoria/arb ol_decision.pdf en.wikipedia.org/wiki/decision_tree_learning www.utm.mx/~jahdezp/archivos %20estructuras/DESICION.pdf www.dmi.unict.it/~apulvirenti/agd/qui86.pdf Alpaydin, Ethem. Introduction to machine learning. MIT press, 2004.
Referencias en.wikipedia.org/wiki/abstract_syntax_tree en.wikipedia.org/wiki/binary_expression_tree en.wikipedia.org/wiki/polish_notation en.wikipedia.org/wiki/reverse_polish_notation en.wikipedia.org/wiki/decision_tree en.wikipedia.org/wiki/decision_tree_learning