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.
la source
Réponses:
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.
la source
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.
la source