¿Qué es la búsqueda en cuadrícula?

Este artículo pretende explicar qué es la búsqueda en cuadrícula y cómo podemos utilizarla para obtener valores óptimos de los hiperparámetros del modelo.

Explicaré todos los conceptos necesarios en términos sencillos junto con la descripción de cómo podemos implementar la búsqueda en cuadrícula en Python.

Foto de Evgeni Tcherkasski en Unsplash

Para simplificar, podemos dividir los aspectos analíticos de un proyecto de ciencia de datos en tres partes:

  1. La primera parte consistiría en la recopilación de los datos necesarios y la ingeniería de las características.

2. La segunda parte giraría en torno a la elección del modelo de aprendizaje automático adecuado.

3. La última parte giraría en torno a la búsqueda de los hiperparámetros óptimos.

Entendamos mejor la tercera parte porque no sólo afinar los hiperparámetros se considera un arte negro, sino que también es una tarea tediosa y requiere tiempo y esfuerzo.

Este artículo pretende explicar qué es la búsqueda en cuadrícula y cómo podemos utilizarla para obtener los valores óptimos de los hiperparámetros del modelo.

Aquí es donde la búsqueda en cuadrícula puede ser extremadamente útil porque puede ayudarnos a determinar los valores óptimos de una manera elegante.

¿Qué es un hiperparámetro?

Un modelo de aprendizaje automático tiene múltiples parámetros que no son entrenados por el conjunto de entrenamiento. Estos parámetros controlan la precisión del modelo. Por lo tanto, los hiperparámetros son particularmente importantes en un proyecto de ciencia de datos.

Los hiperparámetros se configuran por adelantado y son proporcionados por la persona que llama al modelo antes de que éste sea entrenado.

Como ejemplo, la tasa de aprendizaje de una red neuronal es un hiperparámetro porque es establecido por la persona que llama antes de que los datos de entrenamiento sean alimentados al modelo. Por otro lado, los pesos de una red neuronal no son sus hiperparámetros porque son entrenados por el conjunto de datos de entrenamiento.

Además, considere el modelo de clasificación de vectores de soporte (SVC) que se utiliza para clasificar conjuntos de datos. Hay una serie de hiperparámetros que el modelo requiere.

Por lo tanto, la versión de la biblioteca scikit-learn de SVC se puede configurar con un gran número de hiperparámetros, algunos de los parámetros comunes son:

  1. C: Este es un parámetro de regulación
  2. Kernel: Podemos establecer el parámetro de kernel como lineal, poli, rbf, sigmoide, precomputado o proporcionar nuestro propio callable.
  3. Grado: Podemos pasar un grado personalizado para soportar el parámetro del kernel poly.
  4. Gamma: Es el coeficiente para el parámetro del kernel rbf, poly y sigmoide.
  5. Max_Iter: Es el número máximo de iteraciones para el solucionador.

Consideremos que queremos utilizar el modelo SVC (por la razón que sea). Establecer los valores óptimos de los hiperparámetros puede ser un reto y demandar recursos. Imagínese cuántas permutaciones necesitamos para determinar los mejores valores de los parámetros.

Aquí es donde entra en juego la búsqueda en cuadrícula.

¿Qué es la búsqueda en cuadrícula?

La búsqueda en cuadrícula es una técnica de ajuste que intenta calcular los valores óptimos de los hiperparámetros. Es una búsqueda exhaustiva que se realiza sobre los valores específicos de los parámetros de un modelo. El modelo también se conoce como estimador.

El ejercicio de búsqueda en cuadrícula puede ahorrarnos tiempo, esfuerzo y recursos.

Implementación en Python

Podemos utilizar la búsqueda en cuadrícula en Python realizando los siguientes pasos:

Instalar la librería sklearn

pip install sklearn

Importar la librería sklearn

from sklearn.model_selection import GridSearchCV

Importar tu modelo

from sklearn.svm import SVC

Crear un diccionario de hiperparámetros

Este es el paso clave.

Consideremos que queremos encontrar los valores óptimos de los hiperparámetros para:

  • kernal: Queremos que el modelo se entrene con los siguientes kernels y nos dé el mejor valor entre los valores lineales, poli, rbf, sigmoides y precalculados
  • C: queremos que el modelo pruebe los siguientes valores de C:
  • max_iter: queremos que el modelo utilice los siguientes valores de max_iter: y nos dé el mejor valor.

Podemos crear el diccionario necesario:

parameters = , 
'C': ,
'max_iter': }]

Instale GridSearchCV y pase los parámetros

clf = GridSearchCV(
SVC(), parameters, scoring='accuracy'
)
clf.fit(X_train, y_train)

Nota: decidimos utilizar la medida de puntuación de precisión para evaluar el rendimiento.

Por último, imprime los mejores parámetros:

print(clf.best_params_)

Eso es todo.

Ahora se nos presentarán los valores óptimos de los hiperparámetros.

Los parámetros seleccionados son los que maximizan la puntuación de precisión.

Resumen

En este artículo se ha explicado cómo utilizar la Búsqueda en Cuadrícula para obtener hiperparámetros óptimos para un modelo de aprendizaje automático.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.