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_depthmet een quniform-verdeling (tussen 2 en 10, in stappen van 2)learning_ratemet 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
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(____)