Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos de clasificación, Unidad 5 — Modelos basados en árboles, 5.1 — Árboles de decisión ·

Criterios de impureza

Criterios de impureza

Introducción

En la clasificación basada en árboles, los criterios de impureza son fundamentales para decidir cómo dividir los datos. Estos criterios nos permiten medir cuán homogéneos o "impuros" son los subconjuntos de datos después de una división. Un subconjunto es considerado puro si contiene solo ejemplos pertenecientes a la misma clase. Los criterios de impureza nos ayudan a determinar en qué punto debemos detener el proceso de partición y construir nuestros árboles de decisión.

Explicación principal con ejemplos

Criterios de impureza comunes

Los principales criterios de impureza utilizados en los árboles de decisión son:

  1. Criterio de Gini (Gini Impurity): Este criterio mide la probabilidad del error en una clasificación aleatoria. Si un dato es seleccionado al azar, cuántas veces se espera que tenga el valor más común.

\[ G = 1 - \sum_{i=1}^{n} p_i^2 \]

Donde \( p_i \) es la probabilidad de que el elemento pertenezca a clase i. Un subconjunto con un nivel de impureza bajo (cercano a 0) significa que es pura.

  1. Entropía (Shannon Entropy): Esta medida se basa en la teoría de la información y mide la incertidumbre o dispersión en los datos.

\[ H = -\sum_{i=1}^{n} p_i \log_2(p_i) \]

Donde \( p_i \) es la probabilidad de que el elemento pertenezca a clase i. Un subconjunto con un nivel de entropía bajo (cercano a 0) también significa que es pura.

  1. Criterio de Varianza: Este criterio se utiliza principalmente para problemas de regresión y mide la varianza en los valores numéricos del atributo.

\[ V = \frac{1}{n} \sum_{i=1}^{n} (x_i - \bar{x})^2 \]

Donde \( x_i \) son los valores de datos y \( \bar{x} \) es la media. Un subconjunto con varianza baja indica que los valores están agrupados cerca de su media.

Ejemplo práctico

Supongamos que estamos trabajando en un problema de clasificación binaria con dos clases: A (positivo) y B (negativo).

# Ejemplo de datos
from sklearn.datasets import make_classification
import pandas as pd

X, y = make_classification(n_samples=100, n_features=20, n_classes=2)
df = pd.DataFrame(X, columns=[f'feat_{i}' for i in range(20)])
df['target'] = y

# Calcular la entropía para el conjunto de datos
def calculate_entropy(data):
    class_counts = data['target'].value_counts()
    entropy = -sum((count / len(data)) * np.log2(count / len(data) + 1e-10) for count in class_counts)
    return entropy

print(f"Entropía total: {calculate_entropy(df)}")

Errores típicos / trampas

1. Confundir impureza con pureza

Un subconjunto puro no significa necesariamente que es óptimo para la división. Un subconjunto demasiado pequeño o poco variado puede resultar en una división inútil.

2. Ignorar el balanceo de clases

La entropía y Gini impurity pueden ser afectadas por desequilibrios de clases. Las decisiones basadas en estas métricas pueden favorecer la clase mayoritaria.

# Ejemplo de desbalance de clases
df_uneven = df.copy()
df_uneven['target'] = (df_uneven['target'] + np.random.randint(0, 2, size=len(df))).mod(2)

print(f"Entropía con desbalance: {calculate_entropy(df_uneven)}")

3. No considerar la varianza en datos numéricos

Si el atributo numérico tiene una alta varianza, un criterio de impureza basado en varianza puede ser insensible a cambios significativos.

Checklist accionable

  1. Revisar el balanceo de clases: Verifica si tu conjunto de datos está desequilibrado y considera técnicas como reponderación o oversampling.
  2. Seleccionar adecuadamente los criterios de impureza: Analiza la naturaleza del problema y el tipo de dato para elegir el criterio más apropiado.
  3. Considerar la pureza relativa: No solo busques subconjuntos puros, sino también aquellos que representan una mejora significativa en la homogeneidad.
  4. Evaluación cruzada: Utiliza técnicas de validación cruzada para evaluar el rendimiento del modelo en diferentes particiones del conjunto de datos.
  5. Monitorear la varianza: Si estás trabajando con variables numéricas, asegúrate de considerar su varianza al seleccionar los criterios de impureza.

Siguientes pasos

  1. Practica en problemas reales: Aplica los conceptos aprendidos a proyectos con datos reales.
  2. Leer documentación oficial: Consulta la documentación de bibliotecas como Scikit-learn para entender cómo implementan estos criterios.
  3. Participar en competencias: Utiliza plataformas como Kaggle para aplicar tus conocimientos en problemas de clasificación.

Siguiendo estas pautas, podrás mejorar significativamente la calidad y el rendimiento de los árboles de decisión que construyas en tu camino hacia la excelencia en el machine learning.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).