Ajustarea hiperparametrilor în Python
Alex Scriven
Data Scientist
Până acum, am folosit exclusiv căutarea neinformată:
Căutare neinformată: Fiecare iterație de reglare a hiperparametrilor nu învață din iterațiile anterioare.
Aceasta ne permite să paralelizăm procesul. Dar nu sună foarte eficient?
Procesul de până acum:

O abordare alternativă:

O metodologie de bază pentru căutarea informată:
Începeți cu o abordare aleatorie, grosieră, și rafinați iterativ căutarea.
Procesul este:
Puteti înlocui pasul (3) cu căutări aleatorii suplimentare înainte de căutarea în grilă
Reglarea grosieră la fină prezintă câteva avantaje:
Nu are rost să pierdeți timp pe spații de căutare nepromiţătoare!
Notă: Aceasta nu este informată pe un singur model, ci pe loturi
Exemplu cu următoarele intervale de hiperparametri:
max_depth_list între 1 și 65min_sample_list între 3 și 17learn_rate_list 150 valori între 0.01 și 150Câte modele posibile avem?
combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Efectuăm o căutare aleatorie pe 500 de combinații.
Reprezentăm grafic scorurile de acuratețe:

Care au fost modelele bune?
Rezultate de top:
| 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 |
Vizualizăm valorile max_depth față de scorul de acuratețe:

min_samples_leaf mai bun sub 8

learn_rate mai slab peste 1.3

Ce știm după prima iterație:
max_depth între 8 și 30learn_rate sub 1.3min_samples_leaf probabil sub 8Următorul pas? O nouă căutare aleatorie sau în grilă cu aceste informații!
Notă: Aceasta a fost doar o analiză bivariată. Puteți explora mai mulți hiperparametri (3, 4 sau mai mulți!) pe un singur grafic, dar depășește scopul acestui curs.
Ajustarea hiperparametrilor în Python