Penyetelan Hyperparameter Bayesian dengan Hyperopt
Dalam contoh ini Anda akan menyiapkan dan menjalankan proses optimasi hyperparameter berbasis Bayesian menggunakan paket Hyperopt (sudah diimpor sebagai hp). Anda akan menyiapkan domain (mirip dengan menyiapkan grid untuk grid search), kemudian menyiapkan fungsi objektif. Terakhir, Anda akan menjalankan optimizer selama 20 iterasi.
Anda perlu menyiapkan domain dengan nilai:
max_depthmenggunakan distribusi quniform (antara 2 dan 10, bertambah 2)learning_ratemenggunakan distribusi uniform (0,001 hingga 0,9)
Perhatikan bahwa untuk keperluan latihan ini, ukuran sampel data serta jumlah iterasi hyperopt dan GBM telah dikurangi. Jika Anda mencoba metode ini sendiri di mesin Anda, cobalah ruang pencarian yang lebih besar, lebih banyak percobaan, lebih banyak CV, dan ukuran himpunan data yang lebih besar agar benar-benar melihatnya beraksi!
Latihan ini adalah bagian dari kursus
Penyetelan Hyperparameter di Python
Petunjuk latihan
- Siapkan dictionary
spacemenggunakan domain yang disebutkan di atas. - Siapkan fungsi objektif menggunakan gradient boosting classifier.
- Jalankan algoritme untuk 20 evaluasi (gunakan saja algoritme default yang disarankan pada slide).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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(____)