şükela:  tümü | bugün
  • machine learningde sikca kullanilan yaklasimlardan biridir. yamulmuyorsam ilk olarak doksanlarin ikinci yarisinda friedman tarafindan ortaya atilmistir.

    en bilinen boosting algoritmalari icin,
    (bkz: adaboost)
    (bkz: logitboost)
    (bkz: brownboost)
    (bkz: treeboost)
  • efenim boosting modelin kendine yakışanı tahmin etmesidir. yok bu o değildi. boosting ensemble denilen grup halindeki öğrencilerin birleştirilerek tek bir modelin elde edildiği yöntemdir. şimdi biraz başa dönerek ilerleyelim. öncelikle ensemble tam olarak nedir?

    ensemble 2'den fazla model kullanarak (ki bu modellere weak learner - zayıf öğrenici denir) yeni ve güçlü (robust) birleşik bir (tek bir model) model elde etmeye yarayan bir tekniktir.

    ensemble yöntemleri biraz açmak gerekirse bagging ve boosting olarak iki yeni kavram karşımıza çıkıyor.

    ama bunun öncesinde başka bir sorun var. neden ensemble modele ihtiyaç duyuyoruz?

    temelde sorun tam olarak şu:
    hata = yanlılık + varyans
    (error = bias + variance)

    derdimizi görselleştirmek istersek eğer tam olarak bu.
    farklı bir görsel ile tekrar bakalım. daha iyi bir model elde etmek için varyans ile mi savaşayım yoksa yanlılık ile mi sorusuna yanıt araken bagging kavramı ortaya çıkıyor. ne yapıyor peki bu bagging?

    bootstrap aggregation a.k.a bagging'i leo breiman bagging predictors makalesinde şöyle açıklıyor:

    "bagging predictors is a method for generating multiple versions of a predictor and using these to get an aggregated predictor."

    elinizdeki veriden bootstrap ile iadeli örneklem çekiyorsunuz ve her bir örneklem ile bir model kuruyorsunuz aslında. bagging'in bootstrap'i tam olarak bunu yapıyor. aggregation kısmında da sen bu örneklemleri aldın ya bana onlarla model kur sonuçları da kendi arasında oyla, en çok oy alan çıktıyı benim tüm modelimin çıktısı olarak belirle diyor şekilde görüldüğü gibi. bu sayede modelin varyansı düşüyor ki bu da aşırı öğrenme (overfitting) durumunu azaltıyor. yine de yanlılığa bir çözüm bulamadık henüz.

    ben hem yanlılığı hem de varyansı düşüreyim diyenleri şöyle alalım: boosting.

    pek çok boosting tipi var aslında ama ben boosting denince genelde akla gelen adaboost algoritmasından bahsedeceğim. yine amaç zayıf öğrenicileri kullanarak güçlü bir öğrenici elde etmek. bunu yaparken de modelleri paralel olarak değil de sıralı olarak kuruyor. bir modelin çıktısı bir sonraki modelin girdisi olacak şekilde çalışıyor yani. bunu da şu şekilde görselleştirirsek eğer bagging ve boosting arasındaki temel farkı da anlatmış oluruz herhal.

    boosting ne yapıyor peki. verideki her bir gözleme 1/n (n = eğitim setindeki toplam gözlem sayısı) olacak şekilde standart bir ağırlık atıyor. daha sonra sınıflamayı yapıyor ve yanlış sınıflama oranına (misclassification rate) bakarak yeni ağırlığımı hesaplıyor ve ağırlıkları güncelliyor. bu güncelleme esnasında hacıt sen şu şu gözlemleri yanlış sınıfladın onlara dikkat et diyor modele de. bu şekilde devam ederek modelimin hatasını küçükleyip doğru sınıflama oranını arttırıyorum. özet geçilmiş hali.

    boosting ile varyans ve yanlılığı düşürdük ama modelin aşırı öğrenmesinin de önünü açtık. bu noktada iyi bir iterasyon sayısı belirlemek ve modelin aşırı öğrenmesini engellemek gerekiyor. bunun için de çare validasyon seti kullanmak.

    bagging vs. boosting'i özetlemek gerekirse eğer:

    - bagging veriden örneklem alırken boosting verideki gözlemlere ağırlık atıyor (bir anlamda dağılımını değiştiriyor.)
    - bagging'de her bir model için ağırlık aynı iken boosting'de her bir modelin ağırlığı farklı olabilir.
    - bagging'de her model birbirine paralel olarak oluşturulurken boosting'de modeller birbirine eklenerek sıralı bir şekilde oluşturuluyor.
    - ve son olarak bagging sadece varyansı düşürürken boosting hem varyansı hem de yanlılığı düşürmekte. bu esnada artan modelin karmaşıklığı yüzünden de öğrenme kuralının zorlaşması ile aşırı öğrenmeye sebep olabilmekte.

    kaynaklar ve ileri okuma için:

    bias variance trade-off için

    bagging vs. boosting

    boosting and adaboost

    quick introduction boosting algorithms machine learning

    boosting and bagging: how to develop a robust machine learning algorithm

    gradient boosting ve xgboost entrylerinde görüşmek üzere.

    (bkz: #73750443)