Quelle est la méthode la plus efficace pour l'optimisation hyperparamétrique dans scikit-learn?

10

Un aperçu du processus d'optimisation des hyperparamètres dans scikit-learn est ici .

Une recherche exhaustive dans la grille trouvera l'ensemble optimal d'hyperparamètres pour un modèle. L'inconvénient est que la recherche exhaustive de la grille est lente.

La recherche aléatoire est plus rapide que la recherche dans la grille mais présente une variance inutilement élevée.

Il existe également des stratégies supplémentaires dans d'autres packages, y compris scikit-optimise , auto-sklearn et scikit-hyperband .

Quelle est la méthode la plus efficace (trouver rapidement des paramètres raisonnablement performants) pour l'optimisation hyperparamétrique dans scikit-learn?

Idéalement, j'aimerais travailler avec des exemples de code avec des benchmarks.

Brian Spiering
la source
Je soupçonne que la réponse dépendra un peu du type de modèle. En aviez-vous un en particulier?
Ben Reiniger
Dans scikit-learn, vous pouvez également essayer scikit-hyperband. Désolé, je n'ai pas de code à comparer pour le moment. Il existe cependant d'autres méthodes qui ne sont pas implémentées dans scikit learn.
Ethan
1
Hyperopt ou utiliser l'approche bayésienne semble dominer kaggle .. Et évidemment l'expérience par la suite car on ne peut pas toujours le faire toujours :)
Aditya
Dans scikit-learn, j'utilise généralement des ensembles d'arbres. Les ensembles d'arbres seraient un bon point de départ, car ils ont tendance à bien fonctionner et ont de nombreux boutons à tourner.
Brian Spiering
1
Fait intéressant, certains benchmarks récents ont montré que le x2 aléatoire peut surpasser certaines des méthodes "les plus sophistiquées". Je peux créer un lien vers un très bon article / article à lire. De plus, si je trouve un peu de temps la semaine prochaine, je pourrai peut-être répondre plus complètement à votre question.
Ethan

Réponses:

6

L'optimisation n'est pas mon domaine, mais pour autant que je sache, l'optimisation efficace et efficace des hyper-paramètres de nos jours tourne fortement autour de la construction d'un modèle de substitution. À mesure que la complexité des modèles augmente, ils deviennent une boîte noire plus opaque. C'est le cas des réseaux neuronaux profonds et des arbres vraisemblablement complexes également. Un modèle de substitution tente de régresser l'espace sous-jacent dans cette boîte noire. Basé sur une variété de techniques d'échantillonnage, ils sondent l'espace hyperparamétrique et tentent de construire une fonction qui représente le véritable espace hyperparamétrique sous-jacent.

L'optimisation bayésienne se concentre sur le modèle de substitution et la façon dont ce modèle est construit est cruciale pour BO. Il est également crucial pour BO de choisir une bonne fonction de perte.

Je pense que les performances entre la recherche aléatoire et la recherche bayésienne varient d'un ensemble de données à l'autre et d'un modèle à l'autre. Bergstra et Bengio (2012) ont avancé un argument solide en faveur de la recherche aléatoire sur la recherche dans la grille. Shahriari et al. (2016) plaident fortement en faveur de BO. Les stratégies Hyperband basées sur des modèles peuvent potentiellement être plus performantes que BO, en particulier pour les dimensions élevées, mais il s'agit uniquement d'exploration, pas d'exploitation. Cela peut facilement entraîner un arrêt trop tôt. Cependant, des efforts ont été faits pour combiner Hyperband et BO .

J'ai eu un bon succès avec scikit-optimise, malgré le fait qu'il soit un peu non implémenté. Il est facile de créer un prototype avec et peut facilement s'interfacer avec scikit-learn.


Bergstra, J. et Bengio, Y. (2012). Recherche aléatoire pour l'optimisation hyperparamétrique. Journal of Machine Learning Research, 13 (février), 281-305.

Shahriari, B., Swersky, K., Wang, Z., Adams, RP, et De Freitas, N. (2016). Sortir l'humain de la boucle: une revue de l'optimisation bayésienne. Actes de l'IEEE, 104 (1), 148-175.

Alex L
la source
2

Vous pouvez jeter un œil à l' auto-apprentissage . Il s'agit d'une boîte à outils d'apprentissage automatique automatisé qui est une extension directe de scikit-learn.

TQA
la source
2
Très intéressant. Celui-ci utilise l'approche bayésienne pour l'optimisation hyperparamétrique sous le capot @Aditya.
Esmailian