👨🏫 Profesor: Sergio Gevatschnaider
⏱️ Duración: 120 minutos
🎯 Nivel: Intermedio‑Avanzado
Imagina que acompañas a un médico recién llegado a una guardia. Frente a cada paciente, él hace una serie de preguntas estratégicas:
Según las respuestas, descarta o confirma diagnósticos hasta llegar a una conclusión. Esa secuencia de preguntas binarias —y la lógica que las organiza— es exactamente lo que un árbol de decisión formaliza: un camino jerárquico donde cada bifurcación responde a la pregunta que mejor distingue lo que nos interesa predecir.
Un árbol de decisión se compone de tres elementos esenciales que forman su estructura jerárquica de razonamiento:
Función: Punto de partida del árbol
Característica: Pregunta más discriminante
Función: Ramificaciones que refinan la clasificación
Característica: Pruebas sucesivas
Función: Predicción final
Característica: Etiqueta o valor
Para cada posible división, el algoritmo mide impureza o error. Luego elige la pregunta que más purifica los grupos resultantes.
Fórmula: H(S) = −Σ pi log₂ pi
Fórmula: Gini(S) = 1 − Σ pi²
Para regresión: minimizar varianza dentro de cada rama.
Basados en entropía e información mutua. Ideal para datos categóricos.
Utiliza Gini (clasificación) o SSE (regresión). Soporta características numéricas y poda cost‑complexity.
decision_tree.pyfrom sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn import datasets # Cargar ejemplo de flores Iris X, y = datasets.load_iris(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = DecisionTreeClassifier(criterion="gini", max_depth=4, random_state=42) clf.fit(X_train, y_train) print(f"Accuracy: {clf.score(X_test, y_test):.3f}")
Promedia cientos de árboles entrenados en subsets aleatorios → menor varianza.
Cada árbol corrige los errores del anterior → menor sesgo.
Implementaciones optimizadas para grandes datasets y GPU.