Was ist die effizienteste Methode zur Optimierung von Hyperparametern beim Scikit-Lernen?

10

Eine Übersicht über den Hyperparameter-Optimierungsprozess in scikit-learn finden Sie hier .

Eine umfassende Rastersuche findet den optimalen Satz von Hyperparametern für ein Modell. Der Nachteil ist, dass die umfassende Rastersuche langsam ist.

Die zufällige Suche ist schneller als die Rastersuche, weist jedoch eine unnötig hohe Varianz auf.

Es gibt auch zusätzliche Strategien in anderen Paketen, einschließlich Scikit-Optimierung , Auto-Sklearn und Scikit-Hyperband .

Was ist die effizienteste Methode (um schnell einigermaßen leistungsfähige Parameter zu finden) für die Optimierung von Hyperparametern beim Scikit-Lernen?

Idealerweise möchte ich Codebeispiele mit Benchmarks bearbeiten.

Brian Spiering
quelle
Ich vermute, dass die Antwort ein wenig vom Modelltyp abhängt. Hattest du eine bestimmte im Sinn?
Ben Reiniger
Innerhalb von scikit-learn können Sie auch scikit-hyperband ausprobieren. Entschuldigung, ich habe momentan keinen Code zum Benchmarking. Es gibt jedoch andere Methoden, die in scikit learn nicht implementiert sind.
Ethan
1
Hyperopt oder die Verwendung des Bayes'schen Ansatzes scheint Kaggle zu dominieren. Und natürlich erleben Sie danach, wie man es nicht immer wirklich tun kann :)
Aditya
Beim Scikit-Lernen verwende ich normalerweise Baumensembles. Baumensembles wären ein guter Ausgangspunkt, da sie eine gute Leistung erbringen und viele Knöpfe zum Drehen haben.
Brian Spiering
1
Interessanterweise haben einige neuere Benchmarks gezeigt, dass zufälliges x2 einige der "schickeren" Methoden übertreffen kann. Ich kann auf einen wirklich guten Artikel / Artikel verlinken, den Sie lesen können. Wenn ich nächste Woche etwas Zeit finde, kann ich Ihre Frage möglicherweise vollständiger beantworten.
Ethan

Antworten:

6

Optimierung ist nicht mein Fachgebiet, aber soweit ich weiß, dreht sich die effiziente und effektive Optimierung von Hyperparametern heutzutage stark um die Erstellung eines Ersatzmodells. Mit zunehmender Komplexität der Modelle werden sie zu einer undurchsichtigeren Black Box. Dies gilt auch für tiefe neuronale Netze und vermutlich komplexe Bäume. Ein Ersatzmodell versucht, den zugrunde liegenden Raum innerhalb dieser Black Box zu regressieren. Basierend auf einer Vielzahl von Abtasttechniken untersuchen sie den Hyperparameterraum und versuchen, eine Funktion zu erstellen, die den tatsächlich zugrunde liegenden Hyperparameterraum darstellt.

Die Bayes'sche Optimierung konzentriert sich auf das Ersatzmodell, und wie dieses Modell aufgebaut ist, ist für BO von entscheidender Bedeutung. Ebenfalls entscheidend für BO ist die Wahl einer guten Verlustfunktion.

Ich denke, die Leistung zwischen Zufallssuche und Bayes'scher Suche variiert von Datensatz zu Datensatz und von Modell zu Modell. Bergstra & Bengio (2012) machten ein starkes Argument für die zufällige Suche über die Rastersuche. Shahriari et al. (2016) sprechen stark für BO. Modellbasierte Hyperband-Strategien können möglicherweise eine bessere Leistung als BO erbringen , insbesondere bei hohen Dimensionen. Es handelt sich jedoch nur um Exploration und nicht um Exploitation. Dies kann leicht zu einem zu frühen Anhalten führen. Es wurden jedoch Anstrengungen unternommen, Hyperband und BO zu kombinieren .

Ich hatte gute Erfolge bei der Scikit-Optimierung, obwohl es einiges nicht implementiert hat. Es ist einfach zu prototypisieren und kann leicht mit scikit-learn verbunden werden.


Bergstra, J. & Bengio, Y. (2012). Zufällige Suche nach Hyperparameteroptimierung. Journal of Machine Learning Research, 13 (Februar), 281-305.

B. Shahriari, K. Swersky, Z. Wang, RP Adams & N. De Freitas (2016). Den Menschen aus der Schleife nehmen: Ein Überblick über die Bayes'sche Optimierung. Proceedings of the IEEE, 104 (1), 148-175.

Alex L.
quelle
2

Sie können sich auto-sklearn ansehen . Dies ist ein automatisiertes Toolkit für maschinelles Lernen, das eine direkte Erweiterung von Scikit-Learn darstellt.

TQA
quelle
2
Sehr interessant. Dies verwendet den Bayes'schen Ansatz zur Optimierung von Hyperparametern unter der Haube @Aditya.
Esmailian