Pengenalan Random Search

Penyetelan Hyperparameter di Python

Alex Scriven

Data Scientist

Yang sudah Anda ketahui

 

Sangat mirip dengan grid search:

  • Tentukan estimator, hiperparameter yang disetel, dan rentang nilai masing-masing.
  • Tetapkan skema cross-validation dan fungsi penilaian.

 

NAMUN kita memilih kotak grid secara acak.

Penyetelan Hyperparameter di Python

Mengapa ini berhasil?

Bengio & Bergstra (2012):

Makalah ini menunjukkan secara empiris dan teoretis bahwa percobaan acak lebih efisien untuk optimasi hiperparameter dibandingkan percobaan pada grid.

Dua alasan utama:

  1. Tidak semua hiperparameter sama pentingnya
  2. Trik probabilitas kecil
Penyetelan Hyperparameter di Python

Trik probabilitas

Grid search:

10x10 berbagai model

Berapa banyak model yang harus dijalankan untuk peluang 95% memperoleh salah satu kotak hijau?

Model terbaik kita:

10x10 berbagai model

Penyetelan Hyperparameter di Python

Trik probabilitas

 

Jika kita memilih kombinasi hiperparameter secara acak dan seragam, pertimbangkan peluang untuk MELEWATKAN semua percobaan—untuk menunjukkan betapa kecilnya peluang itu.

  • Percobaan 1 = peluang sukses 0,05 dan peluang (1 - 0,05) untuk meleset

    • Percobaan 2 = (1-0,05) x (1-0,05) peluang meleset dari rentang
      • Percobaan 3 = (1-0,05) x (1-0,05) x (1-0,05) meleset lagi
  • Dengan n percobaan, peluang semua percobaan meleset dari titik yang diinginkan adalah (1-0,05)^n.

Penyetelan Hyperparameter di Python

Trik probabilitas

 

Berapa banyak percobaan untuk peluang 95% masuk ke wilayah itu?

  • Kita punya peluang (1-0,05)^n untuk melewatkan semuanya.
  • Jadi peluang masuk ke sana adalah 1 - peluang melewatkan semuanya, yaitu (1-(1-0,05)^n)
  • Menyelesaikan 1-(1-0,05)^n >= 0,95 memberi n >= 59
Penyetelan Hyperparameter di Python

Trik probabilitas

 

Apa artinya?

  • Kemungkinan kecil Anda terus melewatkan “wilayah bagus” saat memilih titik secara acak.
  • Grid search bisa lama berada di “wilayah buruk” karena cakupannya menyeluruh.
Penyetelan Hyperparameter di Python

Catatan penting

 

Ingat:

  1. Maksimum tetap bergantung pada grid yang Anda tetapkan.

  2. Untuk perbandingan adil dengan grid search, gunakan “anggaran” pemodelan yang sama.

Penyetelan Hyperparameter di Python

Membuat sampel acak hiperparameter

Kita dapat membuat sampel acak kombinasi hiperparameter sendiri:

# Set some hyperparameter lists
learn_rate_list = np.linspace(0.001,2,150)
min_samples_leaf_list = list(range(1,51))
# Create list of combinations
from itertools import product
combinations_list = [list(x) for x in 
                    product(learn_rate_list, min_samples_leaf_list)]
# Select 100 models from our larger set
random_combinations_index = np.random.choice(
                            range(0,len(combinations_list)), 100, 
                            replace=False)
combinations_random_chosen = [combinations_list[x] for x in 
                            random_combinations_index]
Penyetelan Hyperparameter di Python

Memvisualisasikan Random Search

Kita juga dapat memvisualisasikan cakupan random search dengan memplot pilihan hiperparameter pada sumbu X dan Y.

grafik cakupan random search

Perhatikan sebarannya luas namun tidak mendalam.

Penyetelan Hyperparameter di Python

Ayo berlatih!

Penyetelan Hyperparameter di Python

Preparing Video For Download...