Búsqueda en rejilla y búsqueda aleatoria
GridSearchCV, RandomizedSearchCV, diseño de param_grid y reentrenamiento con los mejores parámetros.
Búsqueda en rejilla y búsqueda aleatoria es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
Por qué ajustar hiperparámetros
Los modelos tienen hiperparámetros (como max_depth o C) que no se aprenden de los datos, sino que se establecen antes del entrenamiento. Elegir los valores adecuados puede mejorar enormemente el rendimiento, por lo que los buscamos de forma sistemática.
El ajuste manual es propenso a errores
Probar valores manualmente es lento y facilita introducir sesgos. La búsqueda automatizada combinada con la validación cruzada evalúa cada candidato de forma justa y encuentra la mejor combinación de manera reproducible.
Conceptos básicos de GridSearchCV
GridSearchCV prueba todas las combinaciones de una cuadrícula de parámetros y asigna una puntuación a cada una mediante validación cruzada. Es exhaustivo y garantiza encontrar el mejor punto de la cuadrícula.
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200, 300],
"max_depth": [4, 8, None],
}
gs = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
gs.fit(X, y)La explosión combinatoria
El coste de la búsqueda en cuadrícula crece según el producto del número de opciones de todos los parámetros multiplicado por el número de particiones. Tres parámetros con 5 valores cada uno y una validación cruzada de 5 particiones requieren 5*5*5*5 = 625 ajustes. Las cuadrículas se vuelven costosas rápidamente.
La métrica en GridSearchCV
El parámetro scoring elige la métrica que se va a optimizar. Para datos desequilibrados, elija f1 o roc_auc en lugar de la precisión predeterminada.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
scoring="roc_auc",
)
gs.fit(X, y)Paralelización con n_jobs
El ajuste de cada candidato es independiente, así que establezca n_jobs=-1 para ejecutarlos en todos los núcleos de la CPU. Esto reduce drásticamente el tiempo real de ejecución de las cuadrículas grandes.
from sklearn.model_selection import GridSearchCV
gs = GridSearchCV(
RandomForestClassifier(),
param_grid,
cv=5,
n_jobs=-1,
verbose=1,
)Cómo leer los mejores resultados
Después del ajuste, consulte best_params_ para ver la combinación ganadora, best_score_ para consultar su puntuación de validación cruzada y best_estimator_ para obtener el modelo reajustado listo para hacer predicciones.
gs.fit(X, y)
print("Best params:", gs.best_params_)
print("Best CV score:", gs.best_score_)
best_model = gs.best_estimator_
best_model.predict(X_new)Inspección de todos los resultados
cv_results_ es un diccionario (ideal para convertirlo en un DataFrame) que muestra la puntuación y el rango de cada candidato. Úselo para entender qué parámetros son importantes y cómo de estables son las puntuaciones.
import pandas as pd
results = pd.DataFrame(gs.cv_results_)
print(results[["params", "mean_test_score", "rank_test_score"]].head())RandomizedSearchCV
Cuando el espacio de búsqueda es enorme, RandomizedSearchCV toma muestras de un número fijo de combinaciones aleatorias en lugar de probarlas todas. Puede controlar el presupuesto con n_iter.
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
param_dist = {
"n_estimators": randint(100, 500),
"max_depth": randint(3, 20),
}
rs = RandomizedSearchCV(
RandomForestClassifier(), param_dist,
n_iter=30, cv=5, random_state=0,
)
rs.fit(X, y)Por qué la búsqueda aleatoria suele ganar
En muchos problemas, solo unos pocos hiperparámetros son realmente importantes. La búsqueda aleatoria explora esas dimensiones importantes de forma más eficiente que una cuadrícula rígida y encuentra buenas soluciones con muchas menos pruebas.
Orientación: cuadrícula frente a aleatoria
Use GridSearchCV para un conjunto pequeño y discreto de candidatos. Use RandomizedSearchCV para espacios grandes o continuos en los que pueda establecer un presupuesto mediante n_iter. Ambos reajustan automáticamente el mejor modelo cuando refit=True.
Comprobación rápida
Compruebe sus conocimientos sobre la búsqueda de hiperparámetros.
Resumen
Resumen: GridSearchCV prueba exhaustivamente todas las combinaciones de una param_grid; el coste aumenta enormemente con su tamaño. RandomizedSearchCV toma muestras de n_iter combinaciones para espacios grandes. Establezca scoring para elegir su métrica, n_jobs=-1 para acelerar el proceso y consulte best_params_, best_score_ y best_estimator_ después del ajuste.
Preguntas frecuentes
¿La lección «Búsqueda en rejilla y búsqueda aleatoria» es gratis?
Sí — el texto completo de «Búsqueda en rejilla y búsqueda aleatoria» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Búsqueda en rejilla y búsqueda aleatoria»?
GridSearchCV, RandomizedSearchCV, diseño de param_grid y reentrenamiento con los mejores parámetros. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Búsqueda en rejilla y búsqueda aleatoria»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estrategias de validación cruzada
- Análisis profundo de métricas de clasificación
- Búsqueda en rejilla y búsqueda aleatoria
- Optimización bayesiana con Optuna