Optimización de hiperparámetros
Los hiperparámetros controlan el comportamiento de los modelos de Machine Learning. Ajustarlos correctamente puede mejorar significativamente el rendimiento. En esta guía aprenderás las técnicas más usadas para optimizarlos: Grid Search, Random Search y SearchCV.
Tabla de contenidos
- Qué son los hiperparámetros
- Grid Search
- Random Search
- SearchCV
- Optimización con Scikit‑Learn
- Ejercicios
- Mini‑proyecto
1. Qué son los hiperparámetros
Los hiperparámetros son configuraciones externas al modelo que afectan su entrenamiento. No se aprenden automáticamente: debes elegirlos tú.
# Ejemplo
C = 1.0
max_depth = 5
n_estimators = 100
2. Grid Search
Grid Search prueba todas las combinaciones posibles de hiperparámetros. Es exhaustivo pero puede ser lento.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [50, 100, 200],
"max_depth": [None, 5, 10]
}
model = RandomForestClassifier()
grid = GridSearchCV(model, param_grid, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)
3. Random Search
Random Search prueba combinaciones aleatorias. Es más rápido y suele ser suficiente.
from sklearn.model_selection import RandomizedSearchCV
param_dist = {
"n_estimators": [50, 100, 200, 300],
"max_depth": [None, 5, 10, 20]
}
random_search = RandomizedSearchCV(model, param_dist, cv=5, n_iter=5)
random_search.fit(X_train, y_train)
print(random_search.best_params_)
4. SearchCV
SearchCV es el nombre general para métodos de búsqueda de hiperparámetros. GridSearchCV y RandomizedSearchCV son sus implementaciones más usadas.
5. Optimización con Scikit‑Learn
La optimización de hiperparámetros se combina con validación cruzada para obtener resultados más estables.
grid = GridSearchCV(model, param_grid, cv=10)
grid.fit(X, y)
Usar más folds aumenta la estabilidad pero también el tiempo de cálculo.
6. Ejercicios
- Realiza un Grid Search con 2 hiperparámetros.
- Realiza un Random Search con 5 iteraciones.
- Obtén los mejores hiperparámetros.
- Explica cuándo usar Grid Search.
- Explica cuándo usar Random Search.
# pista grid
GridSearchCV(model, param_grid, cv=5)
# pista random
RandomizedSearchCV(model, param_dist, n_iter=5)
7. Mini‑proyecto: Optimización completa
Toma un dataset real y realiza:
- Grid Search
- Random Search
- Comparación de resultados
- Gráfica de rendimiento por hiperparámetro