Představení náhodného prohledávání

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

Co již znáte

 

Velmi podobné mřížkovému prohledávání:

  • Definujte estimátor, laděné hyperparametry a rozsah jejich hodnot.
  • Nastavte schéma křížové validace a skórovací funkci.

 

Rozdíl: čtverce mřížky se vybírají náhodně.

Hyperparameter Tuning in Python

Proč to funguje?

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:

  1. Ne každý hyperparametr je stejně důležitý.
  2. Malý pravděpodobnostní trik.
Hyperparameter Tuning in Python

Pravděpodobnostní trik

Mřížkové prohledávání:

mřížka 10x10 různých modelů

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

Naše nejlepší modely:

mřížka 10x10 různých modelů

Hyperparameter Tuning in Python

Pravděpodobnostní trik

 

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í.

    • Pokus 2: (1-0.05) × (1-0.05) šance na minutí rozsahu.
      • Pokus 3: (1-0.05) × (1-0.05) × (1-0.05) šance na opětovné minutí.
  • Při n pokusech je šance, že každý pokus mine cílové místo, rovna (1-0.05)^n.

Hyperparameter Tuning in Python

Pravděpodobnostní trik

 

Kolik pokusů je potřeba k 95% pravděpodobnosti, že se do oblasti dostaneme?

  • Šance, že vše mineme, je (1-0.05)^n.
  • Šance, že uspějeme, je tedy (1-(1-0.05)^n).
  • Z 1-(1-0.05)^n >= 0.95 plyne n >= 59.
Hyperparameter Tuning in Python

Pravděpodobnostní trik

 

Co z toho vyplývá?

  • Při náhodném výběru je nepravděpodobné, že bychom „dobrou oblast" dlouho míjeli.
  • Mřížkové prohledávání může strávit mnoho času ve „špatné oblasti", protože ji prochází vyčerpávajícím způsobem.
Hyperparameter Tuning in Python

Důležité poznámky

 

Důležité poznámky:

  1. Maximum je stále omezeno nastavenou mřížkou!

  2. Pro spravedlivé srovnání s mřížkovým prohledáváním je nutné zachovat stejný modelovací „rozpočet".

Hyperparameter Tuning in Python

Vytvoření náhodného vzorku hyperparametrů

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]
Hyperparameter Tuning in Python

Vizualizace náhodného prohledávání

Pokrytí náhodného prohledávání lze vizualizovat vynesením hodnot hyperparametrů na osy X a Y.

graf pokrytí náhodného prohledávání

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

Hyperparameter Tuning in Python

Pojďme procvičovat!

Hyperparameter Tuning in Python

Preparing Video For Download...