Introducere în căutarea aleatorie

Ajustarea hiperparametrilor în Python

Alex Scriven

Data Scientist

Ce știți deja

 

Foarte similar cu căutarea în grilă:

  • Definiți un estimator, hiperparametrii de ajustat și intervalul de valori pentru fiecare.
  • Se stabilesc schema de validare încrucișată și funcția de scor

 

DAR se selectează aleatoriu pătratele din grilă.

Ajustarea hiperparametrilor în Python

De ce funcționează?

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:

  1. Nu toți hiperparametrii sunt la fel de importanți
  2. Un mic truc probabilistic
Ajustarea hiperparametrilor în Python

Un truc probabilistic

O căutare în grilă:

10x10 modele diferite

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

Cele mai bune modele:

10x10 modele diferite

Ajustarea hiperparametrilor în Python

Un truc probabilistic

 

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

    • Încercarea 2 = (1-0.05) x (1-0.05) șanse de a rata intervalul
      • Încercarea 3 = (1-0.05) x (1-0.05) x (1-0.05) șanse de a rata din nou
  • Cu n încercări, avem (1-0.05)^n șanse ca fiecare încercare să rateze locul dorit.

Ajustarea hiperparametrilor în Python

Un truc probabilistic

 

Câte încercări sunt necesare pentru o șansă ridicată (95%) de a nimeri în acea regiune?

  • Avem (1-0.05)^n șanse să ratăm tot.
  • Deci avem (1-(1-0.05)^n) șanse să nimericm acolo
  • Rezolvând 1-(1-0.05)^n >= 0.95 obținem n >= 59
Ajustarea hiperparametrilor în Python

Un truc probabilistic

 

Ce înseamnă toate acestea?

  • Este puțin probabil să ratați complet „zona bună" când alegeți aleatoriu puncte noi
  • O căutare în grilă poate petrece mult timp într-o „zonă proastă", acoperind exhaustiv.
Ajustarea hiperparametrilor în Python

Note importante

 

Rețineți:

  1. Maximul obținut este limitat de grila definită!

  2. Pentru o comparație corectă cu căutarea în grilă, utilizați același „buget" de modelare

Ajustarea hiperparametrilor în Python

Crearea unui eșantion aleatoriu de hiperparametri

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]
Ajustarea hiperparametrilor în Python

Vizualizarea unei căutări aleatoare

Putem vizualiza acoperirea căutării aleatorie reprezentând grafic opțiunile de hiperparametri pe axele X și Y.

grafic de acoperire a căutării aleatoare

Observați că există o dispersie largă, dar nu o acoperire profundă?

Ajustarea hiperparametrilor în Python

Să exersăm!

Ajustarea hiperparametrilor în Python

Preparing Video For Download...