Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Scikit-learn desde cero, Unidad 9 — Selección y ajuste de modelos, 9.1 — Ajuste de hiperparámetros ·

RandomizedSearchCV

RandomizedSearchCV: Mejorando los ajustes de hiperparámetros

Introducción

El ajuste de hiperparámetros es un paso crucial en el entrenamiento de modelos de machine learning. Los valores correctos de estos parámetros pueden mejorar significativamente la precisión del modelo, pero encontrarlos a menudo implica pruebas exhaustivas y tiempo valioso. RandomizedSearchCV es una herramienta poderosa de scikit-learn que permite realizar búsquedas de hiperparámetros con un enfoque más inteligente y eficiente. En este artículo exploraremos cómo utilizar RandomizedSearchCV, cuándo usarlo, y algunas trampas comunes a evitar.

Explicación principal

RandomizedSearchCV es una versión modificada del GridSearchCV, donde en lugar de probar todos los posibles combinaciones, se eligen aleatoriamente. Esto no solo reduce el tiempo de búsqueda, sino que también puede revelar soluciones óptimas más rápidas y eficientemente.

Cómo funciona RandomizedSearchCV

RandomizedSearchCV realiza búsquedas en una distribución aleatoria de combinaciones de hiperparámetros. En lugar de probar todas las posibles combinaciones, elige un número predeterminado de combinatorias a evaluar. Esto es particularmente útil cuando hay muchos parámetros y muchas posibilidades.

from sklearn.model_selection import RandomizedSearchCV
from sklearn.tree import DecisionTreeClassifier

# Definición del modelo base
model = DecisionTreeClassifier()

# Espacio de búsqueda para los hiperparámetros
param_dist = {"max_depth": [3, None],
              "max_features": sp_randint(1, 11),
              "min_samples_split": randint(2, 11),
              "min_samples_leaf": randint(1, 10),
              "criterion": ["gini", "entropy"]}

# Instanciando RandomizedSearchCV
random_search = RandomizedSearchCV(
    model,
    param_distributions=param_dist,
    n_iter=100,  # Número de combinaciones a probar
    cv=5,        # KFold
    verbose=2,   # Nivel de detalle en la salida
    random_state=42,
    n_jobs=-1)   # Usar todos los núcleos del procesador

# Ejecutar el modelo
random_search.fit(X_train, y_train)

Errores típicos / trampas a evitar

  1. No especificar n_iter: RandomizedSearchCV puede terminar muy rápidamente si no se especifica correctamente el número de iteraciones (n_iter). Asegúrate de que este valor sea lo suficientemente alto para obtener una buena exploración del espacio de hiperparámetros.
  1. Usar un número demasiado pequeño de folds en cv: Una división del conjunto de datos en pocos folds puede llevar a una evaluación subestimada y menos fiabilidad de los resultados. Se recomienda usar al menos 5 folds (cv=5).
  1. Ignorar el ajuste de las métricas: Asegúrate de que las métricas utilizadas sean relevantes para tu problema y no sean engañosas, como la precisión en problemas de clasificación imbalanced.

Checklist accionable

  1. Especifica correctamente n_iter: Asegúrate de configurar el número de iteraciones (n_iter) basado en el tiempo disponible y el tamaño del espacio de hiperparámetros.
  2. Definir correctamente cv: Elige un número adecuado de folds para la validación cruzada que no subestime ni sobreestime los resultados.
  3. Elije las métricas relevantes: Asegúrate de utilizar métricas apropiadas y relevantes para tu problema específico (por ejemplo, F1-score en problemas de clasificación imbalanced).
  4. Verifica la importancia de los hiperparámetros: Después de ejecutar RandomizedSearchCV, revisa la importancia de los hiperparámetros seleccionados y ajusta el rango o distribución según sea necesario.
  5. Documenta el proceso: Mantén un registro detallado del proceso de búsqueda, incluyendo los parámetros probados, los resultados obtenidos y cualquier ajuste realizado.

Cierre con "Siguientes pasos"

  • Aplicar RandomizedSearchCV en modelos complejos: Prueba RandomizedSearchCV en modelos más complejos o grandes conjuntos de datos para ver cómo afecta su rendimiento.
  • Explorar otras técnicas de búsqueda: Aprende sobre otros métodos como GridSearchCV, Bayesian Optimization, y Hyperband.
  • Revisar el modelo final: Una vez que hayas encontrado los mejores hiperparámetros, evalúa el modelo final en un conjunto de pruebas o mediante validación cruzada para asegurarte de que no se ha sobreajustado.

Siguiendo estos pasos y cuidando de las trampas comunes, podrás mejorar significativamente la eficiencia y precisión del ajuste de hiperparámetros en tus modelos de machine learning utilizando RandomizedSearchCV de scikit-learn.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).