Sesión 1.2: Fundamentos de Machine Learning
Primera parte
Segunda parte
Fuente: Medium
Recolección de datos
Preprocesamiento
Ejemplo: datos de países
Datos crudos:
país | pib | edu | internet
Uruguay | 17,020 | 4.9 | 87.7
Bolivia | NA | 6.5 | 48.2
Chile | 15,346 | 5.4 | NA
Después de preprocesar:
país | pib | edu | internet
Uruguay | 17,020 | 4.9 | 87.7
Bolivia | 10,500 | 6.5 | 48.2 ← imputado
Chile | 15,346 | 5.4 | 72.3 ← imputado
El preprocesamiento es la mayor parte del trabajo en un proyecto real de ML.
Problemas comunes en datos reales:
Ejemplo de data leakage:
Quieren predecir si un paciente será hospitalizado.
Variable: "días_en_hospital"
Si incluyen esta variable,
el modelo "aprende" que
días_en_hospital > 0 → hospitalizado
¡Pero esta información no existe
al momento de la predicción!
El data leakage es uno de los errores más difíciles de detectar y puede inflar artificialmente las métricas.
Ejemplo: predicción de abandono
Variables originales:
fecha_registro, ultima_compra,
monto_total, cantidad_compras
Variables derivadas:
dias_desde_registro
dias_sin_comprar ← predictor fuerte
promedio_por_compra
frecuencia_compras
tendencia_reciente ← ¿aumenta o baja?
Un buen feature engineering puede valer más que un modelo complejo.
Estratificación
initial_split(datos, strata = variable_respuesta)Validación temporal (time series split)
Leave-One-Out (LOO)
Validación temporal
Datos: ene feb mar abr may jun jul ago
Fold 1:
Train: ene feb mar
Test: abr
Fold 2:
Train: ene feb mar abr
Test: may
Fold 3:
Train: ene feb mar abr may
Test: jun
... y así sucesivamente
La validación temporal es necesaria para datos con dependencia temporal.
Con más datos, el rendimiento mejora, pero con rendimientos decrecientes.
A veces más datos ayudan más que un modelo más complejo.
Fuente: X.com
Subajuste
Buen ajuste
Sobreajuste
Tipos principales:
Lo veremos en detalle en el Día 2 cuando trabajemos con regresión.
Intuición de la regularización
Sin regularización:
Modelo: y = 15.3x₁ - 42.7x₂ + 89.1x₃
Coeficientes grandes = modelo sensible
a pequeños cambios en los datos
Con regularización:
Modelo: y = 2.1x₁ - 1.8x₂ + 0.5x₃
Coeficientes pequeños = modelo más
estable y generalizable
La regularización es como pedirle al modelo que sea “parsimonioso”.
Señales de alarma:
Estrategias para combatirlo:
Escenario: están construyendo un modelo para predecir si los pacientes tienen una enfermedad rara que afecta a 1 de cada 1.000 personas.
Un colega les muestra un modelo y les dice con orgullo: “Logra un 99,9% de accuracy (exactitud)”
Pregunta: ¿es bueno este modelo?
Piénsenlo 30 segundos…
La verdad incómoda: ese modelo “99,9% preciso” no detecta ni un solo caso real. Simplemente predice “sano” para todos. Cada paciente enfermo es ignorado.
La accuracy (exactitud) no basta, especialmente con clases desbalanceadas.
Precision = VP / (VP + FP)
Recall = VP / (VP + FN)
La mayoría de los clasificadores generan una puntuación de probabilidad. Mover el umbral cambia el equilibrio entre precisión y recall. No se pueden maximizar ambos
Fuente: Analytics Vidhya
| AUC | Interpretación |
|---|---|
| 0.5 | No mejor que azar |
| 0.7-0.8 | Aceptable |
| 0.8-0.9 | Bueno |
| >0.9 | Excelente |
| Métrica | Fórmula | Intuición |
|---|---|---|
| MAE | Media de | real - predicho |
| MSE | Media de (real - predicho)² | Error cuadrado promedio (penaliza errores grandes) |
| RMSE | \(\sqrt{\text{MSE}}\) | Lo mismo que MSE, pero en unidades originales |
| R² | 1 - (SS_res / SS_tot) | Proporción de varianza explicada |
Ejemplos sencillos:
| Escenario | Métrica prioritaria |
|---|---|
| Diagnóstico médico | Recall (no perder enfermos) |
| Filtro de spam | Precision (no perder correos legítimos) |
| Predicción de ventas | MAE o RMSE |
| Comparar modelos | R² (varianza explicada) |
Fuente: Medium
¿Qué modelo usar?
Principio de parsimonia:
Guía práctica
| Situación | Modelo sugerido |
|---|---|
| Pocos datos, interpretabilidad alta | Regresión logística/lineal |
| Datos moderados, interpretabilidad media | Árboles, Random Forest |
| Muchos datos, rendimiento máximo | Gradient Boosting, Redes |
| Relaciones muy no lineales | Random Forest, XGBoost |
| Texto | Transformers, BERT |
En la práctica, probar varios modelos y comparar con validación cruzada.
Problemas comunes:
En R:
En general:
Ejemplo: estructura de proyecto reproducible
mi_proyecto/
├── README.md ← descripción
├── renv.lock ← versiones de paquetes
├── data/
│ ├── raw/ ← datos originales
│ └── processed/ ← datos procesados
├── scripts/
│ ├── 01-preprocess.R
│ ├── 02-train.R
│ └── 03-evaluate.R
├── models/ ← modelos guardados
└── reports/ ← resultados
Invertir en reproducibilidad ahorra tiempo a futuro.
tidymodels
├── rsample → dividir datos
├── recipes → preprocesar
├── parsnip → especificar modelo
├── workflows → combinar todo
├── tune → ajustar hiperparámetros
└── yardstick → evaluar
El flujo de trabajo en código:
Conceptos fundamentales:
Problemas y soluciones: