Contenido del curso

- Ajuste de hiperparámetros y validación cruzada para clasificadores clásicos

🔍 Ajuste de hiperparámetros y validación cruzada para clasificadores clásicos

En esta lección dominarás las técnicas fundamentales para optimizar clasificadores como Random Forest y SVM. La búsqueda de hiperparámetros combinada con validación cruzada estratificada es el puente entre un modelo mediocre y un modelo de alto rendimiento. Aprenderás a evitar el sobreajuste y a interpretar los resultados dentro del dilema sesgo-varianza.

🎯 Objetivo: Al finalizar, serás capaz de aplicar Grid Search, Random Search y búsqueda bayesiana sobre los hiperparámetros clave de clasificadores clásicos, utilizando validación cruzada estratificada para garantizar la generalización del modelo.

1. Validación cruzada estratificada: el cimiento de la optimización

La validación cruzada estándar (k-fold) puede fallar cuando las clases están desbalanceadas. La validación cruzada estratificada preserva la proporción de clases en cada pliegue, ofreciendo una estimación más realista del rendimiento. Es obligatoria en clasificación binaria o multiclase con distribuciones desiguales.

  • StratifiedKFold (scikit-learn): asigna muestras manteniendo el porcentaje de cada clase.
  • Ventaja: Reduce el sesgo en la estimación de métricas como F1-score o exactitud balanceada.
  • Uso típico: 5 o 10 pliegues. En conjuntos pequeños usar 5, en grandes 10.

Fragmento de código (estructura):

from sklearn.model_selection import StratifiedKFold

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
# Luego se itera sobre skf.split(X, y) para entrenar y validar

2. Hiperparámetros críticos: Random Forest y SVM

Cada clasificador tiene hiperparámetros que controlan la complejidad del modelo. Ajustarlos mal conduce a sobreajuste o subajuste. A continuación los más relevantes:

Clasificador Hiperparámetro Rol Rango típico
Random Forest n_estimators Número de árboles. A mayor número, menor varianza (hasta cierto punto). 100 – 1000 (o más, según capacidad computacional)
Random Forest max_depth Profundidad máxima de cada árbol. Controla la complejidad individual. 3 – 50 (o None si se permite crecimiento completo)
SVM (kernel RBF) C Penalización por error. C alto busca clasificar bien todos los puntos (puede sobreajustar). 0.001 – 100 (escala logarítmica)
SVM (kernel RBF) gamma Influencia de cada punto de entrenamiento. Gamma alto genera bordes complejos. 0.0001 – 10 (escala logarítmica)

Relación sesgo-varianza: en Random Forest, aumentar max_depth incrementa la varianza (cada árbol se sobreajusta más). En SVM, valores altos de C o gamma llevan a modelos de alta varianza. El ajuste busca el punto óptimo de equilibrio.

3. Grid Search: búsqueda exhaustiva y sus limitaciones

Grid Search evalúa todas las combinaciones dentro de una cuadrícula de hiperparámetros predefinida. Es sencillo de implementar y paralelizable, pero sufre de la maldición de la dimensionalidad: el número de combinaciones crece exponencialmente.

  • Ventaja: garantiza cubrir el espacio definido. Fácil de entender.
  • Desventaja: para conjuntos de 4 o más hiperparámetros puede ser computacionalmente prohibitivo. No explora fuera de los valores elegidos.
  • Buenas prácticas: usar pocos valores por hiperparámetro (3–5) en etapas tempranas, luego refinar alrededor de la mejor región.
from sklearn.model_selection import GridSearchCV

param_grid_rf = {
    'n_estimators': [100, 300, 500],
    'max_depth': [5, 10, 20, None]
}
grid_rf = GridSearchCV(RandomForestClassifier(), param_grid_rf, cv=5, scoring='f1_macro')
grid_rf.fit(X_train, y_train)

4. Random Search: eficiencia por exploración estocástica

Random Search muestrea combinaciones aleatorias a partir de distribuciones especificadas. Ha demostrado ser más eficiente que Grid Search cuando el espacio de búsqueda es grande, ya que explora mejor regiones prometedoras sin perder tiempo en valores redundantes.

  • Hiperparámetros continuos: usar distribuciones uniformes o log-uniforme (por ejemplo, C en SVM con loguniform(1e-3, 1e3)).
  • Número de iteraciones: típicamente 30–100, dependiendo del presupuesto computacional.
  • Ventaja: en espacios de alta dimensión encuentra regiones óptimas más rápido.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform, loguniform

param_dist_svm = {
    'C': loguniform(1e-3, 1e2),
    'gamma': loguniform(1e-4, 1e1)
}
rand_svm = RandomizedSearchCV(SVC(kernel='rbf'), param_dist_svm, n_iter=50, cv=5, scoring='f1_macro')
rand_svm.fit(X_train, y_train)

5. Búsqueda bayesiana: optimización inteligente

A diferencia de los métodos anteriores, la búsqueda bayesiana construye un modelo probabilístico (por ejemplo, Gaussian Process) que relaciona los hiperparámetros con la métrica de rendimiento. Con cada evaluación actualiza el modelo y selecciona la siguiente combinación prometedora mediante una función de adquisición (ej. Expected Improvement).

  • Ventaja: requiere menos evaluaciones para converger. Ideal cuando cada evaluación es costosa (grandes datasets, modelos complejos).
  • Implementación: librerías como scikit-optimize, Optuna o Hyperopt.
  • Desventaja: es más complejo de configurar y paralelizar; puede ser sobredisperso si no se ajustan bien los priors.
# Ejemplo conceptual con skopt (scikit-optimize)
from skopt import BayesSearchCV
from skopt.space import Real, Integer

opt = BayesSearchCV(
    SVC(),
    {'C': Real(1e-3, 1e2, prior='log-uniform'),
     'gamma': Real(1e-4, 1e1, prior='log-uniform')},
    n_iter=40, cv=5
)
opt.fit(X_train, y_train)

La búsqueda bayesiana es actualmente el estado del arte para la optimización de hiperparámetros, especialmente cuando el tiempo de entrenamiento es alto.

6. Cómo evitar el sobreajuste durante la búsqueda

Uno de los errores más comunes es optimizar directamente sobre el conjunto de prueba, lo que lleva a una falsa sensación de rendimiento. Estrategias para evitarlo:

  • Validación interna: la búsqueda debe hacerse siempre dentro de los pliegues de validación cruzada (CV). Nunca usar el conjunto de prueba hasta el final.
  • Validación externa: reservar un conjunto de prueba independiente (hold-out) que no se toca durante la búsqueda.
  • CV anidada (Nested CV): cuando se necesita una estimación imparcial del rendimiento final, se usa un bucle externo de CV para evaluar el modelo seleccionado. El bucle interno optimiza los hiperparámetros.
  • Cuidado con la varianza del CV: si el dataset es pequeño, la mejor combinación puede ser casual. Repetir la búsqueda con diferentes semillas ayuda a confirmar la robustez.

💡 Consejo clave: Si usas GridSearchCV o RandomizedSearchCV con un solo conjunto de validación, no vuelvas a usar esas métricas como garantía final. Un tercer conjunto (prueba) es necesario para reportar la capacidad de generalización.

7. Interpretación de resultados y balance sesgo-varianza

Una vez obtenidos los mejores hiperparámetros, es vital entender qué nos dicen sobre el modelo:

  • Random Forest con max_depth baja y muchos árboles: modelo con bajo sesgo (cada árbol es débil) pero control de varianza gracias al promediado. Es un indicio de modelo estable.
  • SVM con C alto y gamma alto: el modelo se ajusta mucho a los puntos de entrenamiento; probablemente alta varianza. Si el rendimiento en CV es mucho mejor que en prueba, hay sobreajuste.
  • Grid/Random Search con diferencias pequeñas entre folds: señal de que el modelo generaliza bien. Si hay desviaciones grandes, puede haber inestabilidad.

Ejemplo de interpretación: Supongamos que en SVM el mejor valor de C es 0.1 y gamma 0.01. Esto indica que el modelo necesita una regularización moderada (C no muy alto) y una influencia local controlada (gamma baja). Si hubiera dado C=100, gamma=10, el modelo probablemente estaría memorizando ruido.

8. Resumen: estrategias de búsqueda y cuándo usarlas

Método Ventaja Cuándo usarlo Riesgo
Grid Search Exhaustivo, reproducible Pocos hiperparámetros (≤3) y rangos pequeños Costoso en espacio grande
Random Search Eficiente para espacios amplios 4+ hiperparámetros, presupuesto computacional limitado Puede perder regiones óptimas si n_iter es bajo
Bayesiano Óptimo en pocas iteraciones Evaluaciones costosas, búsqueda fina Requiere ajuste de prior; no siempre paralelizable

⚖️ Reflexión final: El ajuste de hiperparámetros no es un fin en sí mismo, sino una herramienta para navegar el balance sesgo-varianza. Combinando validación cruzada estratificada con una búsqueda inteligente, lograrás modelos que no solo memorizan, sino que generalizan. Aplica siempre una validación externa para confirmar tus hallazgos.

Lección creada bajo el curso "Odisea Algorítmica: De la Regresión al Aprendizaje Profundo". Domina cada técnica y conviértete en un experto en clasificación.

Lección técnica sobre métodos de búsqueda de hiperparámetros (Grid Search, Random Search, Bayesiano) para optimizar el rendimiento de los clasificadores. Se aplica a Random Forest (n_estimators, max_depth) y SVM (C, gamma) con validación cruzada estratificada. Se enseña cómo evitar el sobreajuste durante la búsqueda y cómo interpretar los resultados en el contexto del balance sesgo-varianza.
Calificación
0 0

No hay comentarios por ahora.