3. Tema 4: Algoritmo de Árboles de Decisión
Funcionamiento
y entrenamiento
Introducción
Ejemplo Iris
Ejemplos en
Python
Formulación
matemática
Entropía y
Ganancia de
Información
Conceptos principales
4. Definición
4
• Los árboles de decisión (decision trees) son un buen ejemplo de modelos
de aprendizaje automático supervisado, utilizados en problemas de
clasificación y también regresión (comentada al final)
• Básicamente, aprenden a partir de los datos una jerarquía de decisiones
if/else que lleva hasta el resultado (un “diagrama de flujo”). Es decir,
construye una estructura de árbol dónde cada nodo es un test de un
atributo o característica, cada rama representa una opción resultado del
test, y cada hoja (nodo terminal del árbol) representa una etiqueta de
clase/categoría
• Se construye recursivamente, dividiendo los datos de entrenamiento en
subconjuntos según los valores de sus características hasta que se cumple
un criterio de finalización: llegamos al nivel de hoja, o dividimos el nodo ya
que se cumple el mínimo de elementos para separar añadiendo
información
• No requieren conocer nada específico del problema a resolver, son muy
generales, ni tampoco fijar parámetros. Son útiles también para problemas
con muchos atributos o características de los datos de muestra
• Se utilizan también como base de algoritmos más complejos como los
Bosques Aleatorios (Random Trees), que permiten mejorar la eficiencia
• Vamos a ver con más detalle este modelo de aprendizaje automático, desde
su aplicación a la formulación matemática subyacente a estos modelos
5. Árbol de decisión para las flores de Iris
5
• Vamos a ver el funcionamiento de los árboles de decisión para problemas de clasificación, aplicado al ejemplo
de identificar las flores de Iris del Tema 2
• El objetivo es tener un modelo para clasificar correctamente la variedad de la flor a partir del ancho y largo de
los pétalos y sépalos. Hay tres variedades de flor setosa, versicolor y virginica
• La base de datos (de entrenamiento y test) tiene 150 muestras: 50 de cada especie
6. Implementación en Python
6
• El programa mostrado implementa el
algoritmo DecisionTreeClassifier de la
librería scikit-learn
7. Implementación en Python: resultados
7
Clasificación de las cinco instancias del programa
Descripción de la base de datos
8. Implementación en Python: cómo funciona el modelo
8
• Vamos ahora a entender con más
profundidad el proceso del algoritmo de
aprendizaje del árbol
• Mostramos el árbol con los conceptos del
algoritmo
9. Implementación en Python: cómo funciona el modelo
9
• Cada color representa a una clase o categoría. El
marrón para setosa, el verde para versicolor y el lila
para virginica
• El color es más intenso cuanto más seguros estamos
que la clasificación es correcta. Los nodos blancos
cerca de la raíz, por tanto, evidencia la falta de certeza
inicial
• Hay dos tipos de nodo:
• Nodos de decisión: tienen una condición al
principio y tienen más nodos debajo de ellos
• Nodos de predicción: no tienen ninguna
condición ni nodos debajo de ellos. Son las
hojas terminales
10. Implementación en Python: cómo funciona el modelo
10
• Hemos mostrado en este caso la siguiente
información de cada nodo:
ü Condición (True/False): si es un nodo donde se
toma alguna decisión
ü Entropy: es una medida de impureza. A
continuación veremos cómo se calcula
ü Samples: número de muestras que satisfacen las
condiciones necesarias para llegar a este nodo
ü Value: cuántas muestras de cada clase llegan a
este nodo
ü Class: qué clase se le asigna a las muestras que
llegan a este nodo
11. Implementación en Python: cómo funciona el modelo
11
• La interpretación del árbol de este árbol de decisión
sería: si el ancho del pétalo es menos de 0.8 cm,
entonces la flor iris pertenece a la variedad setosa. Si
por el contrario, el ancho del pétalo es mayor que 0.8
cm, habría que mirar si el ancho del pétalo es menos
de 1.75 cm. Cuando el ancho del pétalo es menor o
igual a 1.75 centímetros, pertenece a la variedad
versicolor con un 91% de probabilidad. Si no, parece
que sería virginica con un 98% de probabilidad del
98%
12. Implementación en Python: cómo funciona el modelo
12
• También podríamos añadir algo más de complejidad
al modelo. Por ejemplo, ahora con 3 niveles máximos
de profundidad o altura del árbol
13. Implementación en Python: cómo funciona el modelo
13
• La interpretación del árbol de este árbol de decisión ahora
sería algo distinta, sobretodo para distinguir mejor la hoja
versicolor del caso con altura 2
• Si el ancho del pétalo es menos de 0.8 cm, entonces la flor
iris pertenece igualmente a la variedad setosa
• Pero si el ancho del pétalo es mayor que 0.8 cm, habría que
mirar si el ancho del pétalo es menos de 1.75 cm. Cuando el
ancho del pétalo es menor o igual a 1.75 centímetros,
utilizamos la longitud del pétalo. Si esta es menor que 4.95
cm, pertenece a la variedad versicolor con un 98% de
probabilidad
• Si no, parece que sería virginica con un 98% de probabilidad
del 98%
14. Implementación en Python: cómo funciona el modelo
14
• Incluso podríamos utilizar el árbol sin límite
de altura, utilizando así todas las
características de la base de datos de las
flores de iris. Sería el mismo código que los
casos previos, pero sin fijar un límite de
max_depth en el DecisionTreeClassifier
• Según hemos visto en el Tema 3, aumentar
la complejidad del modelo nos llevará a un
sobreajuste (overfitting) de los datos de
entrenamiento, y reducirá la eficacia en
nuevas observaciones
• Para evitar sobreajuste en árboles, se utiliza
la poda o los random forest, según veremos
más adelante en el tema
15. Implementación en Python: cómo funciona el modelo
15
• Si utilizamos sólo 2 características para entrenar el modelo de
árbol de decisión, podemos visualizar en un plano las áreas de
decisión. Observamos así también como algunas
características son más significativas para clasificar (ganancia
de información)
16. Implementación en Python: cómo funciona el modelo
16
• Algunos conceptos importantes der los Árboles de Decisión
ü Nodo Raíz: nodo superior en el árbol, que representa toda la base de datos de elementos a clasificar.
Es el punto de partida del proceso
ü Nodo Interno/de Decisión: nodos que representan una elección respecto una de las características.
Se conectan con otros nodos o hojas terminales. Las divisiones de decisión que genera se basan en
un criterio y en una característica
ü Nodo Hoja o terminal: nodo sin hijos, que representa una etiqueta de clase o categoría
ü Impureza (impurity): la medida de homogeneidad de la varibale objetivo y (etiquetas) en un
subconjunto de datos. Es decir, hace referencia al grado de aletoriedad o incertidumbre en el
subconjunto. Dos métricas habituales para la impureza son la Entropía y el Índice de Gini. Veremos la
formulación matemática en las páginas siguientes
ü Ganancia de Información: es una medida de la reducción de la impureza conseguida al dividir un
subconjunto de datos en un árbol de decisión según una características (en un nodo de decisión). El
criterio de decisión se determina por la característica que genera en ese nodo una maor ganancia de
información. El objetivo es crear subconjuntos puros escogiendo en la decisión la característica más
informativa para la
ü Poda (Prunning): es el proceso de reducir el número de ramas del árbol que no añaden información
adicional o generan sobreajuste (overfitting). En scikit-learn, se realiza mediante el parámetro
minimal_cost_complexity_pruning de DecisionTreeClassifier. El algoritmo de poda compara versiones
podadas de árboles con la árbol original base
17. Formulación Matemática
17
• La base fundamental de los modelos de aprendizaje automático es un problema matemático o estadístico de
optimización
• Vamos a discutir con un poco más de detalle esta formulación matemática subyacente para los árboles de
decisión. Para esto, van a ser importantes los conceptos de la página anterior (impureza, información,
entropía, Gini)
• El algoritmo de clasificación del árbol consiste en:
1. La raíz del árbol contiene todos los elementos del entrenamiento
2. Calcular la impureza de los datos para cada característica. Para calcularla, utilizamos la métrica de
la entropía, o el índice Gini
3. Seleccionamos la característica que resulta con mayor reducción de la impureza (o mayor ganancia
de información) si la utilizamos para dividir los datos en dos subconjuntos
4. Dividimos los datos en estos dos subconjuntos (derecho e izquierdo) a partir de la característica
relevante del paso anterior. Los subconjuntos se forman de manera que sean los más puros
respecto la variable objetivo y (etiquetas)
5. Calculamos la impureza de cada subconjunto resultante del paso previo
6. Para cada subconjunto (nodos hijos nuevos), repetimos iterativamente los pasos. 2–5. Hasta que
se cumple una condición de finalización: máxima altura del árbol, o número mínimo de instancias
en un nodo, o mínimo de impureza
7. Asignamos la etiqueta de la clase mayoritaria a cada nodo hoja resultante en el árbol
18. Formulación Matemática: Entropía
18
• La entropía mide pues el grado de aleatoriedad de la distribución de las etiquetas o clases en el conjunto de datos. Si
tenemos K clases o categorías para el nodo i, este tiene c elementos a dividir, la entropía sería la suma de las K entropías
de cada categoría:
• La entropía es 0 cuando los datos son totalmente homogéneos en la misma clase, no hay incertidumbre
• Cuando el subconjunto de datos se divide en partes iguales en las clases de etiquetas, la entropía es máxima
• La entropía la utilizamos en los árboles para medir la calidad de una división. El objetivo de la entropía es poder
seleccionar la característica o atributo que minimiza la entropía de los subconjuntos resultantes. Esto hace más
homogéneos los subconjuntos en los nodos hijos resultantes
19. Formulación Matemática: maximizar Ganancia Información
19
• El criterio de decisión y división es minimizar la entropía (o maximizar la ganacia de información), o
maximizar la ganancia de información (problema matemático de optimización):
• L=2 en el caso de árboles binomiales, L es el número de subconjuntos o nodos resultantes de la
división/decisión
𝐺𝑎𝑛𝑎𝑛𝑐𝑖𝑎 𝐼𝑛𝑓𝑜𝑟𝑚𝑎𝑐𝑖ó𝑛 = 𝐸𝑛𝑡𝑟𝑜𝑝í𝑎 𝑎𝑛𝑡𝑒𝑠 − 4
!"#
$
𝐸𝑛𝑡𝑟𝑜𝑝í𝑎(𝑗, 𝑑𝑒𝑠𝑝𝑢é𝑠)
Ganancia
información
Alta
Ganancia
información
Baja
20. Formulación Matemática: Gini
20
• Alternativamente, podemos utilizar el criterio del índice de Gini
• Un valor alto significa elevada heterogeneidad en los datos (en términos de etiquetas)
21. Formulación Matemática: Algoritmos
21
• En base a la entropía o al índice de Gini, se han desarrollado diferentes algoritmos matemáticos
para su optimización respectivamente:
- ID3 o Iterative Dichotomiser 3:
- efaidnbmnnnibpcajpcglclefindmkaj/https://hunch.net/~coms-4771/quinlan.pdf
- C4.5: basado en la Ganancia de Información
- CART: Podéis ver un caso práctico de ejemplo de CART para un problema de identificar
créditos dudosos:
https://www.youtube.com/watch?v=qGYeb9ngdvM
22. Formulación Matemática: Árboles de Decisión para Regresión
22
• Los árboles de decisión, además de resolver problemas de clasificación, son igualmente útiles en casos de
Regresión
• La formulación matemática en este caso de regresión, implica también una optimización, que se calcula
mediante un algoritmo greedy de División binaria recursiva
• El siguiente vídeo explica este proceso de manera didáctica, por si queréis aprender más:
https://www.youtube.com/watch?v=gP2X8a3LaTM
23. Tema 4: Ejercicio Cancer Dataset
• Ejercicio: Consideramos la base de datos dataset de scikit-learn de cáncer de pecho (Wisconsin Breast
Cancer dataset). Tiene registros de métricas clínicas de tumores de cáncer. Las etiquetas son “benign”
(benigno sin peligro) o “malignant” (tumor canceroso).
• Nuestro objetivo será construir un modelo para predecir o clasificar (diagnosticar) un nuevo tumor
observado, a partir de sus medidas
• Responder a las cuestiones planteadas en las páginas a continuación
24. Tema 4: Ejercicio Cancer Dataset
• Ejercicio: Consideramos la base de datos dataset de scikit-learn de cáncer de pecho (Wisconsin Breast
Cancer dataset). Tiene registros de métricas clínicas de tumores de cáncer. Las etiquetas son “benign”
(benigno sin peligro) o “malignant” (tumor canceroso).
• Nuestro objetivo será construir un modelo para predecir o clasificar (diagnosticar) un nuevo tumor
observado, a partir de sus medidas
1. Describir la implementación del modelo de aprendizaje automático del código en Python superior
25. Tema 4: Ejercicio Cancer Dataset
• Ejercicio: Consideramos la base de datos dataset de scikit-learn de cáncer de pecho (Wisconsin Breast
Cancer dataset). Tiene registros de métricas clínicas de tumores de cáncer. Las etiquetas son “benign”
(benigno sin peligro) o “malignant” (tumor canceroso).
• Nuestro objetivo será construir un modelo para predecir o clasificar (diagnosticar) un nuevo tumor
observado, a partir de sus medidas
2. Comentar los resultados del algoritmo modificado (observar los parámetros). ¿A qué se puede deber la
diferencia de precisión sobre cada conjunto de datos, entre los modelos actual y el de la págin anterior?
26. Tema 4: Ejercicio Cancer Dataset
• Podemos graficar el árbol con valores resultantes del algoritmo de clasificación:
3. Observando los resultados gráficamente del código en la parte superior. ¿Cuál parece ser la característica
de los tumores más significativa para el diagnóstico? Justificar la respuesta
27. Tema 4: Ejercicio Cancer Dataset
• La siguiente función nos muestra gráficamente la importancia de cada característica
4. Comentar estos resultados junto a la información obbtenida en los nodos de decisión en el gráfico del
árbol
28. Sede Universitat Carlemany
Av. Verge de Canòlich, 47
AD600 Sant Julià de Lòria
Principat d’Andorra
Linkedin Facebook
+376 878 300