LoslegenKostenlos loslegen

Bayessches Hyperparameter-Tuning mit Hyperopt

In diesem Beispiel richtest du einen bayesschen Hyperparameter-Optimierungsprozess mit dem Paket Hyperopt ein (bereits als hp importiert). Du definierst den Suchraum (ähnlich wie das Grid bei einer Grid Search), richtest dann die Zielfunktion ein. Abschließend lässt du den Optimierer über 20 Iterationen laufen.

Du sollst den Suchraum mit folgenden Werten definieren:

  • max_depth mit einer quniform-Verteilung (zwischen 2 und 10, in Schritten von 2)
  • learning_rate mit einer uniform-Verteilung (0,001 bis 0,9)

Beachte: Für diese Übung wurden die Datensatzgröße sowie die Anzahl der Hyperopt- und GBM-Iterationen reduziert. Wenn du diese Methode selbst auf deinem Rechner ausprobierst, teste einen größeren Suchraum, mehr Durchläufe, mehr CVs und eine größere Datensatzgröße, um das Ganze richtig in Aktion zu sehen!

Diese Übung ist Teil des Kurses

Hyperparameter-Tuning in Python

Kurs anzeigen

Anleitung zur Übung

  • Richte ein space-Dictionary anhand des oben genannten Suchraums ein.
  • Richte die Zielfunktion mit einem Gradient-Boosting-Klassifikator ein.
  • Führe den Algorithmus für 20 Auswertungen aus (verwende einfach den standardmäßig empfohlenen Algorithmus aus den Folien).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Set up space dictionary with specified hyperparameters
space = {'max_depth': hp.____('max_depth', ____, ____, ____),'learning_rate': hp.____('learning_rate', ____,____)}

# Set up objective function
def objective(params):
    params = {'max_depth': int(params[____]),'learning_rate': params[____]}
    gbm_clf = ____(n_estimators=100, **params) 
    best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=2, n_jobs=4).mean()
    loss = 1 - ____
    return ____

# Run the algorithm
best = fmin(fn=____,space=space, max_evals=____, rstate=np.random.default_rng(42), algo=tpe.suggest)
print(____)
Code bearbeiten und ausführen