Validación de modelos — apuntes completos
Fuente: Ciencia de Datos · Módulo 3 — validación de modelos · Coursera · Prof. Park · 46 min
Por qué dividir los datos
Lección- Objetivo: estimar cómo rinde el modelo en datos no vistos — la única métrica que importa.
- Fallo común: si solo se evalúa en train, cualquier modelo parece bueno (también los malos).
- Principio hold-out: ninguna decisión (selección de modelo, hiperparámetros) puede ver el test antes de la evaluación final.
Las tres vías
Lección- Train: para ajustar los parámetros del modelo.
- Val: para afinar hiperparámetros y comparar modelos — se toca a menudo.
- Test: una sola vez al final para estimar el rendimiento real.
- Por qué tres: si afinas con el test, se convierte en un segundo train — sobreestima la generalización.
Proporciones típicas
Lección- 70/15/15: estándar para datos medianos (1k–100k muestras).
- 80/10/10: habitual con 10k–100k cuando se hace CV sobre train.
- Big data 98/1/1: con 1M+ muestras, 1% sigue siendo 10k — suficiente para estimaciones estables.
Estratificación
Lección- Cuándo: siempre que haya desbalance de clases o eventos raros.
- Cómo: conserva la proporción de clases en cada partición — evita validar sin positivos.
- Herramienta: StratifiedKFold de sklearn o train_test_split(stratify=y).
Validación cruzada
Lección- k-fold: divide train en k partes; entrena en k-1, valida en 1; rota y promedia.
- k típico: 5 o 10 — más allá hay rendimientos decrecientes.
- Series temporales: ventana expansiva o deslizante — nunca entrenar con datos futuros.
Sobreajuste
Lección- Definición: el modelo memoriza ruido en lugar de aprender la señal.
- Señal: la precisión de train sube mientras la de val se estanca o baja.
- Remedios: más datos, modelo más simple, L1/L2, dropout, early stopping, data augmentation.
Data leakage
Lección- Preprocesado: ajustar Scaler sobre todo el dataset (incluyendo val/test) filtra información de distribución.
- Solución: meter el preprocesado dentro de un Pipeline con CV.
- Temporal: entrenar con datos futuros para predecir el pasado — en series temporales usar particiones rodantes.
Ejemplo trabajado
Lección- Setup: 10.000 muestras, clasificación binaria, split 70/15/15.
- Conteo: train = 7.000, val = 1.500, test = 1.500.
- Estratificación: si la clase está 80/20, cada partición mantiene esa proporción.






