¿Cuál es el método más eficiente para la optimización de hiperparámetros en scikit-learn?


10

Aquí encontrará una descripción general del proceso de optimización de hiperparámetros en scikit-learn .

La búsqueda exhaustiva de la cuadrícula encontrará el conjunto óptimo de hiperparámetros para un modelo. La desventaja es que la búsqueda exhaustiva en la red es lenta.

La búsqueda aleatoria es más rápida que la búsqueda de cuadrícula, pero tiene una varianza innecesariamente alta.

También hay estrategias adicionales en otros paquetes, incluyendo scikit-Optimize , auto-sklearn y scikit-hyperband .

¿Cuál es el método más eficiente (encontrar rápidamente parámetros razonablemente eficaces) para la optimización de hiperparámetros en scikit-learn?

Idealmente, me gustaría trabajar ejemplos de código con puntos de referencia.


Sospecho que la respuesta dependerá un poco del tipo de modelo. ¿Tenías uno específico en mente?
Ben Reiniger

Dentro de scikit-learn también puedes probar scikit-hyperband. Lo siento, no tengo código para comparar en este momento. Sin embargo, existen otros métodos que no se implementan en scikit learn.
Ethan

1
El hiperopt o el uso del enfoque bayesiano parece dominar el kaggle ... Y, obviamente, la experiencia a partir de entonces, ya que uno no puede hacerlo siempre :)
Aditya

En scikit-learn, generalmente uso conjuntos de árboles. Los conjuntos de árboles serían un buen lugar para comenzar dado que tienden a funcionar bien y tienen muchos botones para girar.
Brian Spiering

1
Curiosamente, algunos puntos de referencia recientes han demostrado que x2 aleatorio puede superar algunos de los métodos "más sofisticados". Puedo enlazar a un artículo / artículo realmente bueno para que lo leas. Además, si encuentro algo de tiempo la próxima semana, podré responder su pregunta de manera más completa.
Ethan

Respuestas:


6

La optimización no es mi campo, pero que yo sepa, la optimización de hiperparámetros eficiente y efectiva en estos días gira en torno a la construcción de un modelo sustituto. A medida que los modelos aumentan en complejidad, se convierten en una caja negra más opaca. Este es el caso de las redes neuronales profundas y de los árboles presumiblemente complejos también. Un modelo sustituto intenta hacer retroceder el espacio subyacente dentro de ese cuadro negro. Basado en una variedad de técnicas de muestreo, sondean el espacio de hiperparámetros e intentan construir una función que represente el verdadero espacio de hiperparámetros subyacente.

La optimización bayesiana se centra en el modelo sustituto y la forma en que se construye este modelo es crucial para BO. También es crucial para BO elegir una buena función de pérdida.

Creo que el rendimiento entre la búsqueda aleatoria y la búsqueda bayesiana varía de un conjunto de datos a otro y de un modelo a otro. Bergstra y Bengio (2012) hicieron un fuerte argumento para la búsqueda aleatoria sobre la búsqueda de cuadrícula. Shahriari y col. (2016) hacen un caso fuerte para BO. Las estrategias de Hiperbanda basadas en modelos pueden tener un mejor rendimiento que BO, especialmente para grandes dimensiones, sin embargo, es puramente exploración, no explotación. Esto puede resultar fácilmente en una parada demasiado temprana. Sin embargo, se han realizado esfuerzos para combinar Hyperband y BO .

He tenido un buen éxito scikit-optimizar, a pesar de que hay bastante poco implementado. Es fácil crear prototipos y puede interactuar fácilmente con scikit-learn.


Bergstra, J. y Bengio, Y. (2012). Búsqueda aleatoria para la optimización de hiperparámetros. Journal of Machine Learning Research, 13 (febrero), 281-305.

Shahriari, B., Swersky, K., Wang, Z., Adams, RP y De Freitas, N. (2016). Sacar al ser humano del círculo: una revisión de la optimización bayesiana. Actas del IEEE, 104 (1), 148-175.


2

Puedes echar un vistazo a auto-sklearn . Es un kit de herramientas de aprendizaje automático que es una extensión directa de scikit-learn.


2
Muy interesante. Esto utiliza el enfoque bayesiano para la optimización de hiperparámetros bajo el capó @Aditya.
Esmailian
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.