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 ·

GridSearchCV

GridSearchCV: Ajuste de hiperparámetros en Scikit-learn

Introducción

El ajuste de hiperparámetros es una etapa crucial en la construcción y optimización de modelos de machine learning. Los hiperparámetros son configuraciones que no se aprenden a partir del conjunto de datos, sino que se definen previamente por el usuario. En Scikit-learn, GridSearchCV (Grid Search Cross-Validation) es una herramienta poderosa para explorar y optimizar múltiples combinaciones de hiperparámetros en un modelo dado. A través de la validación cruzada, GridSearchCV permite encontrar los mejores hiperparámetros que maximicen el rendimiento del modelo.

Explicación principal con ejemplos

GridSearchCV explora una matriz de valores posibles para los hiperparámetros y selecciona aquellos que mejoran el rendimiento según la métrica elegida. Vamos a ver un ejemplo con un clasificador SVM en Scikit-learn:

from sklearn.datasets import load_iris
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.svm import SVC

# Cargar conjunto de datos Iris
data = load_iris()
X = data['data']
y = data['target']

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Definir el clasificador SVM con hiperparámetros a probar
param_grid = {'C': [0.1, 1, 10], 'gamma': [1, 0.1, 0.01]}
svc = SVC()

# Aplicar GridSearchCV con validación cruzada
grid_search = GridSearchCV(svc, param_grid, cv=5)
grid_search.fit(X_train, y_train)

# Mejores parámetros encontrados
print("Mejores hiperparámetros:", grid_search.best_params_)

En este ejemplo, param_grid define dos hiperparámetros: C (coste del error) y gamma para el clasificador SVM. GridSearchCV prueba todas las combinaciones posibles de estos valores en 5 folds de validación cruzada.

Errores típicos / trampas

  1. Usar un conjunto de datos pequeño: Asegúrate de que tu conjunto de datos de entrenamiento sea suficientemente grande para explorar una amplia gama de hiperparámetros.
  2. Ignorar el tiempo de ejecución: El ajuste de hiperparámteros puede ser computacionalmente costoso, especialmente con conjuntos de datos grandes y múltiples combinaciones a probar. Asegúrate de tener en cuenta el tiempo necesario para la exploración.
  3. No evaluar adecuadamente las métricas: Es importante seleccionar una métrica relevante que refleje el rendimiento del modelo en situaciones reales. No confiar solo en un error de clasificación.

Checklist accionable

  1. Identificar hiperparámetros a ajustar: Determine cuáles son los hiperparámetros más importantes para su modelo.
  2. Definir una matriz de valores posibles: Establezca rangos y valores específicos para cada hiperparámetro.
  3. Seleccionar una métrica adecuada: Elija la métrica que mejor refleje el rendimiento deseado del modelo.
  4. Usar validación cruzada: Asegúrese de usar validación cruzada para evitar sesgos en la selección de hiperparámetros.
  5. Optimizar recursos computacionales: Si es posible, reduzca la grilla o use técnicas como RandomizedSearchCV para ahorrar tiempo de ejecución.

Cierre con "Siguientes pasos"

  • Explorar otros métodos de búsqueda de hiperparámetros: Además de GridSearchCV, considere RandomizedSearchCV y BayesSearchCV.
  • Apropiarse el flujo completo de modelado: Integrar GridSearchCV en su pipeline para una evaluación más precisa del rendimiento final del modelo.
  • Estudiar modelos avanzados: Familiarízate con técnicas como el gradiente descendente adaptativo y las redenciones regularizadas para modelos no lineales.

A través de estos pasos, podrás mejorar significativamente la precisión y eficacia de tus modelos de machine learning en Scikit-learn.

Contacto

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