まとめ
- La validación cruzada anidada separa la búsqueda de hiperparámetros de la evaluación externa para evitar sesgos optimistas.
- Construye bucles externo/interno en scikit-learn y observa cómo se previene la fuga de información.
- Comprende cuándo merece la pena el coste adicional y cómo comunicar los resultados.
1. Funcionamiento #
- Bucle externo: divide los datos con
K_outer; cada pliegue actúa como conjunto de prueba intacto. - Bucle interno: ejecuta una validación cruzada de
K_innerpliegues sobre el resto para ajustar hiperparámetros (grid search, random search, optimización bayesiana, etc.). - Evaluación: reentrena con los hiperparámetros óptimos y evalúa en el pliegue externo reservado.
Repite el proceso K_outer veces y agrega las puntuaciones externas (media ± desviación típica o intervalos de confianza).
2. Implementación en Python #
from sklearn.model_selection import GridSearchCV, cross_val_score, KFold
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200],
"max_depth": [None, 10, 20],
}
inner_cv = KFold(n_splits=3, shuffle=True, random_state=0)
outer_cv = KFold(n_splits=5, shuffle=True, random_state=1)
grid = GridSearchCV(
RandomForestClassifier(random_state=0),
param_grid=param_grid,
cv=inner_cv,
scoring="roc_auc",
n_jobs=-1,
)
scores = cross_val_score(grid, X, y, cv=outer_cv, scoring="roc_auc", n_jobs=-1)
print("ROC-AUC anidado:", scores.mean(), "+/-", scores.std())
Pasar el objeto de búsqueda (GridSearchCV, RandomizedSearchCV, etc.) a cross_val_score es suficiente para ejecutar una validación cruzada anidada.
3. Ventajas #
- Evita fuga entre ajuste y evaluación: impide el sesgo optimista al usar los mismos datos para ambas tareas.
- Comparaciones justas: cada modelo se ajusta independientemente pero se evalúa con idénticos pliegues externos.
- Estimaciones de incertidumbre: las puntuaciones del bucle externo forman una distribución con la que calcular varianza e intervalos de confianza.
4. Precauciones #
- Coste computacional alto: el entrenamiento crece con
K_outer × K_inner; modelos pesados pueden ser inviables. - Cuidado con rejillas enormes: espacios de búsqueda grandes multiplican el tiempo; valora random search u optimización bayesiana.
- Datasets pequeños: si el conjunto es muy reducido, puede que el modelo quede con pocos datos; ajusta los valores de
Ko usa CV repetida con cautela.
5. Consejos prácticos #
- Ideal en datasets pequeños: la fuga de información es más dañina cuando hay pocos datos, por lo que la validación anidada compensa.
- Resérvala para los candidatos finales: aplícala solo a los modelos finalistas para controlar el tiempo de cómputo.
- Documenta la configuración: detalla número de pliegues, método de búsqueda y semillas aleatorias para demostrar control del riesgo.
Resumen #
- La validación cruzada anidada ofrece una estimación imparcial de la generalización mientras optimiza hiperparámetros.
- Combina
GridSearchCV(u otra estrategia) concross_val_score; planifica el coste adicional. - Úsala en la evaluación final de modelos críticos para que las métricas reflejen el rendimiento real.