Aan de slagGa gratis aan de slag

Bayesiaanse hyperparametertuning met Hyperopt

In dit voorbeeld stel je een Bayesiaans hyperparameteroptimalisatieproces in en voer je het uit met het pakket Hyperopt (al voor je geïmporteerd als hp). Je stelt het domein in (vergelijkbaar met het instellen van het raster voor een grid search) en daarna de doelfunctie. Tot slot laat je de optimizer 20 iteraties draaien.

Je moet het domein instellen met de volgende waarden:

  • max_depth met een quniform-verdeling (tussen 2 en 10, in stappen van 2)
  • learning_rate met een uniform-verdeling (0,001 tot 0,9)

Let op: voor deze oefening is de gegevensset verkleind en zijn het aantal hyperopt- en GBM-iteraties teruggebracht. Als je deze methode zelf op je eigen machine probeert, neem dan een groter zoekgebied, meer trials, meer cv's en een grotere gegevensset om dit echt goed te zien werken!

Deze oefening maakt deel uit van de cursus

Hyperparameter Tuning in Python

Cursus bekijken

Oefeninstructies

  • Stel een space-dictionary in op basis van het hierboven genoemde domein.
  • Stel de doelfunctie in met een gradient boosting-classifier.
  • Voer het algoritme uit voor 20 evaluaties (gebruik gewoon het standaard, voorgestelde algoritme uit de dia's).

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren