Ajustarea hiperparametrilor în Python
Alex Scriven
Data Scientist
Foarte similar cu căutarea în grilă:
DAR se selectează aleatoriu pătratele din grilă.
Bengio & Bergstra (2012):
Această lucrare demonstrează empiric și teoretic că încercările alese aleatoriu sunt mai eficiente pentru optimizarea hiperparametrilor decât cele pe o grilă.
Două motive principale:
O căutare în grilă:

Câte modele trebuie rulate pentru o șansă de 95% de a obține un pătrat verde?
Cele mai bune modele:

Dacă selectăm aleatoriu combinații de hiperparametri uniform, să considerăm șansa de a RATA fiecare încercare, pentru a arăta cât de puțin probabilă este aceasta
Încercarea 1 = 0.05 șanse de succes și (1 - 0.05) de ratare
Cu n încercări, avem (1-0.05)^n șanse ca fiecare încercare să rateze locul dorit.
Câte încercări sunt necesare pentru o șansă ridicată (95%) de a nimeri în acea regiune?
Ce înseamnă toate acestea?
Rețineți:
Maximul obținut este limitat de grila definită!
Pentru o comparație corectă cu căutarea în grilă, utilizați același „buget" de modelare
Putem crea un eșantion aleatoriu de combinații de hiperparametri:
# 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]
Putem vizualiza acoperirea căutării aleatorie reprezentând grafic opțiunile de hiperparametri pe axele X și Y.

Observați că există o dispersie largă, dar nu o acoperire profundă?
Ajustarea hiperparametrilor în Python