Selección de Modelos

Eval

Selección de Modelos

まとめ
  • Organiza las principales estrategias de validación y criterios de información para comparar modelos.
  • Ofrece una visión global de la validación cruzada, las curvas de validación/aprendizaje, los criterios de información y la búsqueda de hiperparámetros.
  • Resume cómo construir un flujo de evaluación que equilibre restricciones de datos, coste y toma de decisiones.

Capítulo 1 #

Panorama de la selección de modelos #

Escoger un modelo no consiste únicamente en quedarse con la mejor puntuación en un hold-out. Hay que decidir cómo estimar la capacidad de generalización, qué métricas son fiables y cómo controlar el gasto computacional. En este capítulo reunimos las técnicas de validación fundamentales que se reutilizan en regresión y clasificación, y damos indicaciones prácticas sobre cuándo emplear cada una.


Técnicas clave #

1. División de datos y validación cruzada #

  • K-Fold / Stratified K-Fold (consulta Validación cruzada / Stratified K-Fold): opción por defecto cuando el volumen de datos es limitado. Estratificar preserva la proporción de clases.
  • Validación cruzada anidada (ver Nested CV): imprescindible si quieres una estimación sin sesgo que incluya la búsqueda de hiperparámetros.
  • Divisiones para series temporales: necesarias cuando el orden temporal importa; combina ventanas crecientes o deslizantes con conocimiento del dominio.

2. Curvas para diagnosticar #

  • Curvas de validación (Validation Curve): muestran cómo influye un hiperparámetro en los resultados de entrenamiento/validación.
  • Curvas de aprendizaje (Learning Curve): relacionan rendimiento y tamaño muestral, ayudando a valorar si merece la pena recopilar más datos.

3. Criterios de información #

  • AIC / BIC (AIC y BIC): penalizan la complejidad en modelos lineales gaussianos o GLM.
  • (C_p) de Mallows y otros estadísticos: útiles cuando se dispone de un estimador analítico del error de predicción.

4. Búsqueda de hiperparámetros #

  • Búsqueda en rejilla / aleatoria: exhaustivas en espacios pequeños, estocásticas para obtener ganancias rápidas en espacios amplios.
  • Optimización bayesiana / Hyperband: eficaces cuando cada evaluación es costosa.
  • Pipelines AutoML: automatizan selección de modelos, generación de características y ajuste de hiperparámetros para obtener una línea base rápida.

Comparar modelos con validación cruzada #

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_breast_cancer(return_X_y=True)

cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
models = {
    "LogReg (L2)": make_pipeline(
        StandardScaler(),
        LogisticRegression(max_iter=2000, penalty="l2", C=1.0, solver="lbfgs"),
    ),
    "LogReg (ElasticNet)": make_pipeline(
        StandardScaler(),
        LogisticRegression(
            max_iter=2000,
            penalty="elasticnet",
            solver="saga",
            C=1.0,
            l1_ratio=0.4,
        ),
    ),
    "RandomForest": RandomForestClassifier(
        n_estimators=200, max_depth=6, random_state=42
    ),
}

means = []
stds = []
labels = []
for name, model in models.items():
    scores = cross_val_score(model, X, y, cv=cv, scoring="roc_auc")
    means.append(scores.mean())
    stds.append(scores.std())
    labels.append(name)

y_pos = np.arange(len(labels))

fig, ax = plt.subplots(figsize=(6.5, 3.8))
ax.barh(y_pos, means, xerr=stds, color="#2563eb", alpha=0.8)
ax.set_yticks(y_pos)
ax.set_yticklabels(labels)
ax.set_xlabel("ROC-AUC (media 5-fold ± desviación típica)")
ax.set_xlim(0.9, 1.0)
ax.set_title("Comparativa de modelos con validación cruzada")
ax.grid(axis="x", alpha=0.3)
plt.tight_layout()
Comparación de modelos con ROC-AUC

La validación cruzada enseña la media y la variabilidad. Aquí la regularización elastic-net supera ligeramente a la base manteniendo a raya la varianza.


Cómo diseñar el flujo de evaluación #

  1. Conoce la distribución de los datos
    Detecta desequilibrios de clases, dependencias temporales y posibles fugas antes de dividir.
  2. Aclara qué vas a comparar
    Enumera modelos, preprocesamientos y conjuntos de características que vas a evaluar.
  3. Alinea métricas y umbrales
    Acorda con las partes interesadas qué métricas guían la decisión (ROC-AUC, RMSE, coste, etc.).
  4. Garantiza la reproducibilidad
    Registra semillas, definiciones de splits y versiones de entorno. Automatiza siempre que puedas.
  5. Presupuesta el cálculo
    Estima cuánto tardarán las búsquedas en rejilla/aleatoria y refina con métodos adaptativos o bayesianos cuando encuentres regiones prometedoras.

Guía rápida #

TemaPáginas relacionadasNotas
Fundamentos de la validación cruzadaValidación cruzada / Stratified K-FoldResumen de estrategias de división
Validación anidadaNested CVEstimaciones sin sesgo con ajuste de hiperparámetros
Diagnóstico con curvasLearning Curve / Validation CurveVisualiza suficiencia de datos y efecto de hiperparámetros
Criterios de informaciónAIC y BICCompara modelos paramétricos penalizando la complejidad

Lista de verificación #

  • ¿Se ha documentado cómo se dividen los datos (estratificación, series temporales, etc.)?
  • ¿Se han fijado las métricas principales y el formato de reporte?
  • ¿Se ha definido el espacio y las fases de búsqueda de hiperparámetros?
  • ¿Se han compartido configuraciones y código reproducible de cada experimento?
  • ¿Se han tenido en cuenta restricciones de inferencia como tiempo y tamaño del modelo?