Sección 15: Tuning de Hiperparámetros

Optimización del Espacio de Configuración

Inicio

Optimización de Hiperparámetros en Spark ML

El tuning de hiperparámetros es el proceso de búsqueda sistemática en el espacio de configuración de un modelo de machine learning para encontrar la combinación óptima que maximiza el rendimiento en datos no vistos. A diferencia de los parámetros del modelo (como pesos en regresión), que se aprenden durante el entrenamiento, los hiperparámetros deben ser especificados antes del entrenamiento.

Definición Formal

Dado un espacio de hiperparámetros Θ y una función de pérdida L, el problema de tuning se formula como:

$$ \lambda^* = \underset{\lambda \in \Theta}{\text{argmin}} \, \mathbb{E}_{(X,Y) \sim \mathcal{D}_{\text{val}}} \left[ L(f_\lambda(X), Y) \right] $$

Donde λ representa una configuración de hiperparámetros, fλ es el modelo resultante, y la esperanza se toma sobre datos de validación.

1. Hiperparámetros vs Parámetros del Modelo

Distinción Fundamental

Es crucial entender la diferencia entre estos dos tipos de configuraciones:

Parámetros (θ)
  • Aprendidos durante el entrenamiento
  • Optimizados por algoritmo (gradiente descendente, etc.)
  • Ejemplos: pesos w y sesgos b en regresión
  • Resultado directo del proceso de minimización de pérdida
θ* = argminθ L(X, y; θ)
Hiperparámetros (λ)
  • Definidos antes del entrenamiento
  • Controlan el proceso de aprendizaje
  • Ejemplos: learning rate, regularización, maxDepth en árboles
  • Requieren búsqueda externa al algoritmo de entrenamiento
λ* = argminλ Eval[L(X, y; θ*(λ))]
Ejemplos Concretos en Spark ML
Modelo Parámetros (aprendidos) Hiperparámetros (config)
Regresión Lineal Coeficientes β, intercepto b regParam, elasticNetParam, maxIter
Random Forest Estructura de árboles, splits numTrees, maxDepth, maxBins, subsamplingRate
Gradient Boosting Pesos de árboles débiles maxIter, stepSize, maxDepth, subsamplingRate
Red Neuronal Pesos W y sesgos b de capas layers (arquitectura), maxIter, blockSize, stepSize

2. El Problema de Optimización en el Espacio de Hiperparámetros

Formalización Matemática

El espacio de hiperparámetros Θ es típicamente un producto cartesiano de espacios individuales:

$$ \Theta = \Theta_1 \times \Theta_2 \times \cdots \times \Theta_n $$

Donde cada Θi puede ser discreto (ej: {10, 50, 100} para numTrees) o continuo (ej: [0.001, 1.0] para regParam).

Desafíos Computacionales
  • 1.
    Explosión Combinatoria: Con n hiperparámetros y pi valores candidatos para cada uno, el espacio tiene tamaño:
    |Θ| = p₁ × p₂ × ... × pₙ
  • 2.
    Función Objetivo No Diferenciable: La función Eval[L(λ)] es típicamente no convexa, no diferenciable, y ruidosa (varía con el fold de validación).
  • 3.
    Costo de Evaluación: Cada evaluación de la función objetivo requiere entrenar un modelo completo sobre todo el dataset (O(N) operaciones distribuidas).
  • 4.
    Interacciones entre Hiperparámetros: Los efectos no son aditivos, lo que dificulta la optimización por coordenadas.

Visualización del Espacio de Búsqueda

graph TD
    A[Espacio de Hiperparámetros Θ] --> B[Discreto]
    A --> C[Continuo]
    A --> D[Mixto]

    B --> B1["numTrees ∈ {10, 50, 100}"]
    B --> B2["maxDepth ∈ {5, 10, 15, 20}"]

    C --> C1["regParam ∈ [0.001, 10.0]"]
    C --> C2["learningRate ∈ [0.01, 0.5]"]

    D --> D1["numTrees (discreto)"]
    D --> D2["subsamplingRate (continuo)"]

    B1 --> E["|Θ| = 3 × 4 = 12 configs"]
    B2 --> E

    style A fill:#9333ea,stroke:#a855f7,color:#fff
    style E fill:#7e22ce,stroke:#9333ea,color:#fff
                            
Ejemplo Numérico: Complejidad Combinatoria

Considera un Random Forest con 4 hiperparámetros:

Configuración de búsqueda:

  • • numTrees: [10, 50, 100, 200] → 4 valores
  • • maxDepth: [5, 10, 15, 20] → 4 valores
  • • maxBins: [16, 32, 64] → 3 valores
  • • subsamplingRate: [0.6, 0.8, 1.0] → 3 valores

Total de configuraciones:

4 × 4 × 3 × 3 = 144

Con 5-fold CV: 144 × 5 = 720 entrenamientos

Si cada entrenamiento toma 2 minutos en el cluster, el tuning completo requiere 24 horas de tiempo de cómputo (sin paralelización).

3. Estrategias de Búsqueda: Grid vs Random vs Bayesian

Existen tres paradigmas principales para explorar el espacio de hiperparámetros, cada uno con garantías teóricas y trade-offs computacionales diferentes:

Grid Search (Búsqueda Exhaustiva)

Estrategia: Evalúa todas las combinaciones en un grid discreto predefinido.

$$ \lambda^* = \underset{\lambda \in \Theta_{\text{grid}}}{\text{argmin}} \, CV(\lambda) $$

Donde Θgrid = {λ₁, λ₂, ..., λₙ} es el conjunto finito de configuraciones.

Ventajas:

  • ✓ Paralelizable completamente
  • ✓ Garantiza encontrar el óptimo en el grid
  • ✓ Reproducible y determinístico
  • ✓ Fácil de implementar

Desventajas:

  • ✗ Explosión combinatoria O(p₁×p₂×...×pₙ)
  • ✗ Ineficiente en dimensiones altas
  • ✗ Desperdicia recursos en regiones malas
  • ✗ Requiere discretización de continuos
Random Search (Búsqueda Aleatoria)

Estrategia: Muestrea B configuraciones uniformemente del espacio Θ.

$$ \lambda_i \sim \mathcal{U}(\Theta), \quad i=1,\ldots,B \qquad \lambda^* = \underset{i \in [1,B]}{\text{argmin}} \, CV(\lambda_i) $$

Teorema de Bergstra & Bengio (2012)

Si solo d dimensiones (d < n) son realmente importantes, Random Search explora esas dimensiones efectivas con mayor densidad que Grid Search con el mismo presupuesto.

Ventajas:

  • ✓ Mejor en dimensiones altas
  • ✓ Presupuesto controlable (parámetro B)
  • ✓ Encuentra buenos resultados más rápido
  • ✓ Paralelizable

Desventajas:

  • ✗ No garantiza óptimo global
  • ✗ No reproduce resultados (aleatorio)
  • ✗ Puede desperdiciar samples
Bayesian Optimization (Optimización Bayesiana)

Estrategia: Construye un modelo probabilístico (Gaussian Process) de la función objetivo y usa funciones de adquisición para elegir el próximo punto a evaluar.

$$ \begin{aligned} &\text{Prior: } f(\lambda) \sim \mathcal{GP}(\mu_0, k) \\[0.3em] &\text{Posterior: } f(\lambda) \mid \mathcal{D}_{1:t} \sim \mathcal{GP}(\mu_t, \sigma_t^2) \\[0.3em] &\lambda_{t+1} = \underset{\lambda}{\text{argmax}} \, \alpha(\lambda \mid \mathcal{D}_{1:t}) \end{aligned} $$

Donde α es la función de adquisición (ej: Expected Improvement, Upper Confidence Bound).

Ventajas:

  • ✓ Muy eficiente en samples
  • ✓ Balance exploration-exploitation
  • ✓ Maneja funciones ruidosas
  • ✓ Mejor para budgets pequeños

Desventajas:

  • ✗ No paralelizable fácilmente
  • ✗ Complejidad de implementación
  • ✗ Escala mal a muchas dimensiones
  • ✗ No nativo en Spark ML (requiere Hyperopt)
Comparación Empírica
Método Samples para 95% óptimo Paralelizable Uso en Spark ML
Grid Search ~100-1000 ✓ Totalmente CrossValidator + ParamGridBuilder
Random Search ~50-200 ✓ Totalmente Custom con randint/uniform
Bayesian Opt ~20-50 △ Limitado Hyperopt (externo)