Grid search en Python

Autor: | Última modificación: 20 de octubre de 2022 | Tiempo de Lectura: 4 minutos
Temas en este post:

El grid search en Python es un método de búsqueda que toma en cuenta diferentes combinaciones de hiperparámetros y elige la combinación que arroja un margen de error más bajo.

¿Cómo funciona el grid search en Python?

El grid search en Python funciona por medio de la comparación: se toman dos valores de un conjunto pequeño de valores para dos o más parámetros, se evalúan todas las combinaciones posibles y con ellas se forma una cuadrícula de valores (traducción de grid search).

El grid search en Python ayuda a la optimización de hiperparámetros.

Hiperparámetros y parámetros

Los hiperparámetros son parámetros de aprendizaje automático que se eligen antes de que el proceso de aprendizaje automático comience. Son ajustables y pueden afectar directamente a la forma en la que se entrena un modelo de aprendizaje automático.

Algunos de estos hiperparámetros son:

  • Número de épocas.
  • Impulso.
  • Constante de regularización.
  • Número de ramas en un árbol de decisión.
  • Número de clústeres en un algoritmo de agrupamiento.
  • Descenso de gradientes.
  • Elección del costo o pérdida que utilizará un modelo.
  • Número de capas ocultas en n-actividad.
  • Tasa de abandono en n-entidad.
  • Tamaño del kernel.
  • Tamaño del lote.
  • Parámetros.

La diferencia entre un parámetro y un hiperparámetro es que el segundo lo utilizan los algoritmos de aprendizaje cuando este apenas está aprendiendo, pero no son partícipes en el modelo que resulta de este aprendizaje.

Los hiperparámetros son flexibles, ya que se refieren a cualquier elemento en el machine learning y el deep learning que decida sus valores o elija su configuración antes de que comience el entrenamiento y cuyos valores permanecen iguales cuando se finaliza el entrenamiento.

Los parámetros, por su lado, son características inherentes al modelo. Esto quiere decir que se aprenden o se estiman a partir de los datos brindados durante el entrenamiento, ya que el algoritmo que se use intentará aprender el mapeo entre las características de entrada y los objetivos.

Algunos ejemplos de parámetros son:

  • Coeficientes de modelos de regresión lineal y logística.
  • Pesos y sesgos de -n.
  • Centroides del clúster en un agrupamiento.

Los parámetros, por tanto, son los valores que el algoritmo de aprendizaje puede cambiar de forma deliberada a medida que aprende y estos valores se van viendo afectados por la elección de los hiperparámetros que se proporcionen.

En resumen, los hiperparámetros se establecen antes de que comience el entrenamiento y el algoritmo de aprendizaje los usa para aprender los parámetros.

grid search en python

Grid search en Python vs. RandomizedSearch

El grid search en Python es eficaz cuando se requiere ajustar parámetros en aprendizaje supervisado y mejorar el rendimiento de generalización de un modelo.

El grid search en Python proporcionado por GridSearchCV genera candidatos a partir de una cuadrícula de valores de parámetros especificados con el parámetro param_grid:

param_grid = [
     {'C': [1, 10, 100, 1000], 'núcleo': ['lineal']},
     {'C': [1, 10, 100, 1000], 'gamma': [0.001, 0.0001], 'núcleo': ['rbf']},
   ]

Esta instancia evalúa todas las combinaciones posibles con los datos implementados y conserva la mejor combinación.

El RandomizedSearch es útil cuando se tienen muchos parámetros para probar y el tiempo de entrenamiento es muy largo.

Este método realiza una búsqueda aleatoria sobre parámetros, donde cada configuración se muestrea a partir de una distribución sobre posibles valores de parámetros.

Los parámetros se muestren gracias al uso de un diccionario. Sumado a esto, se especifica un presupuesto de cálculo, que es el número de personas que se muestrearon o de iteraciones de muestreo; esto se hace mediante el parámetro n_iter:

{'C': scipy.stats.expon(escala=100), 'gamma': scipy.stats.expon(escala=.1),
'núcleo': ['rbf'], 'class_weight':['equilibrado', Ninguno]}

Intuitivamente, parece que usar un grid search en Python sea lo más lógico; no obstante, los resultados del RandomizedSearch pueden funcionar mejor.

Veamos un ejemplo (no está en Python):

Vamos a agrupar barrios por metros cuadrados. Podemos usar una matriz de similaridad de Tukey (con parámetros):

In [ ]: tky <- TukeyHSD (aov ( formula = Square.Meters ~ Neighbourhood, data = df_madrid ))
tky.result <- data.frame (tky$Neighbourhood)
cn <- sort (unique (df_madrid$Neighbourhood))
resm <- matrix (NA, length (cn), Length(cn))
rownames(resm) <- cn
colnames resm <- cn
resm [lower.tri (resm)] <- round (tky.result$p.adj, 4)
resm [upper.tri(resm)] <- t (resm) [upper.tri (resm)]
diag (resm) <- 1
library (ggplot2)
library (reshape2)
dfResm <- melt (resm)
ggplot (dfResm, aes (x = Var1, y = Var2, fill = value)) +
    geom_tile (colour = "black")+
    scale_fill_gradient (low = "white", high = "steelblue") +
    ylab ("Class") + xlab ("Class") + theme_bw() +
    theme (axis.text.x = element_text (angle = 98, hjust = 1),
    legend.position = "none")

Usando como variable de distancia 1-resim, dibuja un dendrograma de los diferentes barrios.

¿Qué sigue?

El grid search en Python es una buena opción a la hora de hacer comparaciones estadísticas, aunque existen otras opciones, como el randomizedsearch que también pueden ser muy útiles. Todo depende de lo que necesites.

En todo caso, recuerda que las temáticas abordadas las puedes encontrar dentro de nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que podrás, en muy poco tiempo, incursionar en el mercado laboral y obtener mejores empleos. ¡Solicita información ahora!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.