Začněte nyníZačněte zdarma

Bayesovské ladění hyperparametrů s Hyperopt

V tomto příkladu nastavíš a spustíš proces bayesovské optimalizace hyperparametrů pomocí balíčku Hyperopt (importovaného jako hp). Nejprve definuješ doménu (podobně jako při nastavování mřížky pro grid search), pak sestavíš účelovou funkci a nakonec spustíš optimalizátor na 20 iterací.

Doménu nastavíš pomocí těchto hodnot:

  • max_depth – rovnoměrné diskrétní rozdělení quniform (od 2 do 10, s krokem 2)
  • learning_rate – spojité rovnoměrné rozdělení uniform (od 0,001 do 0,9)

Poznámka: Pro účely tohoto cvičení byl zmenšen vzorek dat i počet iterací Hyperoptu a GBM. Pokud si tuto metodu chceš vyzkoušet sám/sama na vlastním počítači, zkus větší prohledávací prostor, více pokusů, více křížových validací a větší datovou sadu – pak uvidíš tuto metodu v plné síle!

Toto cvičení je součástí kurzu

Hyperparameter Tuning in Python

Zobrazit kurz

Pokyny k cvičení

  • Nastav slovník space podle výše popsané domény.
  • Sestav účelovou funkci využívající klasifikátor s gradientním boostingem.
  • Spusť algoritmus na 20 vyhodnocení (použij výchozí doporučený algoritmus ze snímků).

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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(____)
Upravit a spustit kód