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:
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:
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.
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 Θ.
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.
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) |
Explora los Módulos de Tuning
Profundiza en cada técnica de optimización de hiperparámetros
Grid & Random Search
Fundamentos matemáticos, análisis de complejidad, y comparación empírica de estrategias de búsqueda.
ParamGrid & Evaluadores
API de Spark ML para tuning: construcción de grids, evaluadores, cross-validation, y análisis de resultados.
Reto: Pipeline Completo
Desafío integral: construye y optimiza un pipeline end-to-end con validación rigurosa.