Hyperparameter Tuning in Python
Alex Scriven
Data Scientist
Vše, co jsme dosud dělali, bylo neinformované hledání:
Neinformované hledání: Každá iterace ladění hyperparametrů se neučí z předchozích iterací.
To umožňuje paralelizaci práce. Není to příliš efektivní?
Dosavadní postup:

Alternativní přístup:

Základní metodologie informovaného hledání:
Začněte hrubým, náhodným přístupem a postupně zpřesňujte hledání.
Postup:
Krok (3) lze nahradit dalšími náhodnými hledáními před mřížkovým hledáním.
Ladění od hrubého k jemnému má své výhody:
Není třeba ztrácet čas prohledáváním neperspektivních oblastí!
Poznámka: Není informováno na jednom modelu, ale na dávkách
Příklad s následujícími rozsahy hyperparametrů:
max_depth_list od 1 do 65min_sample_list od 3 do 17learn_rate_list 150 hodnot od 0,01 do 150Kolik možných modelů máme?
combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Provedeme náhodné hledání na 500 kombinacích.
Zde je graf hodnot přesnosti:

Které modely byly nejlepší?
Nejlepší výsledky:
| 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 |
Vizualizace hodnot max_depth vs. přesnost:

min_samples_leaf lepší pod hodnotou 8

learn_rate horší nad hodnotou 1,3

Co víme z první iterace:
max_depth mezi 8 a 30learn_rate menší než 1,3min_samples_leaf pravděpodobně menší než 8Co dál? Další náhodné nebo mřížkové hledání s těmito znalostmi!
Poznámka: Toto byla pouze bivariátní analýza. Lze zkoumat více hyperparametrů (3, 4 nebo více!) v jednom grafu, ale to je nad rámec tohoto kurzu.
Hyperparameter Tuning in Python