Práctica guiada — Semana 11: Árboles de Clasificación
Introducción al Business Analytics · 06278-ECO
1 Contexto de negocio
Una entidad financiera quiere automatizar la evaluación de solicitudes de crédito. Tienen un historial de 300 solicitudes con características del solicitante y saben si cada una fue “Aprobada” o “Rechazada” por el comité de crédito. Quieren un modelo que, dadas las características de una solicitud nueva, prediga automáticamente la decisión correcta.
Nuestro trabajo: Entrenar un árbol de clasificación, obtener sus predicciones en el conjunto de prueba, y construir la matriz de confusión para evaluar qué tan bien predice el modelo.
Tu entregable al final de la clase: La matriz de confusión completa con los valores de TP, FP, TN, FN, las tres métricas calculadas (accuracy, precisión, recall), la comparación con el baseline, y una interpretación escrita de máximo 3 líneas.
2 Paso 1 — Preparar el entorno
3 Paso 2 — Cargar los datos
Trabajamos con el dataset credito_icesi, que contiene solicitudes de crédito de una entidad financiera colombiana.
Variables del dataset:
ingreso_m— Ingreso mensual en millones de pesoshistorial— Historial crediticio (1 = positivo, 0 = negativo)deuda_actual— Deuda vigente en millones de pesosantiguedad_lab— Años de antigüedad laboraledad— Edad del solicitante en añosdecision— Variable de resultado:"Aprobado"si el crédito fue aprobado,"Rechazado"si fue rechazado
4 Paso 3 — Explorar la variable de resultado
Antes de entrenar, siempre revisamos cuántos casos hay de cada categoría. Esto nos permite calcular el baseline al final.
¿Qué es el baseline?
El baseline es el resultado que obtendríamos con el modelo más simple posible: predecir siempre la categoría más frecuente. Si el 58% de las solicitudes son “Aprobado”, un modelo que siempre predice “Aprobado” tendría 58% de accuracy sin aprender nada.
Nuestro árbol debe superar ese porcentaje. Si no lo hace, no está aprendiendo nada útil. Anota este porcentaje — lo necesitarás en el entregable final.
5 Paso 4 — Dividir en entrenamiento y prueba
El árbol aprende con los datos de entrenamiento. Evaluamos con los datos de prueba — solicitudes que el modelo nunca vio durante el entrenamiento.
¿Por qué dividir los datos?
El árbol memoriza patrones del conjunto de entrenamiento. Si medimos el error en esos mismos datos, el modelo parece perfecto. El conjunto de prueba simula solicitudes futuras y mide la capacidad real de predecir. Esto es el train/test split que vimos en la Semana 9.
6 Paso 5 — Entrenar el árbol de clasificación
¿Cómo leer el output de texto del árbol?
Cada línea es un nodo. Se lee de arriba hacia abajo:
- El primer nodo (sin sangría) es el nodo raíz: la primera pregunta que hace el modelo. Recuerda el diagrama de la teoría — en el ejemplo de los 8 solicitantes era
¿Ingreso ≥ 3.5M?. Aquí el árbol eligió otra variable de corte basándose en los 225 datos de entrenamiento. - El símbolo
*al final de una línea indica que es una hoja: allí termina esa rama y el árbol da una predicción. - La columna
yvalmuestra la predicción de ese nodo (Aprobado o Rechazado). - Los números entre paréntesis muestran cuántas observaciones de entrenamiento cayeron en ese nodo y cómo se distribuyen entre las categorías.
Identifica: ¿Cuál es la primera variable que usa el árbol para dividir? ¿Coincide con la intuición del analista de crédito de la teoría?
7 Paso 6 — Visualizar el árbol
¿Qué muestra el gráfico?
- Cada nodo interno muestra la pregunta que divide: la variable y el umbral de corte.
- Cada hoja (nodo terminal) muestra la predicción: “Aprobado” o “Rechazado”.
use.n = TRUEagrega el conteo de observaciones de entrenamiento que cayeron en cada nodo.
Compara este gráfico con los diagramas SVG de la teoría (profundidad 1 y profundidad 2). ¿El árbol que entrenaste aquí tiene más o menos niveles que el ejemplo de la teoría? ¿Cuántas hojas tiene?
8 Paso 7 — Predecir en el conjunto de prueba
El árbol ya aprendió. Ahora predice sobre las solicitudes que nunca vio durante el entrenamiento.
¿Ves filas donde real y prediccion difieren? Esos son los errores del modelo. Algunos son FP (predijo Aprobado, era Rechazado) y otros son FN (predijo Rechazado, era Aprobado). La matriz de confusión del siguiente paso los cuenta todos.
9 Paso 8 — Construir la matriz de confusión
Este es el paso central de la clase. Usamos table() para cruzar los valores reales con las predicciones.
Cómo leer esta tabla:
La estructura es filas = valor real y columnas = predicción del modelo — igual que los diagramas de la teoría.
| Posición | Nombre | Significado |
|---|---|---|
| Fila “Aprobado”, Col “Aprobado” | TP | Predijo Aprobado y era Aprobado — acierto |
| Fila “Aprobado”, Col “Rechazado” | FN | Predijo Rechazado pero era Aprobado — se perdió un buen cliente |
| Fila “Rechazado”, Col “Aprobado” | FP | Predijo Aprobado pero era Rechazado — riesgo de impago |
| Fila “Rechazado”, Col “Rechazado” | TN | Predijo Rechazado y era Rechazado — acierto |
Tu tarea: Extrae los cuatro números de la tabla y anótalos. Los usarás en el paso siguiente y en el entregable.
10 Paso 9 — Extraer TP, FP, TN, FN
¿Por qué tabla["Aprobado", "Aprobado"] y no tabla[1,1]?
Usar los nombres de las categorías es más seguro: si R ordena las filas o columnas alfabéticamente de forma distinta a lo que esperamos, tabla[1,1] puede no ser el TP. Los nombres siempre apuntan a la celda correcta.
11 Paso 10 — Calcular las métricas
¿Cómo interpretar los tres números juntos?
- Accuracy: de todas las solicitudes del test, ¿en qué fracción acertó el modelo? Si es 82%, acierta 8 de cada 10.
- Precisión: de las que predijo “Aprobado”, ¿cuántas realmente lo eran? Una precisión alta protege a la entidad de aprobar malos créditos.
- Recall: de las que realmente eran “Aprobado”, ¿cuántas detectó? Un recall alto minimiza los buenos clientes rechazados.
Ahora piensa: ¿cuál error es más costoso para esta entidad financiera — el FP o el FN?
12 Paso 11 — Comparar con el baseline
Antes de concluir que el modelo es bueno, lo comparamos con el modelo más simple posible: predecir siempre la categoría más frecuente del conjunto de prueba.
¿El árbol mejora el baseline?
Compara la accuracy del árbol (Paso 10) con la del baseline (el max() que acabas de calcular). Si el árbol no supera ese número, no aprendió nada útil: cualquier persona que siempre diga “Aprobado” lo haría igual de bien.
Si sí lo supera: ¿cuántos puntos porcentuales ganamos? ¿Vale la complejidad del modelo?
13 Tu entregable: la matriz completa
Actividad en clase — Entrega individual
Con los resultados de los pasos anteriores, completa esta tabla a mano o en el espacio indicado por el profesor.
Matriz de confusión (conjunto de prueba):
| Predicción: Aprobado | Predicción: Rechazado | |
|---|---|---|
| Real: Aprobado | TP = _____ | FN = _____ |
| Real: Rechazado | FP = _____ | TN = _____ |
Métricas calculadas:
| Métrica | Fórmula | Resultado |
|---|---|---|
| Accuracy | (TP + TN) / (TP + FN + FP + TN) | ______% |
| Precisión | TP / (TP + FP) | ______% |
| Recall | TP / (TP + FN) | ______% |
Baseline:
- Categoría más frecuente en el test: __________________
- Proporción: ______%
- ¿El árbol supera el baseline? ☐ Sí ☐ No
- Diferencia de accuracy: ______ puntos porcentuales
Interpretación (máximo 3 líneas):
Responde: ¿Qué error comete más el modelo — FP o FN? ¿Qué significa ese error en términos del negocio de la entidad financiera? ¿Recomendarías usar este modelo tal como está?
13.1 Checklist
Al finalizar esta práctica, debes poder:
13.2 Preguntas de comprensión
1. En el Paso 5 entrenaste con maxdepth = 3. Si cambias a maxdepth = 1, ¿esperas que la accuracy en test suba o baje? ¿Y si usas maxdepth = 8? ¿Qué concepto de la teoría explica ambos casos?
Ver respuesta
Conmaxdepth = 1 el árbol hace una sola pregunta — igual que el ejemplo de profundidad 1 de la teoría. Es muy simple: probablemente baja la accuracy en test (subajuste). Con maxdepth = 8 el árbol tiene muchos niveles y puede memorizar los 225 datos de entrenamiento: accuracy alta en train, pero puede bajar en test (sobreajuste). El mejor punto suele estar en un valor intermedio donde el árbol generaliza sin memorizar.
2. Tu tabla de confusión muestra FP = 8 y FN = 3. Una compañera dice: “Prefiero el modelo con FP = 3 y FN = 8 porque aprueba menos créditos malos.” ¿Tienes razón de preocuparte? ¿Qué depende?
Ver respuesta
Depende del costo relativo de cada error para la entidad. FP = aprobar a alguien que no pagará → pérdida por impago (costo financiero directo). FN = rechazar a un buen cliente → pérdida de ingresos futuros (costo de oportunidad). Si el costo del impago es mayor que el del cliente perdido, el modelo con FP=3 es preferible aunque tenga más FN. Si rechazar buenos clientes tiene un costo alto (por ejemplo en un mercado competitivo), puede ser mejor tolerar más FP. No hay respuesta universal — es una decisión de negocio.3. El árbol da 84% de accuracy en test. El baseline es 56%. Un colega dice: “Ganamos 28 puntos porcentuales, el modelo es excelente.” ¿Estás de acuerdo con esa sola afirmación? ¿Qué más revisarías?