Bayesowskie dostrajanie hiperparametrów z Hyperopt
W tym ćwiczeniu skonfigurujesz i uruchomisz bayesowski proces optymalizacji hiperparametrów z użyciem pakietu Hyperopt (zaimportowanego już jako hp). Najpierw zdefiniujesz przestrzeń przeszukiwań (podobnie jak siatkę w grid search), potem funkcję celu, a na końcu uruchomisz optymalizator na 20 iteracjach.
Przestrzeń przeszukiwań zdefiniuj przy użyciu następujących wartości:
max_depth– rozkład quniform (od 2 do 10, z krokiem 2)learning_rate– rozkład uniform (od 0,001 do 0,9)
Uwaga: na potrzeby tego ćwiczenia zmniejszono rozmiar próbki danych oraz liczbę iteracji Hyperopt i GBM. Jeśli chcesz samodzielnie wypróbować tę metodę na własnym komputerze, użyj większej przestrzeni przeszukiwań, większej liczby prób, foldów walidacji krzyżowej i większego zbioru danych – żeby naprawdę zobaczyć tę metodę w działaniu!
To ćwiczenie jest częścią kursu
Strojenie hiperparametrów w Pythonie
Instrukcje do ćwiczenia
- Zdefiniuj słownik
space, korzystając z opisanej powyżej przestrzeni przeszukiwań. - Skonfiguruj funkcję celu, używając klasyfikatora opartego na gradient boostingu.
- Uruchom algorytm na 20 ewaluacjach (użyj domyślnego, sugerowanego algorytmu ze slajdów).
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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(____)