Python'da Hiperparametre Ayarlama
Alex Scriven
Data Scientist
Izgara aramasına çok benzer:
AMA bunun yerine kareler rastgele seçilir.
Bengio & Bergstra (2012):
Bu makale, hiperparametre optimizasyonunda rastgele seçilen denemelerin ızgara üzerindeki denemelerden daha verimli olduğunu deneysel ve teorik olarak gösterir.
İki ana neden:
Bir ızgara araması:

Yeşil karelerden birini elde etme olasılığı %%95 olsun istiyorsak kaç model çalıştırmalıyız?
En iyi modellerimiz:

Hiperparametre kombinasyonlarını eşit olasılıkla rastgele seçersek, ne kadar olasılıkla HER denemeyi ISKALAYACAĞIMIZI düşünelim; bunun ne kadar olası olmadığını görelim.
Deneme 1 = başarı olasılığı 0.05 ve kaçırma olasılığı (1 - 0.05)
Genel olarak, n denemede istenen noktayı her seferinde ıskalama olasılığı (1-0.05)^n’dir.
Peki bu bölgeye girme olasılığının yüksek (%%95) olması için kaç deneme gerekir?
Tüm bunlar ne anlama geliyor?
Unutmayın:
En iyi değer, kurduğunuz ızgara kadar iyidir!
Izgara aramasıyla adil karşılaştırmak için aynı modelleme “bütçesi” gerekir.
Kendi rastgele hiperparametre kombinasyon örneğimizi oluşturabiliriz:
# 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]
Rastgele aramanın kapsamını, hiperparametre seçimlerini X ve Y eksenlerinde çizerek görselleştirebiliriz.

Geniş bir saçılım var ama derin kapsama yok, fark ettiniz mi?
Python'da Hiperparametre Ayarlama