Metode Terinformasi: Statistika Bayesian

Penyetelan Hyperparameter di Python

Alex Scriven

Data Scientist

Pengantar Bayes

 

Aturan Bayes:

Metode statistik yang memakai bukti baru untuk memperbarui keyakinan kita tentang suatu hasil secara iteratif

  • Secara intuitif selaras dengan pencarian yang terinformasi. Membaik seiring lebih banyak bukti.
Penyetelan Hyperparameter di Python

Aturan Bayes

Aturan Bayes berbentuk:

$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$

  • Sisi kiri = probabilitas A, dengan syarat B terjadi. B adalah bukti baru.

    • Ini disebut 'posterior'
  • Sisi kanan adalah cara menghitungnya.

  • P(A) adalah 'prior'. Hipotesis awal tentang kejadian. Berbeda dengan P(A|B); P(A|B) adalah probabilitas dengan bukti baru.
Penyetelan Hyperparameter di Python

Aturan Bayes

 

$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$

  • P(B) adalah 'marginal likelihood', yaitu probabilitas mengamati bukti baru ini
  • P(B|A) adalah 'likelihood', yaitu probabilitas mengamati bukti, dengan syarat kejadian yang kita minati.

Ini mungkin membingungkan, jadi mari gunakan contoh diagnosis medis yang umum.

Penyetelan Hyperparameter di Python

Bayes di Bidang Medis

 

Contoh medis:

  • 5% populasi umum memiliki penyakit tertentu
    • P(D)
  • 10% orang berisiko (predisposed)
    • P(Pre)
  • 20% penderita penyakit tersebut berisiko
    • P(Pre|D)
Penyetelan Hyperparameter di Python

Bayes di Bidang Medis

Berapa probabilitas seseorang mengidap penyakit?

$$ P(D) = 0.05 $$

Ini adalah prior kita karena belum ada bukti.

Berapa probabilitas orang yang berisiko mengidap penyakit?

$$ P(D \mid Pre) = \frac{P(Pre \mid D) \, P(D)}{P(pre)} $$

$$ P(D \mid Pre) = \frac{0.2 \, * 0.05}{0.1} = 0.1 $$

Penyetelan Hyperparameter di Python

Bayes dalam Tuning Hiperparameter

Kita dapat menerapkan logika ini untuk tuning hiperparameter:

  • Pilih kombinasi hiperparameter
  • Bangun model
  • Dapatkan bukti baru (skor model)
  • Perbarui keyakinan dan pilih hiperparameter yang lebih baik di putaran berikutnya

Tuning hiperparameter Bayesian masih baru namun populer untuk tugas tuning yang besar dan kompleks karena efektif menemukan kombinasi hiperparameter optimal dalam situasi ini

Penyetelan Hyperparameter di Python

Tuning Hiperparameter Bayesian dengan Hyperopt

 

Memperkenalkan paket Hyperopt.

Untuk melakukan tuning hiperparameter Bayesian kita perlu:

  1. Menetapkan Domain: Grid kita (dengan sedikit twist)
  2. Menetapkan algoritma optimasi (pakai TPE default)
  3. Fungsi objektif untuk diminimalkan: kita gunakan 1-Accuracy
Penyetelan Hyperparameter di Python

Hyperopt: Menetapkan Domain (grid)

Banyak opsi untuk menyetel grid:

  • Angka sederhana
  • Pilih dari daftar
  • Distribusi nilai

Hyperopt tidak memakai nilai titik pada grid; tiap titik mewakili probabilitas untuk tiap nilai hiperparameter.

Kita akan gunakan distribusi uniform sederhana, namun ada banyak lainnya di dokumentasi.

Penyetelan Hyperparameter di Python

Domain

 

Siapkan grid:

space = {
    'max_depth': hp.quniform('max_depth', 2, 10, 2),
    'min_samples_leaf': hp.quniform('min_samples_leaf', 2, 8, 2),
    'learning_rate': hp.uniform('learning_rate', 0.01, 1, 55),
}
Penyetelan Hyperparameter di Python

Fungsi objektif

Fungsi objektif menjalankan algoritma:

def objective(params):
    params = {'max_depth': int(params['max_depth']),
        'min_samples_leaf': int(params['min_samples_leaf']),
        'learning_rate': params['learning_rate']}
    gbm_clf = GradientBoostingClassifier(n_estimators=500, **params)

best_score = cross_val_score(gbm_clf, X_train, y_train, scoring='accuracy', cv=10, n_jobs=4).mean() loss = 1 - best_score
write_results(best_score, params, iteration) return loss
Penyetelan Hyperparameter di Python

Jalankan algoritma

 

Jalankan algoritma:

best_result = fmin(
            fn=objective,
            space=space,
            max_evals=500, 
            rstate=np.random.default_rng(42),
            algo=tpe.suggest)
Penyetelan Hyperparameter di Python

Ayo berlatih!

Penyetelan Hyperparameter di Python

Preparing Video For Download...