ÎncepețiÎncepe gratuit

Reglarea hiperparametrilor Bayesian cu Hyperopt

În acest exemplu vei configura și vei rula un proces de optimizare Bayesiană a hiperparametrilor folosind pachetul Hyperopt (deja importat ca hp). Vei defini domeniul de căutare (similar cu definirea grilei pentru o căutare pe grilă), apoi vei configura funcția obiectiv. În final, vei rula optimizatorul timp de 20 de iterații.

Va trebui să configurezi domeniul folosind valorile:

  • max_depth cu distribuție quniform (între 2 și 10, cu pas de 2)
  • learning_rate cu distribuție uniform (de la 0,001 la 0,9)

Reține că, în scopul acestui exercițiu, procesul a fost redus ca dimensiune a eșantionului de date și ca număr de iterații Hyperopt și GBM. Dacă dorești să încerci această metodă pe cont propriu, pe mașina ta, folosește un spațiu de căutare mai mare, mai multe iterații, mai multe validări încrucișate și un set de date mai mare pentru a vedea cu adevărat această metodă în acțiune!

Acest exercițiu face parte din cursul

Ajustarea hiperparametrilor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Definește un dicționar space folosind domeniul menționat mai sus.
  • Configurează funcția obiectiv folosind un clasificator de tip gradient boosting.
  • Rulează algoritmul pentru 20 de evaluări (folosește algoritmul implicit sugerat din slide-uri).

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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(____)
Editează și rulează codul