Pencarian Terinformasikan: Kasar ke Halus

Penyetelan Hyperparameter di Python

Alex Scriven

Data Scientist

Pencarian Terinformasikan vs Tidak Terinformasikan

 

Sejauh ini semua yang kita lakukan adalah pencarian tidak terinformasikan:

Pencarian tidak terinformasikan: Setiap iterasi penyetelan hyperparameter tidak belajar dari iterasi sebelumnya.

Ini yang memungkinkan kita memparalelkan pekerjaan. Namun ini terdengar kurang efisien?

Penyetelan Hyperparameter di Python

Terinformasikan vs Tidak Terinformasikan

Proses sejauh ini:

peta proses tidak terinformasikan

Cara alternatif:

peta proses terinformasikan

Penyetelan Hyperparameter di Python

Penyetelan Kasar ke Halus

Metodologi dasar pencarian terinformasikan:

Mulai dengan pendekatan acak yang kasar lalu perhalus secara iteratif.

Prosesnya:

  1. Pencarian acak
  2. Temukan area menjanjikan
  3. Pencarian grid di area yang lebih kecil
  4. Lanjutkan hingga skor optimal diperoleh

Anda bisa mengganti (3) dengan pencarian acak lanjutan sebelum pencarian grid

Penyetelan Hyperparameter di Python

Mengapa Kasar ke Halus?

Penyetelan kasar ke halus memiliki beberapa keunggulan:

  • Memanfaatkan kelebihan pencarian grid dan acak.
    • Pencarian lebar di awal
    • Pencarian lebih dalam setelah Anda tahu area yang berpotensi baik
  • Waktu dan komputasi lebih efektif sehingga iterasi lebih cepat

Tidak perlu membuang waktu pada ruang pencarian yang tidak memberi hasil baik!

Catatan: Ini terinformasikan pada batch, bukan satu model

Penyetelan Hyperparameter di Python

Menerapkan Kasar ke Halus

Mari ambil contoh dengan rentang hyperparameter berikut:

  • max_depth_list antara 1 dan 65
  • min_sample_list antara 3 dan 17
  • learn_rate_list 150 nilai antara 0.01 dan 150

Berapa banyak model yang mungkin?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Penyetelan Hyperparameter di Python

Memvisualisasikan Kasar ke Halus

Mari lakukan pencarian acak pada 500 kombinasi saja.

Berikut plot skor akurasi:

plot kerapatan akurasi model

Model mana yang bagus?

Penyetelan Hyperparameter di Python

Memvisualisasikan Kasar ke Halus

Hasil teratas:

max_depth min_samples_leaf learn_rate accuracy
10 7 0.01 96
19 7 0.023355705 96
30 6 1.038389262 93
27 7 1.11852349 91
16 7 0.597651007 91
Penyetelan Hyperparameter di Python

Memvisualisasikan Kasar ke Halus

Mari visualisasikan nilai max_depth vs skor akurasi:

scatter plot max depth vs skor akurasi

Penyetelan Hyperparameter di Python

Memvisualisasikan Kasar ke Halus

min_samples_leaf lebih baik di bawah 8

scatter plot min samples leaf vs skor akurasi

learn_rate lebih buruk di atas 1.3

scatter plot learn rate vs skor akurasi

Penyetelan Hyperparameter di Python

Langkah berikutnya

Yang kita tahu dari iterasi pertama:

  • max_depth antara 8 dan 30
  • learn_rate kurang dari 1.3
  • min_samples_leaf mungkin kurang dari 8

Langkah berikutnya? Pencarian acak atau grid lagi dengan pengetahuan ini!

Catatan: Ini hanya analisis bivariat. Anda bisa mengeksplorasi banyak hyperparameter (3, 4, atau lebih!) dalam satu grafik, tetapi itu di luar cakupan kursus ini.

Penyetelan Hyperparameter di Python

Ayo berlatih!

Penyetelan Hyperparameter di Python

Preparing Video For Download...