Grid search cv: optimizando hiperparámetros para mejores modelos

hace 2 años

Valoración: 3.98 (904 votos)

En cualquier proyecto de Machine Learning, entrenamos diferentes modelos en un conjunto de datos y seleccionamos el que ofrece el mejor rendimiento. Sin embargo, siempre hay margen de mejora, ya que no podemos asegurar que ese modelo sea el óptimo para el problema. Nuestro objetivo es mejorar el modelo de todas las maneras posibles. Un factor importante en el rendimiento de estos modelos son sus hiperparámetros; una vez que establecemos valores apropiados para estos, el rendimiento puede mejorar significativamente. En este artículo, descubriremos cómo encontrar valores óptimos para los hiperparámetros de un modelo utilizando GridSearchCV.

Índice

¿Qué es GridSearchCV ?

GridSearchCV es un proceso de ajuste de hiperparámetros para determinar los valores óptimos de un modelo dado. Como se mencionó, el rendimiento de un modelo depende en gran medida del valor de sus hiperparámetros. No hay forma de saber de antemano cuáles son los mejores valores, por lo que, idealmente, debemos probar todos los valores posibles para encontrar los óptimos. Hacer esto manualmente llevaría mucho tiempo y recursos; por eso usamos GridSearchCV para automatizar el ajuste.

GridSearchCV es una función que viene en el paquete model_selectionde Scikit-learn (o SK-learn). Necesitamos tener la biblioteca Scikit-learn instalada. Esta función ayuda a recorrer hiperparámetros predefinidos y ajustar nuestro estimador (modelo) en el conjunto de entrenamiento. Al final, podemos seleccionar los mejores parámetros de la lista.

¿Cómo funciona GridSearchCV ?

Como se mencionó, pasamos valores predefinidos para los hiperparámetros a la función GridSearchCV. Lo hacemos definiendo un diccionario donde mencionamos un hiperparámetro en particular junto con los valores que puede tomar. Aquí hay un ejemplo:

{ 'C': [0.1, 1, 10, 100, 1000], 'gamma': [1, 0.1, 0.01, 0.001, 0.0001], 'kernel': ['rbf','linear',igmoid'] }

Aquí, C, gamma y kernel son algunos hiperparámetros de un modelo SVM. Los demás hiperparámetros se establecerán en sus valores predeterminados.

GridSearchCV prueba todas las combinaciones de valores en el diccionario y evalúa el modelo para cada combinación usando el método de validación cruzada. Después de usar esta función, obtenemos la precisión/pérdida para cada combinación de hiperparámetros y podemos elegir la que tenga el mejor rendimiento.

Cómo usar GridSearchCV

En esta sección, veremos cómo usar GridSearchCV y cómo mejora el rendimiento del modelo. Entrenaremos el modelo dos veces: una sin usar GridSearchCV (con los hiperparámetros predeterminados) y otra usando GridSearchCV para encontrar los valores óptimos para el conjunto de datos. Usaremos el famoso conjunto de datos Breast Cancer Wisconsin (Diagnostic), que importamos directamente de Scikit-learn.

Los argumentos de la función GridSearchCV son:

sklearn.model_selection.GridSearchCV(estimator, param_grid,scoring=None, n_jobs=None, iid='deprecated', refit=True, cv=None, verbose=0, pre_dispatch='2n_jobs', error_score=nan, return_train_score=False)

Describiremos brevemente algunos parámetros; el resto se puede consultar en la documentación original:

  • estimator : El modelo para el cual se quieren comprobar los hiperparámetros.
  • param_grid : El diccionario con los hiperparámetros a probar.
  • scoring : La métrica de evaluación a usar.
  • cv : Número de validaciones cruzadas.
  • verbose : Se puede establecer en 1 para obtener información detallada al ajustar los datos.
  • n_jobs : Número de procesos a ejecutar en paralelo. Si es -1, usará todos los procesadores disponibles.

Al usar la validación cruzada, reservamos una parte de los datos para evaluar el modelo. La validación cruzada se puede realizar de varias maneras. La más sencilla es usar el 70% de los datos para entrenamiento y el 30% restante para evaluación. Para evitar el sobreajuste, necesitamos datos distintos para entrenamiento y evaluación. También se utilizan otras técnicas, como la validación cruzada k-fold.

La búsqueda en cuadrícula (Grid Search) es un método para la optimización de hiperparámetros. Con un modelo dado (por ejemplo, una CNN) y un conjunto de datos de prueba, es un método para encontrar la combinación óptima de hiperparámetros (un ejemplo es la tasa de aprendizaje del optimizador). En este caso, tenemos varios modelos, cada uno con un conjunto diferente de hiperparámetros. Cada combinación de parámetros que corresponde a un único modelo se encuentra en un punto de la "cuadrícula". El objetivo es entrenar y evaluar cada uno de estos modelos utilizando validación cruzada, por ejemplo. Luego, se elige el que tuvo el mejor rendimiento.

Diferencia entre parámetro e hiperparámetro

Parámetro Hiperparámetro
Los parámetros de configuración del modelo son internos al modelo. Los hiperparámetros se especifican explícitamente y controlan el proceso de entrenamiento.
Las predicciones requieren el uso de parámetros. La optimización del modelo necesita el uso de hiperparámetros.
Se establecen durante el entrenamiento del modelo. Se establecen manualmente antes del inicio del entrenamiento.
Es interno al modelo. Es externo al modelo.
Son aprendidos y establecidos por el modelo. Son establecidos manualmente por un ingeniero/practicante de Machine Learning.

Grid Search CV y la creación de un currículum (CV) excepcional

Si bien GridSearchCV es una herramienta poderosa en Machine Learning, la creación de un currículum vitae (CV) excepcional también requiere un proceso de optimización. Al igual que GridSearchCV busca la mejor configuración de hiperparámetros, debes buscar la mejor presentación de tus habilidades y experiencias para destacar entre los candidatos. Aquí te damos algunos consejos:

  1. Elige el formato adecuado : Un formato claro, conciso y fácil de leer es crucial.
  2. Incluye tu nombre y datos de contacto : Asegúrate de que sean fáciles de encontrar y correctos.
  3. Adapta tu CV a cada puesto : Resalta las habilidades y experiencias más relevantes para el empleo al que te postulas.
  4. Agrega un resumen o objetivo : Una breve descripción de tus habilidades y aspiraciones profesionales.
  5. Enumera tus habilidades blandas y duras : Incluye tanto las habilidades técnicas como las interpersonales.
  6. Detalla tu historial profesional : Describe tus responsabilidades y logros en cada puesto anterior con verbos de acción.
  7. Incluye una sección de educación : Especifica tus títulos, calificaciones y reconocimientos académicos.
  8. Considera agregar secciones opcionales : Como proyectos personales, voluntariado o idiomas.

Recuerda que tu CV es tu carta de presentación; por lo tanto, debe estar perfectamente optimizado para causar una buena impresión y conseguir una entrevista.

Tanto en el entorno del Machine Learning como en el de la búsqueda de empleo, la optimización es clave. GridSearchCV nos ayuda a mejorar nuestros modelos, y un CV bien estructurado y adaptado nos ayuda a mejorar nuestras posibilidades de conseguir el trabajo deseado.

Subir