Rastgele Aramaya Giriş

Python'da Hiperparametre Ayarlama

Alex Scriven

Data Scientist

Zaten bildikleriniz

 

Izgara aramasına çok benzer:

  • Bir kestirici, ayarlanacak hiperparametreler ve her biri için değer aralığı tanımlanır.
  • Yine bir çapraz doğrulama şeması ve skor fonksiyonu belirlenir.

 

AMA bunun yerine kareler rastgele seçilir.

Python'da Hiperparametre Ayarlama

Bu neden işe yarar?

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:

  1. Her hiperparametre aynı derecede önemli değildir
  2. Küçük bir olasılık hilesi
Python'da Hiperparametre Ayarlama

Bir olasılık hilesi

Bir ızgara araması:

farklı modellerden 10x10

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

En iyi modellerimiz:

farklı modellerden 10x10

Python'da Hiperparametre Ayarlama

Bir olasılık hilesi

 

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)

    • Deneme 2 = aralığı kaçırma olasılığı (1-0.05) x (1-0.05)
      • Deneme 3 = yine kaçırma olasılığı (1-0.05) x (1-0.05) x (1-0.05)
  • Genel olarak, n denemede istenen noktayı her seferinde ıskalama olasılığı (1-0.05)^n’dir.

Python'da Hiperparametre Ayarlama

Bir olasılık hilesi

 

Peki bu bölgeye girme olasılığının yüksek (%%95) olması için kaç deneme gerekir?

  • Her şeyi kaçırma olasılığı (1-0.05)^n.
  • O halde içeri girme olasılığı = 1 - kaçırma = (1-(1-0.05)^n)
  • 1-(1-0.05)^n >= 0.95 çözülürse n >= 59 elde edilir
Python'da Hiperparametre Ayarlama

Bir olasılık hilesi

 

Tüm bunlar ne anlama geliyor?

  • Rastgele yeni noktalar seçerken “iyi bölgeyi” uzun süre tamamen ıskalama olasılığınız düşüktür.
  • Izgara araması, kapsamı tamamlarken “kötü bir bölgede” çok zaman harcayabilir.
Python'da Hiperparametre Ayarlama

Önemli notlar

 

Unutmayın:

  1. En iyi değer, kurduğunuz ızgara kadar iyidir!

  2. Izgara aramasıyla adil karşılaştırmak için aynı modelleme “bütçesi” gerekir.

Python'da Hiperparametre Ayarlama

Rastgele hiperparametre örneği oluşturma

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]
Python'da Hiperparametre Ayarlama

Rastgele Aramayı Görselleştirme

Rastgele aramanın kapsamını, hiperparametre seçimlerini X ve Y eksenlerinde çizerek görselleştirebiliriz.

rastgele arama kapsama grafiği

Geniş bir saçılım var ama derin kapsama yok, fark ettiniz mi?

Python'da Hiperparametre Ayarlama

Hadi pratik yapalım!

Python'da Hiperparametre Ayarlama

Preparing Video For Download...