Hyperparameter Tuning in Python
Alex Scriven
Data Scientist
Heel vergelijkbaar met grid search:
MAAR we kiezen nu willekeurig rasters.
Bengio & Bergstra (2012):
Dit artikel toont empirisch en theoretisch aan dat willekeurige pogingen efficiënter zijn voor hyperparameteroptimalisatie dan grid-pogingen.
Twee hoofdredenen:
Een grid search:

Hoeveel modellen moeten we draaien om 95% kans te hebben op een van de groene vakjes?
Onze beste modellen:

Als we hyperparameter-combinaties uniform willekeurig kiezen, kijk dan naar de kans om ELKE poging te MISSEN, om te laten zien hoe onwaarschijnlijk dat is
Poging 1 = 0,05 kans op succes en (1 - 0,05) om te missen
Met n pogingen is de kans (1-0,05)^n dat elke poging die plek mist.
Hoeveel pogingen voor een hoge (95%) kans om daar in te komen?
Wat betekent dit?
Onthoud:
Het maximum is slechts zo goed als het raster dat je kiest!
Vergelijk eerlijk met grid search: gebruik hetzelfde modelleer-‘budget’.
We kunnen zelf een willekeurige steekproef van hyperparameter-combinaties maken:
# 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]
We kunnen de dekking van random search ook visualiseren door de hyperparameterkeuzes op X- en Y-as te plotten.

Zie je de brede spreiding maar geen diepe dekking?
Hyperparameter Tuning in Python