Hyperparameter Tuning in Python
Alex Scriven
Data Scientist
Velmi podobné mřížkovému prohledávání:
Rozdíl: čtverce mřížky se vybírají náhodně.
Bengio & Bergstra (2012):
Tato studie empiricky i teoreticky dokládá, že náhodně zvolené pokusy jsou pro optimalizaci hyperparametrů efektivnější než pokusy na mřížce.
Dva hlavní důvody:
Mřížkové prohledávání:

Kolik modelů je nutné spustit, abychom s 95% pravděpodobností trefili jedno ze zelených políček?
Naše nejlepší modely:

Při rovnoměrném náhodném výběru kombinací uvažujme šanci, že MINEME každý jednotlivý pokus – to ukáže, jak nepravděpodobné to je.
Pokus 1: šance 0,05 na úspěch a (1-0.05) na minutí.
Při n pokusech je šance, že každý pokus mine cílové místo, rovna (1-0.05)^n.
Kolik pokusů je potřeba k 95% pravděpodobnosti, že se do oblasti dostaneme?
Co z toho vyplývá?
Důležité poznámky:
Maximum je stále omezeno nastavenou mřížkou!
Pro spravedlivé srovnání s mřížkovým prohledáváním je nutné zachovat stejný modelovací „rozpočet".
Vlastní náhodný vzorek kombinací hyperparametrů lze vytvořit takto:
# 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]
Pokrytí náhodného prohledávání lze vizualizovat vynesením hodnot hyperparametrů na osy X a Y.

Všimněte si širokého rozptylu, ale nízké hloubky pokrytí.
Hyperparameter Tuning in Python