HyperOpt entmystifiziert

So automatisieren Sie die Modelloptimierung mit HyperOpt

Du liebst das Tuning von Modellen? Wenn Ihre Antwort „Ja“ ist, ist dieser Beitrag nicht .

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Ein Cartoon von meinem Opa – Website .

In diesem Blog behandeln wir den äußerst beliebten automatisierten Hyperparameter-Tuning-Algorithmus namens Baumbasierte Parzen-Schätzer (TPE). TPE wird vom Open-Source-Paket HyperOpt unterstützt. Durch die Nutzung von HyperOpt und TPE können Ingenieure für maschinelles Lernen dies tun entwickeln Sie schnell hochoptimierte Modelle ohne manuelles Tuning.

Lassen Sie uns ohne weiteres eintauchen!

HyperOpt ist ein Open-Source-Python-Paket, das einen Algorithmus namens Tree-based Parzen Esimtors (TPE) verwendet, um Modellhyperparameter auszuwählen, die eine benutzerdefinierte Zielfunktion optimieren. Durch einfaches Definieren der funktionalen Form und Grenzen jedes Hyperparameters durchsucht TPE gründlich und doch effizient den komplexen Hyperraum, um Optimum zu erreichen.

TPE ist ein sequentieller Algorithmus, der die bayessche Aktualisierung nutzt und der folgenden Sequenz folgt.

  1. Trainieren Sie ein Modell mit mehreren Sätzen zufällig ausgewählter Hyperparameter, die Zielfunktionswerte zurückgeben.
  2. Unterteilen Sie unsere beobachteten Zielfunktionswerte in „gute“ und „schlechte“ Gruppen, entsprechend einem Schwellenwert-Gamma (γ).
  3. Berechnen Sie die „Vielversprechend“-Punktzahl, die gerecht ist P(x|gut) / P(x|schlecht).
  4. Bestimmen Sie die Hyperparameter, die die Erfolg versprechende Wirkung über Mischungsmodelle maximieren.
  5. Passen Sie unser Modell mit den Hyperparametern aus Schritt 4 an.
  6. Wiederholen Sie die Schritte 2–5, bis ein Abbruchkriterium erreicht ist.

Hier ist eine schnelles Codebeispiel.

Ok, das waren viele große Worte. Lassen Sie uns langsamer werden und wirklich verstehen, was vor sich geht.

1.1 – Unser Ziel

Data Scientists sind beschäftigt. Wir wollen wirklich gute Modelle produzieren, aber auf effiziente und idealerweise „hands-off“ Weise.

Bestimmte Schritte im Lebenszyklus der ML-Modellierung sind jedoch sehr schwer zu automatisieren. Explorative Datenanalyse (EDA) und Feature Engineering beispielsweise sind in der Regel fachspezifisch und erfordern menschliche Intuition. Die Modelloptimierung hingegen ist ein iterativer Prozess, bei dem Computer hervorragende Leistungen erbringen können.

Unser Ziel in diesem Beitrag ist es, zu verstehen, wie Algorithmen genutzt werden können, um den Modelloptimierungsprozess zu automatisieren.

Um uns dabei zu helfen, über dieses Ziel nachzudenken, lassen Sie uns eine Analogie verwenden: Wir sind Piraten, die nach vergrabenen Schätzen suchen. Es ist auch wichtig zu beachten, dass wir sehr effiziente Piraten sind, die versuchen, unsere Zeit für die Suche nach dem vergrabenen Schatz zu minimieren. Wie können wir also den Zeitaufwand für die Suche minimieren? Die Antwort ist Verwenden Sie eine Karte!

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 1: Beispiel für einen 3D-Hyperparameter-Suchraum. Der Standort der Schatzkiste ist ein globales Optimum. Bild vom Autor.

In Abbildung 1 haben wir eine fiktive Karte, die zeigt, wo sich unser Schatz befindet. Nach viel Klettern und Graben wäre es nicht allzu schwer, diesen Schatz zu erreichen, weil wir genau wissen, wo er sich befindet.

Aber was passiert, wenn wir keine Karte haben?

Wenn wir mit dem Tuning eines Modells beauftragt werden, erhalten wir leider keine Karte. Unser Terrain, das dem Hyperparameter-Suchraum entspricht, ist unbekannt. Außerdem ist die Position unseres Schatzes, der dem optimalen Satz von Hyperparametern entspricht, ebenfalls unbekannt.

Lassen Sie uns mit diesem Setup über einige mögliche Wege sprechen, um diesen Raum effizient zu erkunden und einige Schätze zu finden!

1.2 – Mögliche Lösungen

Die ursprüngliche Methode zur Modelloptimierung ist „manuell“ – der Ingenieur testet tatsächlich manuell viele verschiedene Konfigurationen und sieht, welche Hyperparameterkombination das beste Modell ergibt. Dieser Prozess ist zwar informativ, aber ineffizient. Es muss einen besseren Weg geben …

1.2.1 — Gittersuche (am schlechtesten)

Unser erster Optimierungsalgorithmus ist die Rastersuche. Die Rastersuche testet iterativ alle möglichen Kombinationen von Hyperparametern innerhalb eines benutzerdefinierten Rasters.

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 2: Beispiel für ein Rastersuchlayout. Bild vom Autor

Beispielsweise werden wir in Abbildung 2 überall dort, wo Sie einen roten Punkt sehen, unser Modell neu trainieren und evaluieren. Dieses Framework ist ineffizient, weil es verwendet fehlerhafte Hyperparameter wieder. Wenn zum Beispiel Hyperparameter 2 wenig Einfluss auf unsere Zielfunktion hat, werden wir dennoch alle Kombinationen seiner Werte testen, wodurch die erforderliche Anzahl von Iterationen um das 10-fache erhöht wird (in diesem Beispiel).

Aber bevor wir fortfahren, ist es wichtig zu beachten, dass die Rastersuche immer noch ziemlich beliebt ist, da sie bei einem korrekt angegebenen Raster garantiert ein Optimum findet. Wenn Sie sich für die Methode entscheiden, Stellen Sie sicher, dass Sie Ihr Raster transformieren, um die funktionale Form Ihrer Hyperparameter widerzuspiegeln. Zum Beispiel max_depth für a Zufälliger Waldklassifikator eine Ganzzahl ist – lassen Sie es nicht über ein fortlaufendes Leerzeichen suchen. Es ist auch unwahrscheinlich, dass es eine einheitliche Verteilung hat – wenn Sie die funktionale Form Ihres Hyperparameters kennen, transformieren Sie das Gitter, um es widerzuspiegeln.

Zusammenfassend, Die Rastersuche unterliegt dem Fluch der Dimensionalität und berechnet Informationen zwischen Auswertungen neu, ist aber immer noch weit verbreitet.

1.2.2 — Zufallssuche (gut)

Unser zweiter Algorithmus ist die Zufallssuche. Die Zufallssuche probiert zufällige Werte innerhalb eines benutzerdefinierten Rasters aus. Anders als bei der Rastersuche müssen wir nicht jede mögliche Kombination von Hyperparametern testen, was die Effizienz erhöht.

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 3: Beispiel einer Zufallssuche. Bild vom Autor.

Hier ist eine coole Tatsache: Die zufällige Suche findet (im Durchschnitt) eine Top-5-%-Hyperparameterkonfiguration darin 60 Iterationen. Allerdings müssen Sie wie bei der Rastersuche Ihren Suchraum transformieren, um die funktionale Form jedes Hyperparams widerzuspiegeln.

Die Zufallssuche ist eine gute Grundlage für die Hyperparameter-Optimierung.

1.2.3 — Bayes'sche Optimierung (besser)

Unser dritter Kandidat ist unser erster Algorithmus zur sequentiellen modellbasierten Optimierung (SMBO). Der wesentliche konzeptionelle Unterschied zu früheren Techniken ist we Verwenden Sie iterativ frühere Läufe, um zukünftige Explorationspunkte zu bestimmen.

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 4: Bayes'sches Optimierungsbeispiel — src. Bild vom Autor.

Die Bayes'sche Hyperparameter-Optimierung versucht, eine probabilistische Verteilung unseres Hyperparameter-Suchraums zu entwickeln. Von dort aus verwendet es eine Erfassungsfunktion, z. B. die erwartete erwartete Verbesserung, um unseren Hyperraum so umzuwandeln, dass er „durchsuchbarer“ wird. Schließlich verwendet es einen Optimierungsalgorithmus, wie z. B. stochastischen Gradientenabstieg, um die Hyperparameter zu finden, die unsere Erfassungsfunktion maximieren. Diese Hyperparameter werden verwendet, um unser Modell anzupassen, und der Prozess wird bis zur Konvergenz wiederholt.

Die Bayes'sche Optimierung übertrifft in der Regel die Zufallssuche, weist jedoch einige grundlegende Einschränkungen auf, z. B. das Erfordernis numerischer Hyperparameter.

1.2.4 — Baumbasierte Parzen-Schätzer (am besten)

Lassen Sie uns abschließend über den Star der Show sprechen: Tree-Based Parzen Estimators (TPE). TPE ist ein weiterer SMBO-Algorithmus, der in der Regel die grundlegende Bayes'sche Optimierung übertrifft, aber das Hauptverkaufsargument ist, dass er komplexe Hyperparameterbeziehungen über eine Baumstruktur handhabt.

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 5: Beispiel einer hierarchischen Struktur für TPE — src. Bild vom Autor.

Verwenden wir Abbildung 5, um dies zu verstehen Baumstruktur. Hier trainieren wir einen Support Vector Machine (SVM)-Klassifikator. Wir werden zwei Kernel testen: linear und RBF. Eine linear Kernel nimmt aber keinen Breitenparameter RBF tut, also sind wir durch die Verwendung eines verschachtelten Wörterbuchs in der Lage, diese Struktur zu codieren und dadurch den Suchraum einzuschränken.

TPE unterstützt auch kategoriale Variablen, was bei der herkömmlichen Bayes'schen Optimierung nicht der Fall ist.

Schneller Haftungsausschluss, bevor Sie fortfahren, es gibt viele andere Hyperparameter-Tuning-Pakete. Jeder unterstützt eine Vielzahl von Algorithmen, von denen einige Random Forest, Gaußsche Prozesse und genetische Algorithmen umfassen. TPE ist ein sehr beliebter und universeller Algorithmus, aber nicht unbedingt der beste.

Im Allgemeinen ist TPE eine wirklich robuste und effiziente Hyperparameter-Optimierungslösung.

Nachdem wir nun ein allgemeines Verständnis einiger beliebter Hyperparameter-Optimierungsalgorithmen haben, wollen wir uns eingehend mit der Funktionsweise von TPE befassen.

Zurück zu unserer Analogie: Wir sind Piraten, die nach vergrabenen Schätzen suchen habe aber keine karte. Unser Kapitän braucht den Schatz so schnell wie möglich, also müssen wir an strategischen Orten graben, an denen sich mit hoher Wahrscheinlichkeit Schätze befinden, und frühere Ausgrabungen verwenden, um den Ort zukünftiger Ausgrabungen zu bestimmen.

2.1 — Initialisierung

Um zu beginnen, wir Definieren Sie die Einschränkungen unseres Raums. Wie oben erwähnt, haben unsere Hyperparameter oft eine funktionale Form, Max/Min-Werte und eine hierarchische Beziehung zu anderen Hyperparametern. Mit unserem Wissen über unsere ML-Algorithmen und unsere Daten können wir unseren Suchraum definieren.

Als nächstes müssen wir definieren unsere objektive Funktion, die verwendet wird, um zu bewerten, wie „gut“ unsere Hyperparameter-Kombination ist. Einige Beispiele umfassen klassische ML-Verlustfunktionen wie RMSE oder AUC.

Groß! Jetzt, da wir einen begrenzten Suchraum und eine Möglichkeit haben, den Erfolg zu messen, können wir mit der Suche beginnen …

2.2 – Iterative Bayes'sche Optimierung

Bayessche Optimierung ist ein sequentieller Algorithmus, der Punkte im Hyperraum findet, die gemäß einer Zielfunktion mit hoher Wahrscheinlichkeit „erfolgreich“ sind. TPE nutzt die bayessche Optimierung, verwendet jedoch einige clevere Tricks, um die Leistung zu verbessern und die Komplexität des Suchraums zu bewältigen …

2.2.0 – Das konzeptionelle Setup

Der erste Trick ist das Modellieren P(x|y) statt P(y|x)…

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 6: Bedingte Wahrscheinlichkeit, die TPE zu lösen versucht. Bild vom Autor.

Bayes'sche Optimierung sucht typischerweise nach Modellen P(y|x), das ist die Wahrscheinlichkeit eines objektiven Funktionswerts (y), gegebene Hyperparameter (x). TPE macht das Gegenteil – es sieht nach Modell aus P(x|y), das ist die Wahrscheinlichkeit der Hyperparameter (x), gegeben der Zielfunktionswert (y).

Kurz gesagt versucht TPE, die besten Zielfunktionswerte zu finden und dann die zugehörigen Hyperparameter zu bestimmen.

Lassen Sie uns mit diesem sehr wichtigen Setup in den eigentlichen Algorithmus einsteigen.

2.2.1 – Unterteilen Sie unsere Daten in „gute“ und „schlechte“ Gruppen

Denken Sie daran, dass es unser Ziel ist, die besten Hyperparameterwerte gemäß einer objektiven Funktion zu finden. Also, wie können wir nutzen P(x|y) das zu tun?

Zunächst teilt TPE unsere beobachteten Datenpunkte in zwei Gruppen auf: gutbezeichnet g(x), und Badewanne bezeichnet l(x). Die Grenze zwischen gut und schlecht wird durch einen benutzerdefinierten Parameter Gamma (γ) bestimmt, der dem Perzentil der objektiven Funktion entspricht, das unsere Beobachtungen aufteilt (y*).

Also, mit γ = 0.5, unser objektiver Funktionswert, der unsere Beobachtungen aufteilt (y*) wird der Median unserer beobachteten Punkte sein.

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 7: Aufteilung von p(x|y) in zwei Sätze. Bild vom Autor.

Wie in Abbildung 7 gezeigt, können wir formalisieren p(x|y) unter Verwendung des obigen Rahmens. Und um mit der Piraten-Analogie zu rollen …

Piratenperspektive: Betrachtet man die Orte, die wir bereits erkundet haben, listet l(x) Orte mit sehr wenig Schätzen auf und g(x) listet Orte mit vielen Schätzen auf.

2.2.32— Berechnen Sie die „Vielversprechend“-Punktzahl

Zweitens definiert TPE, wie wir eine unbeobachtete Hyperparameterkombination über die auswerten sollen Punktzahl „Vielversprechend“..

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 8: Definition der Erfolgsaussichtsbewertung. Bild vom Autor.

Abbildung 8 definiert unseren vielversprechenden Score (P), was nur ein Verhältnis mit den folgenden Komponenten ist…

  • Zähler: die Wahrscheinlichkeit, einen Satz von Hyperparametern zu beobachten (x), vorausgesetzt, der entsprechende Zielfunktionswert ist „gut"
  • Nenner: die Wahrscheinlichkeit, einen Satz von Hyperparametern zu beobachten (x), vorausgesetzt, der entsprechende Zielfunktionswert ist „Badewanne "

Je größer der „Vielversprechend“-Wert ist, desto wahrscheinlicher sind unsere Hyperparameter x ergibt eine „gute“ Zielfunktion.

Piratenperspektive: Vielversprechend zeigt, wie wahrscheinlich es ist, dass ein bestimmter Ort in unserem Terrain viele Schätze enthält.

Wenn Sie mit der Bayes'schen Optimierung vertraut sind, kurz beiseite, bevor Sie fortfahren. Diese Gleichung fungiert als Erfassungsfunktion und ist proportional zu Erwartete Verbesserung (EI).

2.2.3— Erstellung einer Wahrscheinlichkeitsdichteschätzung

Drittens versucht TPE, die Bewertung der „Vielversprechendkeit“ über zu bewerten Mischungsmodelle. Die Idee von Mischungsmodellen besteht darin, mehrere Wahrscheinlichkeitsverteilungen zu nehmen und sie mithilfe einer Linearkombination zusammenzusetzen – src. Diese kombinierten Wahrscheinlichkeitsverteilungen werden dann verwendet, um Wahrscheinlichkeitsdichteschätzungen zu entwickeln.

Im Allgemeinen ist der Mischungsmodellierungsprozess…

  1. Definieren Sie die Verteilungsart unserer Punkte. Wenn unsere Variable in unserem Fall kategorial ist, verwenden wir eine neu gewichtete kategoriale Verteilung, und wenn sie numerisch ist, verwenden wir eine Gaußsche (dh normale) oder gleichmäßige Verteilung.
  2. Iteriere über jeden Punkt und füge an diesem Punkt eine Verteilung ein.
  3. Summieren Sie die Masse aller Verteilungen, um eine Schätzung der Wahrscheinlichkeitsdichte zu erhalten.

Beachten Sie, dass dieser Prozess für beide Sets einzeln ausgeführt wird l(x) und g(x).

Lassen Sie uns ein Beispiel in Abbildung 9 durchgehen…

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 9: Beispiel für abgeschnittene Gaußsche Verteilungen, die an 3 Hyperparameter-Beobachtungen angepasst sind. Bild vom Autor.

Für jede Beobachtung (blaue Punkte auf der x-Achse) erstellen wir eine Normalverteilung ~N(μ, σ), wobei…

  • μ (mu) ist der Mittelwert unserer Normalverteilung. Sein Wert ist die Position unseres Punktes entlang der x-Achse.
  • σ (Sigma) ist die Standardabweichung unserer Normalverteilung. Sein Wert ist der Abstand zum nächsten Nachbarpunkt.

Wenn Punkte nahe beieinander liegen, ist die Standardabweichung klein und dadurch die Verteilung sehr hoch, und umgekehrt, wenn Punkte auseinander liegen, ist die Verteilung flach (Abbildung 10)…

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 10: Beispiel für den Einfluss der Standardabweichung auf die Form einer Normalverteilung. Bild vom Autor.

Piraten-Perspektive: NA – Piraten sind nicht gut mit gemischten Modellen.

Noch eine kurze Bemerkung, bevor Sie fortfahren: Wenn Sie die Literatur lesen, werden Sie feststellen, dass TPE „abgeschnittene“ Gaußsche verwendet, was einfach bedeutet, dass die Gaußschen durch den Bereich begrenzt sind, den wir in unserer Hyperparameterkonfiguration angeben, anstatt sich bis +/- unendlich zu erstrecken .

2.2.4 — Bestimmen des nächsten zu erkundenden Punktes!

Lassen Sie uns diese Stücke zusammenbringen. Bisher haben wir 1) objektive Funktionsbeobachtungen erfasst, 2) unsere „Vielversprechend“-Formel definiert und 3) eine Wahrscheinlichkeitsdichteschätzung über Mischungsmodelle basierend auf früheren Werten erstellt. Wir haben alle Teile, um einen bestimmten Punkt zu bewerten!

Unser erster Schritt besteht darin, für beide eine durchschnittliche Wahrscheinlichkeitsdichtefunktion (PDF) zu erstellen g(x) und l(x).

Hyperparameter-Hyperparameter-Tuning-Modell-Tuning Maschinelles Lernen Datenwissenschaft Sklearn-Modell mllib Spark Hyperopt-Baum-Parzen-Estimator tpe-baumbasierter Parzen-Esimtator mlflow-Databricks
Abbildung 11: Überlagerung der durchschnittlichen Wahrscheinlichkeitsdichte bei 3 beobachteten Punkten. Bild vom Autor.

Ein Beispielprozess ist in Abbildung 11 dargestellt – die rote Linie ist unser durchschnittliches PDF und ist einfach die Summe aller PDFs dividiert durch die Anzahl der PDFs.

Unter Verwendung des durchschnittlichen PDF können wir die Wahrscheinlichkeit eines beliebigen Hyperparameterwerts erhalten (x) dabei sein g(x) or l(x).

Nehmen wir zum Beispiel an, die beobachteten Werte in Abbildung 11 gehören zur „guten“ Menge, g(x). Basierend auf unserem durchschnittlichen PDF ist es unwahrscheinlich, dass ein Hyperparameterwert von 3.9 oder 0.05 zum „guten“ Satz gehört. Umgekehrt scheint ein Hyperparameterwert von ~1.2 sehr wahrscheinlich zur „guten“ Menge zu gehören.

Das ist jetzt nur eine Hälfte des Bildes. Wir wenden die gleiche Methodik für die „schlechte“ Menge an, l(x). Da wir nach Maximierung suchen g(x) / l(x), Erfolgreiche Punkte sollten wo liegen g(x) ist hoch und l(x) ist niedrig.

Ziemlich cool, oder?

Mit diesen Wahrscheinlichkeitsverteilungen können wir Stichproben aus unseren baumstrukturierten Hyperparametern ziehen und den Satz von Hyperparametern finden, der die „Vielversprechende“ maximiert und es daher wert ist, untersucht zu werden.

Piratenperspektive: Der nächste Ort, den wir graben, ist der Ort, der die (Wahrscheinlichkeit, viele Schätze zu haben) / (Wahrscheinlichkeit, wenig Schätze zu haben) maximiert.

Nachdem Sie nun wissen, wie es funktioniert, finden Sie hier einige praktische Tipps zur Implementierung von TPE über das Open-Source-Paket HyperOpt.

3.1 – Struktur einer HyperOpt-App

Im Allgemeinen gibt es drei Hauptschritte bei der Nutzung von HyperOpt…

  1. Definieren Sie den Suchraum, das sind nur die Bereiche und funktionalen Formen der Hyperparameter, die Sie optimieren möchten.
  2. Definieren Sie die Anpassungsfunktion, der dich ruft model.fit() Funktion bei einem gegebenen Zug/Test-Split.
  3. Definieren Sie die Zielfunktion, Dies ist eine der klassischen Genauigkeitsmetriken wie RMSE oder AUC.

Leider erfordern diese automatisierten Tuning-Methoden immer noch Design-Input des Datenwissenschaftlers – es ist kein völlig kostenloses Mittagessen. Anekdotisch ist TPE jedoch ziemlich robust gegenüber Fehlspezifikationen von Hyperparametern (im Rahmen des Zumutbaren).

3.2— Tipps und Tricks

  • HyperOpt ist über beide parallelisierbar Apache Funken und MongoDB. Wenn Sie mit mehreren Kernen arbeiten, sei es in der Cloud oder auf Ihrem lokalen Computer, kann dies die Laufzeit erheblich verkürzen.
  • Wenn Sie den Optimierungsprozess über Apache Spark parallelisieren, verwenden Sie a SparkTrialsObjekt für Single-Node-ML-Modelle (sklearn) und a Trails Objekt für parallelisierte ML-Modelle (MLlib). Code ist unten.
  • MLflow ist eine Open-Source-Methode zum Verfolgen Ihrer Modellläufe. Es lässt sich leicht in HyperOpt integrieren.
  • Grenzen Sie den Suchraum nicht zu früh ein. Einige Kombinationen von Hyperparametern können überraschend effektiv sein.
  • Das Definieren des Suchraums kann schwierig sein, besonders wenn Sie ihn nicht kennen funktionale Form Ihrer Hyperparameter. Aus persönlicher Erfahrung ist TPE jedoch ziemlich robust gegenüber Fehlspezifikationen dieser funktionellen Formen.
  • Die Wahl einer guten Zielfunktion ist ein langer Weg. Fehler sind in den meisten Fällen nicht gleich Fehler. Wenn ein bestimmter Fehlertyp problematischer ist, stellen Sie sicher, dass Sie diese Logik in Ihre Funktion einbauen.

3.3— Ein Codebeispiel

Hier ist etwas Code zum Ausführen von HyperOpt auf verteilte Weise. Es wurde aus dem Code im Buch angepasst, Machine Learning Engineering in Aktion - hier ist die Git-Repo.

Einige nette Features dieses Snippets beinhalten die Parallelisierung via Apache Funken und Modellprotokollierung über MLflow. Beachten Sie auch, dass dieses Snippet einen sklearn RandomForestRegressor optimiert – Sie müssen das Modell und die Anpassungsfunktion an Ihre Bedürfnisse anpassen.

Und da haben Sie es – HyperOpt in seiner ganzen Pracht!

Um auf die wichtigsten Punkte zu hoffen, lassen Sie uns schnell rekapitulieren.

Hyperparameter-Tuning ist ein notwendiger Teil des ML-Modelllebenszyklus, aber zeitaufwändig. Sequentielle modellbasierte Optimierungsalgorithmen (SMBO) zeichnen sich durch das Durchsuchen komplexer Hyperräume nach Optimum aus und können zur Hyperparameter-Abstimmung angewendet werden. Tree-based Parzen Estimators (TPE) ist ein sehr effizienter SMBO und übertrifft sowohl die Bayes'sche Optimierung als auch die Zufallssuche.

TPE wiederholt die folgenden Schritte, bis ein Abbruchkriterium erreicht ist:

  1. Unterteilen Sie beobachtete Punkte in „gute“ und „schlechte“ Mengen, entsprechend einem Hyperparameter, Gamma.
  2. Passen Sie ein Mischungsmodell sowohl an die „gute“ als auch an die „schlechte“ Menge an, um eine Schätzung der durchschnittlichen Wahrscheinlichkeitsdichte zu entwickeln.
  3. Wählen Sie den Punkt aus, der den „Vielversprechend“-Score optimiert, der Schritt 2 nutzt, um die Wahrscheinlichkeit abzuschätzen, in den „guten“ und „schlechten“ Sätzen zu sein.

Schließlich haben wir noch ein wirklich cooles Code-Snippet, das zeigt, wie man HyperOpt über SparkTrials parallelisiert. Es protokolliert auch alle unsere Iterationen in MLflow.

HyperOpt Demystified Neu veröffentlicht von Quelle https://towardsdatascience.com/hyperopt-demystified-3e14006eb6fa?source=rss—-7f60cf5620c9—4 über https://towardsdatascience.com/feed

<!–

->

Zeitstempel:

Mehr von Blockchain-Berater