Penyetelan Hyperparameter di Python
Alex Scriven
Data Scientist
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?
Proses sejauh ini:

Cara alternatif:

Metodologi dasar pencarian terinformasikan:
Mulai dengan pendekatan acak yang kasar lalu perhalus secara iteratif.
Prosesnya:
Anda bisa mengganti (3) dengan pencarian acak lanjutan sebelum pencarian grid
Penyetelan kasar ke halus memiliki beberapa keunggulan:
Tidak perlu membuang waktu pada ruang pencarian yang tidak memberi hasil baik!
Catatan: Ini terinformasikan pada batch, bukan satu model
Mari ambil contoh dengan rentang hyperparameter berikut:
max_depth_list antara 1 dan 65min_sample_list antara 3 dan 17learn_rate_list 150 nilai antara 0.01 dan 150Berapa 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
Mari lakukan pencarian acak pada 500 kombinasi saja.
Berikut plot skor akurasi:

Model mana yang bagus?
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 |
Mari visualisasikan nilai max_depth vs skor akurasi:

min_samples_leaf lebih baik di bawah 8

learn_rate lebih buruk di atas 1.3

Yang kita tahu dari iterasi pertama:
max_depth antara 8 dan 30learn_rate kurang dari 1.3min_samples_leaf mungkin kurang dari 8Langkah 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