Zacznij terazZacznij za darmo

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

Zobacz kurs

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(____)
Edytuj i uruchom kod