12 · GridSearchCV + RandomizedSearchCV
Deja de ajustar hiperparámetros a mano — automatiza la búsqueda con grid y random search basados en CV.
Elegir hiperparámetros a mano es de aficionado — automatiza la búsqueda con grid/random search basados en CV.
Sin esto:
Sin ajuste automatizado, tu modelo probablemente está un 5-10% por debajo de su potencial — y quemarás horas de ajuste manual para cerrar la brecha.
Todo modelo de machine learning tiene dos tipos de cantidades:
Parámetros — valores aprendidos durante el entrenamiento minimizando la función de pérdida. En regresión logística, los pesos w y el sesgo b son parámetros. El algoritmo los encuentra; tú no los fijas.
Hiperparámetros — valores fijados antes del entrenamiento que controlan el proceso de aprendizaje. Ejemplos:
- Fuerza de regularización
Cen regresión logística (C = 1/λ) - Tipo de penalización (
l1vsl2) - Tasa de aprendizaje, número de árboles, profundidad máxima en otros modelos
Elegir hiperparámetros es un problema de meta-optimización: quieres los valores que maximicen el rendimiento de generalización (puntuación de CV), no la puntuación de entrenamiento.
GridSearchCV — búsqueda exhaustiva
Define una cuadrícula de valores candidatos para cada hiperparámetro. GridSearchCV prueba cada combinación con validación cruzada k-fold y selecciona la que tenga la mejor puntuación de CV media.
Ejemplo: si buscas C ∈ {0.01, 0.1, 1, 10, 100} y penalty ∈ {l1, l2}, eso es 5 × 2 = 10 combinaciones × 5 folds = 50 ajustes del modelo.
Fortaleza: garantiza encontrar la mejor configuración en la cuadrícula. Debilidad: exponencial en el número de hiperparámetros. 10 parámetros × 5 valores cada uno = 9.7 millones de combinaciones — computacionalmente imposible.
RandomizedSearchCV — muestreo aleatorio
En lugar de una cuadrícula exhaustiva, muestrea n_iter combinaciones aleatoriamente de las distribuciones de hiperparámetros. Cada combinación se evalúa con CV k-fold.
Idea clave (Bergstra & Bengio 2012): cuando la mayoría de los hiperparámetros no importan, la búsqueda aleatoria es mucho más eficiente que la cuadrícula. En una cuadrícula 2D donde un parámetro importa y otro no, la búsqueda en cuadrícula desperdicia la mayoría de las evaluaciones — la búsqueda aleatoria sigue probando nuevos valores del parámetro importante.
Alternativas modernas: Optimización Bayesiana
Herramientas como Optuna (algoritmo TPE) y scikit-optimize mantienen un modelo probabilístico (proceso gaussiano o Estimador de Árbol de Parzen) de la superficie de validación. Cada nueva muestra se elige para maximizar la mejora esperada — muestreando más densamente donde la superficie parece prometedora. Mucho más rápida que la búsqueda aleatoria para espacios de hiperparámetros de alta dimensión (>5 parámetros).
El protocolo de evaluación correcto: CV anidada
La búsqueda de hiperparámetros introduce su propio sobreajuste: si usas las mismas puntuaciones de CV para seleccionar hiperparámetros Y reportar el rendimiento final, la puntuación final es optimista (se usó para elegir el modelo). El enfoque correcto es la CV anidada: un bucle externo estima la generalización verdadera, un bucle interno selecciona hiperparámetros.
Python (in browser)
Usar `Pipeline` con `GridSearchCV` es el patrón correcto — el scaler se re-ajusta en cada fold de entrenamiento, evitando la fuga de datos de las estadísticas del fold de test. Nota la convención de nombres `clf__C`: los dobles guiones bajos separan el nombre del paso de Pipeline del nombre del parámetro.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
`scipy.stats.loguniform(1e-3, 1e3)` muestrea C uniformemente en escala logarítmica — así prueba valores como 0.002, 0.15, 3.7, 47, etc. Esto cubre el rango completo sin la discretización artificial de una cuadrícula. Para el mismo número de ajustes, Randomized a menudo iguala o supera a Grid.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
La CV anidada es el enfoque estadísticamente riguroso. En la práctica, incluso el ajuste basado en CV de un solo bucle es una mejora masiva sobre no ajustar en absoluto — solo ten en cuenta que la puntuación reportada es ligeramente optimista.
Si tienes 4 hiperparámetros con 10 valores cada uno y CV de 5 folds, ¿cuántos ajustes del modelo realiza GridSearchCV?
- Los parámetros son aprendidos por el optimizador; los hiperparámetros se fijan antes del entrenamiento y se ajustan con CV.
- GridSearchCV es exhaustivo (garantiza encontrar el mejor de la cuadrícula) pero exponencial en el número de hiperparámetros.
- RandomizedSearchCV muestrea distribuciones continuas — a menudo iguala o supera a Grid con el mismo presupuesto de cómputo, y escala a más hiperparámetros.
- Nunca ajustes hiperparámetros en el conjunto de test — siempre mantén un conjunto limpio apartado para la evaluación final.
Toda solución ganadora de Kaggle involucra ajuste de hiperparámetros — generalmente con Optuna o los ajustadores integrados de LightGBM/XGBoost. Los pipelines de ML en producción tienen una 'etapa de ajuste' que corre nocturnamente o semanalmente.
Si lo quitas: Desplegarías modelos con elecciones arbitrarias de hiperparámetros — y una mejora del 5-10% típicamente espera detrás de 30 minutos de ajuste.