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_depthmit einer quniform-Verteilung (zwischen 2 und 10, in Schritten von 2)learning_ratemit 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
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(____)