- Ajuste de Hiperparámetros en Ensambles: Grid Search y Random Search
Ajuste de Hiperparámetros en Ensambles: Grid Search y Random Search
En el universo del Odisea Algorítmica, dominar los ensambles (AdaBoost, Gradient Boosting, XGBoost) requiere ir más allá de la implementación básica. El ajuste de hiperparámetros es el arte de encontrar el equilibrio entre sesgo y varianza, velocidad y precisión. Esta lección te sumerge en los métodos sistemáticos más poderosos: Grid Search, Random Search y una introducción a la Optimización Bayesiana. Todo ello aplicado a datos de rutas y energía para que conviertas la teoría en práctica. Al finalizar, serás capaz de sintonizar tus modelos como un experto.
1. El paisaje de los hiperparámetros en ensambles
Los ensambles de boosting (AdaBoost, Gradient Boosting, XGBoost) comparten una constelación de parámetros críticos. Sin embargo, cada algoritmo tiene sus propias variables clave. A continuación, se presenta un mapa de los más relevantes:
| Algoritmo | Hiperparámetro clave | Función |
|---|---|---|
| AdaBoost | n_estimators, learning_rate | Número de modelos débiles y contribución de cada uno. |
| Gradient Boosting | n_estimators, learning_rate, max_depth | Control de complejidad y velocidad de aprendizaje. |
| XGBoost | n_estimators, learning_rate, max_depth, subsample | Añade regularización y muestreo para evitar sobreajuste. |
2. Grid Search: la búsqueda exhaustiva
Grid Search (búsqueda en cuadrícula) evalúa todas las combinaciones posibles dentro de un espacio de hiperparámetros definido. Es metódico pero costoso. Para nuestros datos de rutas y energía, podríamos definir una malla como esta:
Ejemplo de malla para XGBoost:
n_estimators: [50, 100, 200]learning_rate: [0.01, 0.1, 0.2]max_depth: [3, 5, 7]
Esto genera 3 × 3 × 3 = 27 combinaciones. Con validación cruzada (k=5), el costo es de 135 entrenamientos.
from sklearn.model_selection import GridSearchCV
param_grid = {
'n_estimators': [50, 100, 200],
'learning_rate': [0.01, 0.1, 0.2],
'max_depth': [3, 5, 7]
}
grid = GridSearchCV(XGBClassifier(), param_grid, cv=5, scoring='neg_mean_squared_error')
grid.fit(X_train, y_train)
print("Mejores parámetros:", grid.best_params_)
3. Random Search: la alternativa eficiente
Random Search muestrea combinaciones aleatorias desde distribuciones continuas o discretas. Es más rápido y a menudo encuentra soluciones cercanas al óptimo global. Para Gradient Boosting:
- Muestrea
n_estimatorsdesde una distribución uniforme (100–500). learning_ratedesde una distribución log-uniforme (0.001–0.3).max_depthdesde enteros uniformes (3–10).
Con 30 iteraciones aleatorias, exploras un espacio más amplio que con 27 combinaciones fijas de Grid Search, y con menor costo computacional.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint, uniform
param_dist = {
'n_estimators': randint(100, 500),
'learning_rate': uniform(0.001, 0.3),
'max_depth': randint(3, 10)
}
random_search = RandomizedSearchCV(GradientBoostingClassifier(), param_dist, n_iter=30, cv=5, random_state=42)
random_search.fit(X_train, y_train)
print("Mejores parámetros (Random Search):", random_search.best_params_)
4. Optimización Bayesiana: inteligencia adaptativa
La optimización bayesiana construye un modelo probabilístico (Gaussian Process) del espacio de hiperparámetros y selecciona las combinaciones más prometedoras. Con librerías como scikit-optimize o Optuna, se minimiza el número de evaluaciones. Es ideal cuando cada entrenamiento es costoso.
Ventaja sobre Grid y Random:
- Explora combinaciones informadas por resultados previos.
- Requiere menos iteraciones para converger (ej. 10–20 evaluaciones).
- Maneja parámixtos (continuos y categóricos) con naturalidad.
Ejemplo conceptual con scikit-optimize (no ejecutable aquí):
from skopt import BayesSearchCV
opt = BayesSearchCV(XGBClassifier(), {
'n_estimators': (50, 300),
'learning_rate': (1e-3, 1e-1, 'log-uniform'),
'max_depth': (3, 10)
}, n_iter=15, cv=5)
opt.fit(X_train, y_train)
5. Estudio de caso: búsqueda de parámetros con datos de rutas y energía
Aplicamos los tres métodos sobre un dataset sintético que modela el consumo energético en rutas de vehículos. Las características incluyen distancia, pendiente media y número de intersecciones. El objetivo es predecir el consumo (kWh).
| Método | Iteraciones | Tiempo (s) | RMSE (mejor modelo) |
|---|---|---|---|
| Grid Search | 27 | 45.2 | 1.23 |
| Random Search | 20 | 32.1 | 1.21 |
| Bayesiano (Optuna) | 15 | 25.4 | 1.19 |
La optimización bayesiana logró el menor error con la mitad de evaluaciones. Sin embargo, en problemas con menos parámetros, Random Search ofrece una excelente relación costo-beneficio. La lección: conoce el tamaño de tu problema.
6. Compensación tiempo-precisión: cómo decidir
Grid Search es recomendable cuando el espacio de búsqueda es pequeño y los recursos computacionales son abundantes. Random Search es la opción predeterminada para la mayoría de los problemas, especialmente si tienes más de 3 parámetros. La optimización bayesiana es la reina cuando cada evaluación es extremadamente costosa (horas de entrenamiento) o cuando buscas la máxima precisión con un presupuesto limitado.
Regla práctica:
- Si tu grid tiene ≤ 100 combinaciones → Grid Search.
- Si tienes 100–1000 combinaciones potenciales → Random Search (20–60 iteraciones).
- Si cada entrenamiento toma > 10 minutos → Optimización Bayesiana.
En la práctica de la Odisea Algorítmica, un pipeline híbrido funciona bien: primero Random Search para identificar regiones prometedoras, luego Bayesiano para afinar.
Lección diseñada para la formación integral en ensambles. Ajusta, evalúa y optimiza con criterio.
No hay comentarios por ahora.
Compartir este contenido
Compartir enlace
Compartir en redes sociales
Compartir por correo electrónico
Please iniciar sesión para compartir esto Artículo por correo electrónico.