Unidad 5 - Taller 11: ¿quién se nos va?

Taller práctico evaluable · Semana 11 · 06278-ECO

Autor/a

PhD. Eduard F. Martínez-González

1 Instrucciones generales

Cómo funciona este taller

  • Es individual y evaluable, y se desarrolla en el tiempo restante de la clase (⏱️ diseñado para ≈ 55 minutos).
  • Se resuelve sin la guía del profesor: todo lo que necesitas está en este documento, en la práctica y en la teoría. El flujo es el mismo torneo de la práctica — con otra empresa, otra pregunta y una trampa que deberás nombrar.
  • El entregable es tu script: apellido_nombre_taller11.R. Los análisis van como comentarios (##) en la sección que corresponda.
  • ⚠️ Regla de oro doble: (1) el script corre completo con Source, sin errores (un script roto pierde el punto de la sección donde se rompe); (2) toda cifra citada sale de código presente en el script.
  • 🌱 Semillas: usa set.seed(11) en la línea inmediatamente anterior a cada paso aleatorio (partición, árbol sin frenos, bosque), como en la práctica. Así tus cifras son reproducibles al calificar.
  • 📤 Entrega: sube el .R a Intu antes de terminar la clase.

El dato (guárdalo en data/ de tu proyecto): clientes_conectatel.csv — 350 clientes de ConectaTel con cinco características y la etiqueta fuga (Si / No).

Distribuye tu tiempo: Punto 0 ≈ 5 min · Punto 1 ≈ 8 min · Punto 2 ≈ 15 min · Punto 3 ≈ 15 min · Punto 4 ≈ 12 min.

2 El encargo de la VP de clientes

🌐 ConectaTel es un proveedor regional de internet. El año pasado perdió a cerca del 30% de sus clientes y su VP de clientes te contrata con este briefing: “Recuperar a un cliente perdido nos cuesta alrededor de 18 meses de su factura en marketing. En cambio, una llamada de retención — con descuento incluido — cuesta casi nada. Necesito que el modelo me diga a quién llamar antes de que se vaya. Prefiero mil veces llamar a alguien que no pensaba irse, que enterarme tarde de uno que sí.”

Dos cosas de ese párrafo son instrucciones técnicas disfrazadas — tenlas presentes en cada punto: cuál es la clase positiva que importa (los que se van: fuga = "Si") y cuál error es barato y cuál caro para esta empresa.

3 Punto 0 — Proyecto y radiografía (0.5 puntos)

Crea apellido_nombre_taller11.R con encabezado, carga la base por ruta relativa, convierte fuga a factor y haz la radiografía.

## ============================================
## Taller 11 — ConectaTel: ¿quién se nos va?
## Nombre: ______________  Código: ___________
## Fecha: ______________
## Qué hace: entrena y compara clasificadores de
## fuga de clientes y recomienda a quién llamar
## ============================================

## Librerías / Libraries
pacman::p_load(dplyr, rpart, rpart.plot, randomForest)

## Cargar datos / Load data

## fuga como factor / target as factor

## Radiografía: dim, str, table del target
## Punto 0c — responde como comentario:
## ¿Cuál es la clase MINORITARIA y qué porcentaje de la base representa?
## ¿Por qué esa clase, y no la mayoritaria, es la que le importa a la VP?

4 Punto 1 — La partición y la vara tramposa (1.0 punto)

  1. Parte 80/20 con set.seed(11) y verifica la distribución de fuga en train y test.
  2. Calcula la accuracy del baseline (predecir siempre la clase mayoritaria).
  3. La pregunta que descubre la trampa — respóndela como comentario con una cifra calculada: de los clientes del test que sí se fugan, ¿cuántos detecta el baseline? ¿Qué opinaría la VP de un “modelo” con esa accuracy tan decente?
## Punto 1a — partición y verificación

## Punto 1b — baseline

## Punto 1c — comentario (la cifra clave aquí no es la accuracy…)

5 Punto 2 — El memorizador, la poda y la lectura (1.25 puntos)

  1. Entrena el árbol sin frenos (cp = 0.0001, minsplit = 2, minbucket = 1, con su set.seed(11) en la línea anterior). Reporta con código: número de hojas, accuracy en train y accuracy en test. Comenta la brecha en una frase — aquí sí vas a ver al memorizador pagar caro.
  2. Poda con la regla 1-SE de la práctica (tabla cptable: tope = mínimo de xerror + su xstd; el primer árbol que quepa bajo el tope). Reporta el cp elegido y las hojas del árbol podado, y grafícalo con rpart.plot().
  3. Evalúa el árbol podado en test con positivo = “Si”: matriz de confusión, accuracy, precisión y recall (guarda tp, fn, fp, tn como en la práctica).
  4. El comentario que vale oro: la accuracy del árbol podado quedó prácticamente igual a la del baseline. ¿Significa que el árbol es inútil? Argumenta con la métrica correcta y sus cifras.
## Punto 2a — el memorizador (hojas, train, test) + comentario brecha

## Punto 2b — poda 1-SE (cp elegido, hojas) + rpart.plot

## Punto 2c — matriz y métricas del podado (positivo = "Si")

## Punto 2d — comentario: ¿inútil o no? ¿con cuál métrica se defiende?

6 Punto 3 — El bosque y la lista de llamadas (1.25 puntos)

  1. Entrena un Random Forest de 500 árboles (su set.seed(11) antes). Evalúa en test: matriz, accuracy, precisión y recall de "Si". ¿Le gana al árbol podado? ¿En qué métrica mejora más?
  2. Imprime la importancia de variables. ¿Cuáles son las dos que mandan y cuál resultó casi decorativa?
  3. El umbral de retención. La VP dijo que sobre-alertar es barato: calcula las probabilidades de fuga (type = "prob"), aplica un umbral de 0.3 y reporta la nueva matriz, el recall y la precisión de "Si".
  4. Comentario (3-4 líneas): comparando el bosque a umbral estándar contra el de umbral 0.3 — ¿cuántos fugados más captura la lista de llamadas y cuántas falsas alarmas extra cuesta? Con los costos del briefing, ¿recomiendas el umbral 0.3?
## Punto 3a — random forest + métricas

## Punto 3b — importancia de variables + lectura

## Punto 3c — umbral 0.3: matriz, recall, precisión

## Punto 3d — comentario: ¿vale la pena la lista larga?

7 Punto 4 — El memorando a la VP (1.0 punto)

Cierra el script con el memorando, como comentario y en lenguaje de negocio:

## ============================================
## MEMORANDO PARA LA VP DE CLIENTES
## ============================================
## a) El perfil del cliente que se va (3-4 líneas): descríbelo usando
##    lo que dicen el árbol podado y la importancia del bosque —
##    ¿quién es, qué hace antes de irse? Nada de "nodos": háblale de
##    clientes.
##
## b) La recomendación (3-4 líneas): qué modelo despliegas, con qué
##    umbral, y qué resultados esperar — cita al menos TRES cifras
##    tuyas (p. ej. de cada N llamadas, cuántas fugas reales; qué %
##    de las fugas captura; qué costo tiene la lista larga).
##
## c) Un riesgo honesto (2 líneas): ¿qué puede hacer que este modelo
##    falle el próximo año, o qué limitación tienen estas métricas?
##    (pista: ¿cuántos fugados hay en tu test?)

8 Rúbrica de evaluación

La presentación (script ordenado, comentarios en su sección, que corra con Source) se descuenta hasta -0.3 si dificulta la revisión.
Punto Qué se evalúa Puntos
0. Proyecto y radiografía Script con encabezado; carga por ruta relativa; fuga como factor; radiografía y respuesta 0c 0.5
1. Partición y vara Partición con semilla y verificación (a: 0.3); baseline con código (b: 0.3); la trampa nombrada con cifra: el baseline no detecta ni un fugado (c: 0.4) 1.0
2. Memorizador y poda Sin frenos + brecha train/test comentada (a: 0.35); poda 1-SE con código y gráfico (b: 0.35); métricas con positivo = “Si” (c: 0.3); el argumento accuracy vs. recall (d: 0.25) 1.25
3. Bosque y umbral RF + métricas y comparación (a: 0.4); importancia leída (b: 0.25); umbral 0.3 con código (c: 0.3); juicio costo-beneficio (d: 0.3) 1.25
4. Memorando Perfil del fugado en lenguaje de negocio; recomendación con ≥3 cifras propias; riesgo honesto 1.0
Total 5.0
Advertencia

Recordatorios que la rúbrica aplica sin piedad

  1. Script que no corre completo → se pierde el punto de la sección donde se rompe.
  2. Cifra citada sin código que la produzca → no cuenta.
  3. Métricas de los Puntos 2 y 3 calculadas con la clase positiva equivocada ("No") → el punto c correspondiente se pierde: leer qué clase importa era parte del encargo.
  4. Los comentarios de análisis (1c, 2d, 3d y el memorando) los redactas tú.

9 Declaración de uso de IA

Cierra tu script con este bloque diligenciado:

## ============================================
## DECLARACIÓN DE USO DE IA
## Herramienta y modelo usados: _______________ (o "No usé IA")
## Para qué la usé: ____________________________________________
## Qué verifiqué por mi cuenta: ________________________________
## ============================================

Nota: la IA puede ayudarte con sintaxis (política del curso desde la semana 2, con agentes desde la 8). Pero el juicio — cuál métrica manda aquí, si el umbral 0.3 conviene, qué perfil tiene el cliente que se fuga — es exactamente lo que este taller evalúa que sepas hacer tú.