• belirli algoritmaları (bunlar sezgisel optimizasyon algoritmaları olabilir)* büyük boyutlu problemlere doğrudan uygulamadan evvel daha küçük boyutlu problemlerde farklı parametre değeri kombinasyonlarıyla uygulayarak amaç fonksiyonuna göre en iyi sonucu* üreten/en iyi çözüm süresine* sahip parametre setlerini belirlemektir.

    örneğimiz genetik algoritma olsun. buradaki parametreler;

    popülasyon büyüklüğü
    çaprazlama yöntemi
    çaprazlama oranı
    elitizm oranı
    kromozom seçim yöntemi
    mutasyon yöntemi
    mutasyon yüzdesi
    mutasyon azalma oranı
    “c” değeri
    sonlanma oranı...dır. belirlenecek bütün parametreler için optimum değerlerin araştırılması bilimsel çalışmalarda elde edilen sonuçların gücünü artırmaktadır.
    (bkz: genetik algoritma/@kabahatinbuyugukendisindeolanadam)
  • bu entryde iki konuya değinmek istiyorum. birincisi (bkz: parametre) ile (bkz: hiper parametre)* arasındaki fark. ikincisi birkaç hiper parametre optimizasyonu çeşidi.

    parametre optimizasyonunda bahsedilen genelde "hyperparameter optimization"'dır. bu noktada parametre ile hiper parametre arasındaki farkı belirtmek gerekiyor.

    bir modelin parametrelerinden bahsedilirken model tarafından öğrenilen değişkenleri düşünürken, hiper parametreler model tarafından öğrenilmeyen modele dışarıdan kullanıcı tarafından verilen değişkenlerdir. başlık sahibinin de bahsettiği parametreler, kullanıcı ya da bir optimizasyon tekniği tarafından algoritmaya verilen birer hiper parametredir. örnek verecek olursak:
    - model için kullanabileceğimiz bir (bkz: gauss dağılımı)*ın iki adet parametresi vardır. bunlar mean(ortalama) ve standard deviation(standard sapmadır). bunların hangi değeri alacaklarına model hiper parametre ve data yardımı ile kendi karar verir ve kullanıcı tarafından belirlenmez.
    - (bkz: neural network) veya ensemble* algoritmalardaki learning rate, nearest neighbors*deki k değeri birer hiper parametredir ve modele başlangıçta girdi olarak verilir. verilmediği durumda model mevcudunda olan varsayılan değeri ile çalışır.

    şimdi gelelim modelleme aşamasında doğru hiper parametre girmenin birkaç yoluna. öncelikle hiper parametre seçimi yaparken (bkz: cross validation) kullanmak tavsiye edilir. böylece modelin tek bir dataya bağlı kalıp (bkz: overfit) olması bir nebze olsun önlenir.
    1) deneme yanılma yöntemi
    genelde başlangıç seviyesinde yapılan modeller için izlenen yoldur. kişi geçmişten aşina olduğu parametreler ya da varsayılan olarak verilen parametreler ile modeli çalıştırır. train ve test skorlarına göre hiper parametreleri değiştirerek tekrar tekrar dener. örneğin train ve test dataları arasındaki skor farkı çok fazla ise bu modelin overfit ettiğini gösterebilir. algoritmanıza göre learning rate'i kısmak, ağaç bazlı bir algoritma ise maximum depth'i kısmak daha iyi bir sonuca götürebilir ve denenmelidir.
    2) (bkz: random search)
    veri bilimi dünyasında birazdan bahsedeceğim grid search ile beraber bir standart haline gelmiştir. verilen tekrar sayısına göre değişik hiper parametre kombinasyonlarını rastgele denemek üzerine kurulmuştur. grid search'e göre daha az tekrar denediği için daha hızlı olabilir. ancak, tamamen rastgeleliğe bağlı olduğu için şans faktörü de vardır. örneğin, 1.5 milyar farklı hiper parametre kombinasyonu olan bir modeli bunlardan rastgele 100-200 tanesini deneyerek optimize bir kombinasyon bulmaya çalışmak fazlasıyla iyimserliktir. daha az hiper parametre kombinasyonu olan bir model için denenebilir.
    3) (bkz: grid search)
    mümkün olan bütün kombinasyonların denenmesi üzerine kuruludur. random search ile arasındaki en önemli fark, random search continuous(sürekli) hiper parametre aralıkları alabilirken(ağaç algoritmalarından örnek verecek olursak, ağaç sayısı 50 ile 1000 arasında olsun diyebiliriz.) grid search için distinct(kesitli) değerler girilmesi gerekir(örneğin ağaç sayısı 50, 100 ya da 150 olsun). bu durumda aslında optimize nokta olan 125 ağaç kaçırılabilir. random searchin 125 ağaç deneme şansı iyimser bir tahmin de olsa yeterli tekrar sayısı ile mümkündür.
    4) (bkz: bayes optimizasyonu)*
    random search ve grid search memoryless(hafızasız) yöntemler diyebiliriz. bir önceki denemelerinden ders çıkarmaz ve bir sonraki denemesini tamamen geçmişten bağımsız olarak yapar. bayes optimizasyon ise geçmişten ders alır. iki kelime ile açıklayacak olursak exploration&exploitation* diyebiliriz. yöntem denediği hiper parametre kombinasyonunun bulunduğu çevrede daha iyi skorlara gitmeye çalışır. bunun yanında da bilinmezliğin olduğu kombinasyon çeşitlerine doğru da bir keşfetme eğilimi söz konusudur. bu sebeple lokal optimumlarda takılı kalma olasılığı mevcut olmakla birlikte düşüktür. random search ile aynı sayıda tekrarda geçmişten de ders aldığı için daha iyi bir performans gösterme şansına sahiptir.

    bunun dışında daha detaylı ve bir o kadar eğlenceli reinforcement learning, genetik algoritma ve derin öğrenme* gibi daha ileri yöntemler ile de hiper parametre optimizasyonu yapılabilir. bu yöntemlere geçmeden önce en azından yukarıda bahsettiğim yöntemler denenebilir.
hesabın var mı? giriş yap