Aplicación Práctica: Árboles de Decisión (Aprendizaje Supervisado)

 


Árboles de Decisión (Aprendizaje Supervisado)

Introducción.

Los árboles de decisión son una poderosa herramienta en el campo del aprendizaje supervisado, una rama de la inteligencia artificial que se enfoca en enseñar a los modelos a realizar tareas específicas a partir de ejemplos previamente etiquetados. Estos árboles son representaciones gráficas de decisiones basadas en reglas que permiten tomar elecciones informadas en la clasificación o regresión de datos. Inspirados en la forma en que los seres humanos toman decisiones, los árboles de decisión se construyen dividiendo de manera recursiva conjuntos de datos en función de las características más relevantes, lo que facilita la comprensión y la interpretación del proceso de toma de decisiones del modelo. Este enfoque intuitivo y visual no solo es efectivo para resolver problemas complejos, sino que también ofrece transparencia y comprensión en la toma de decisiones automatizada, convirtiéndolos en una herramienta valiosa en diversas aplicaciones, desde la medicina hasta las finanzas y más allá.

Fundamentos de los árboles de decisión.

Los árboles de decisión se basan en principios fundamentales que los hacen efectivos en el aprendizaje supervisado. Aquí están algunos de los conceptos clave:

División de datos: En el corazón de un árbol de decisión está el proceso de dividir los datos en conjuntos más pequeños y homogéneos. Esta división se realiza utilizando características específicas del conjunto de datos, con el objetivo de separar las instancias de manera que facilite la toma de decisiones.

Entropía y Ganancia de Información: La entropía mide la impureza o incertidumbre en un conjunto de datos. El objetivo del árbol de decisión es reducir la entropía al máximo posible. La ganancia de información se refiere a la reducción de entropía que se logra al dividir un conjunto de datos en función de una característica particular.

 

Nodos y Ramas: Los árboles de decisión constan de nodos y ramas. Cada nodo representa una característica o una condición de división, y las ramas representan las posibles salidas de esa condición. Los nodos internos representan decisiones, mientras que los nodos hoja representan las etiquetas o valores de salida.

Profundidad del Árbol: La profundidad del árbol se refiere al número de divisiones realizadas. Un árbol más profundo puede capturar patrones más complejos en los datos de entrenamiento, pero también corre el riesgo de sobreajuste (overfitting) si no se controla adecuadamente.

Poda (Pruning): Para evitar el sobreajuste, se utiliza la poda, un proceso que implica eliminar nodos y ramas del árbol que no contribuyen significativamente a la mejora del rendimiento en datos no vistos. Esto ayuda a generalizar mejor el modelo.

Selección de Características: La elección de qué características utilizar en cada división es crucial. Diferentes criterios, como la ganancia de información o el índice Gini, se utilizan para evaluar la importancia de las características y decidir cuál usar en cada nodo.

Modelo Interpretativo: Una de las ventajas clave de los árboles de decisión es su capacidad para ofrecer una interpretación clara y visual. Es fácil entender cómo se toma una decisión al seguir las ramas del árbol, lo que hace que estos modelos sean útiles en entornos donde la explicabilidad es esencial.

Estos fundamentos combinados permiten que los árboles de decisión se adapten eficazmente a una variedad de conjuntos de datos y problemas en el aprendizaje supervisado. Su versatilidad y facilidad de interpretación los convierten en una herramienta valiosa en el arsenal de algoritmos de aprendizaje automático.

Selección de Características: La elección de qué características utilizar en cada división es crucial. Diferentes criterios, como la ganancia de información o el índice Gini, se utilizan para evaluar la importancia de las características y decidir cuál usar en cada nodo.

Modelo Interpretativo: Una de las ventajas clave de los árboles de decisión es su capacidad para ofrecer una interpretación clara y visual. Es fácil entender cómo se toma una decisión al seguir las ramas del árbol, lo que hace que estos modelos sean útiles en entornos donde la explicabilidad es esencial. 

Estos fundamentos combinados permiten que los árboles de decisión se adapten eficazmente a una variedad de conjuntos de datos y problemas en el aprendizaje supervisado. Su versatilidad y facilidad de interpretación los convierten en una herramienta valiosa en el arsenal de algoritmos de aprendizaje automático.

EJEMPLO

Para ilustrar la creación de un árbol de decisión, consideremos un escenario en el que deseamos clasificar clientes en una empresa de telecomunicaciones como "Clientes Potenciales", "Clientes Leales" o "Clientes en Riesgo de Abandono". Utilizaremos características como la duración de la relación con la empresa, el gasto mensual y el soporte técnico recibido.

Supongamos que tenemos el siguiente conjunto de datos de entrenamiento:

| Duración (años) | Gasto Mensual ($) | Soporte Técnico | Clasificación          |
|------------------|--------------------|-----------------|-------------------------|
| 3                | 1000               | Bajo            | Clientes Potenciales   |
| 1                | 500                | Alto            | Clientes en Riesgo     |
| 2                | 800                | Medio           | Clientes Potenciales   |
| 5                | 1500               | Bajo            | Clientes Leales        |
| 4                | 1200               | Alto            | Clientes Leales        |
| 6                | 2000               | Medio           | Clientes en Riesgo     |


Ahora, sigamos los pasos básicos para construir un árbol de decisión:

Paso 1: Calcular la Entropía Inicial

Calculamos la entropía inicial para todo el conjunto de datos. Supongamos que tenemos tres clases: Potenciales, Leales y en Riesgo.

Paso 2: Seleccionar la Mejor Característica

Seleccionamos la característica que proporciona la mayor ganancia de información. Por ejemplo, podríamos comenzar evaluando la duración de la relación.

Paso 3: Dividir el Conjunto de Datos

Dividimos el conjunto de datos en función de la duración de la relación. Creamos ramas para cada posible valor de duración.

Paso 4: Repetir el Proceso

Repetimos los pasos 2 y 3 para cada nodo interno del árbol, seleccionando la mejor característica para cada subconjunto de datos resultante.

Paso 5: Asignar Etiquetas a las Hojas

Continuamos dividiendo y seleccionando características hasta que alcanzamos nodos hoja. Asignamos la etiqueta más común en cada nodo hoja como la clasificación final.

El árbol resultante podría tener una estructura similar a la siguiente:


# Importa las bibliotecas necesarias

from sklearn import tree

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score

import numpy as np

# Genera un conjunto de datos de ejemplo

edad = np.array([25, 35, 45, 20, 30, 40, 50, 60])

ingresos_anuales = np.array([50000, 60000, 80000, 30000, 40000, 70000, 90000, 120000])

comprar = np.array([0, 0, 1, 0, 1, 1, 1, 1])  # 0: No comprar, 1: Comprar

# Combina las características en una matriz

datos = np.column_stack((edad, ingresos_anuales))

# Divide el conjunto de datos en conjuntos de

entrenamiento y prueba

datos_entrenamiento, datos_prueba, comprar_entrenamiento, comprar_prueba = train_test_split(

datos, comprar, test_size=0.25, random_state=42)

# Crea el modelo de árbol de decisión

modelo_arbol = tree.DecisionTreeClassifier()

# Entrena el modelo con el conjunto de entrenamiento

modelo_arbol.fit(datos_entrenamiento, comprar_entrenamiento)

# Realiza predicciones en el conjunto de prueba

predicciones = modelo_arbol.predict(datos_prueba)

# Evalúa la precisión del modelo

precision = accuracy_score(comprar_prueba, predicciones)

print(f"Precisión del modelo: {precision * 100:.2f}%")

# Visualiza el árbol de decisión

fig, ax = plt.subplots(figsize=(10, 6))

tree.plot_tree(modelo_arbol, feature_names=["Edad", "Ingresos anuales"], class_names=["No comprar", "Comprar"], filled=True, rounded=True, ax=ax)

plt.show()


Resultado con google colaboratory


En conclusión en este caso, la edad e ingresos anuales se utilizan para tomar decisiones sobre si un cliente compra o no. 

Durante la construcción del árbol, se utiliza criterios de impureza (como Gini o entropía) para determinar la mejor manera de dividir los datos en cada nodo. El objetivo es maximizar la homogeneidad de las clases en las hojas resultantes.

Las hojas del árbol representan las categorías finales (En este caso, "Comprar" o "No comprar"). Cuando una nueva instancia llega al árbol, sigue el camino desde la raíz hasta una hoja, y la clase en esa hoja se asigna como la predicción del modelo










Comentarios

Entradas populares de este blog

Aplicación Práctica: Naive Bayes (Aprendizaje Supervisado)

Aplicación Práctica: K-Means (Aprendizaje No Supervisado)