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
Pokyny k cvičení
- Nastav slovník
spacepodle 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(____)