You are on page 1of 30

Kolektif Öğrenme

(Ensemble Learning)
Kolektif Öğrenme
• Kolektif öğrenme, bir çok zayıf öğreniciyi (weak learners/ models)
daha güçlü öğreniciler oluşturmak (model tahminleme gücünü
arttırmak) amacıyla bir araya getiren eğiticili öğrenme tekniğidir.
• Eğer temel öğreniciler, düşük korelasyona sahipse kollektif model
daha iyi çalışır.
Kolektif Öğrenmede Hata
(Variance vs. Bias)
• Herhangi bir model’deki hata matematiksel olarak 3
bileşenle ifade edilebilir.

• Yanlılık hatası(Bias error), tahmin edilen değerlerin ortalamasının,


gerçek değerden ne kadar farklı olduğunu ölçmekte oldukça
yararlıdır. Yüksek yanlılık hatası, model öğrenmesinin düşük olduğu
anlamına gelmektedir. Model verideki önemli eğilimleri
yakalayamamaktadır.
• Varyans ise aynı gözlem için yapılan tahminlerin birbirinden nasıl
farklı olduğunu ölçmektedir. Yüksek varyanslı modeller, eğitim
datasının aşırı öğrenmesinin sonucudur.
• Diyagramda kırmızı nokta gerçek değeri, mavi noktalar ise model
tarafından yapılan tahminleri göstermektedir.
• Model karmaşıklığı artarken yanlılık azalır, varyans artmaktadır.

Şekil Kaynak: https://www.analyticsvidhya.com/blog/2015/08/introduction-ensemble-learning/


Kolektif Öğrenme Teknikleri
• 1.Bagging (Bootstrap Aggregating)
• N örnekten oluşan bir eğitim veri
kümesinde bootstrap örnekleme
yöntemiyle t tane alt veri kümesi
oluşturulur.
• Her bir t veri kümesi C sınıflandırıcısı
tarafından eğitilerek çoklu
sınıflandırıcılar/modeller oluşturulur.
• Yeni bir örneği sınıflandırmak için her
bir sınıflandırıcının verdiği sonuçlar
oylanarak yada ortalamasına(average
or majority voting) bakılarak örnek
etiketlenir .
• Bagging yöntemi varyans hatasının
azaltılmasına yardımcı olur.
• Örnek: Rastgele Orman algoritması
Şekil Kaynak: https://www.analyticsvidhya.com/blog/2015/08/introduction-ensemble-learning/
Kolektif Öğrenme Teknikleri
• 2-Boosting :
• İteratif bir tekniktir.
• Öğrenme kümesinde her bir örneğin belli
bir ağırlığı vardır. (Başlangıçta 1/N)
• Her öğrenme işleminden sonra , her
sınıflandırıcı için yapılan sınıflandırma
hatasına bağlı olarak örneklerin ağırlığını
günceller.
• Yeni bir örneği sınıflandırmak için her
sınıflandırıcının doğruluğuna bağlı olarak
ağırlıklı ortalamasını alırç yapılan i
• Modelin Bias hatasını düşürür. Ama Over
fit olma sorunu vardır.
• Bagging’den daha iyi bir başarım sonucu
verir.
• Örnek algoritmalar: XGBoost, GBM,
ADABOOST, etc.

Şekil Kaynak: https://www.analyticsvidhya.com/blog/2015/08/introduction-ensemble-learning/


• 3-Stacking : Bu teknikte farklı
öğrenicilerden elde edilen
sonuçlar sonuçlar başka bir
öğrenici tarafından kullanılarak
tahmin üretilir. Öğrenicilerin
kullanımına göre bias yada
varyans hatasını düşürecek
şekilde tasarlanır.
•Averaging
•Majority vote
•Weighted average
Types of ensembling

• Ortalama(Averaging): regresyon
problemlerinde model tahminlerinin
ortalaması alınır.
• Çoğunluk Oylaması(Majority vote):
sınıflandırma problemlerinde
modeller tarafından en çok oylanan
tahmin sonucu seçilir.
• Ağırlıklı Ortalama(Weighted
average): model çıktılarının sonuçları,
öenlerini belirleyen bir ağırlık oranıyla
çarpılarak çoklu model sonucu
hesaplanır.
Yararları?
Avantajları
• Daha iyi bir tahminleme (Yüksek başarım oranı)
• Daha istikrarlı/kararlı modeller
• Çoklu modellerin ortak kararları diğer tekli modellere göre daha az
gürültülüdür.
• DezAvantajları
• Aşırı öğrenmeye sebep olabilirler.
• Kollektif teknikleri modelin yorumlanmasını düşürür
• Model oluşturmak çok zaman alır, real time uygulamalarda önerilmez
Ağaç tabanlı topluluk algoritmaları
• Topluluk algoritmaları ve özellikle zayıf öğrenenler olarak karar ağaçlarını kullananların diğer
algoritmalara kıyasla birçok avantajı vardır:
• Algoritmalarının anlaşılması ve görselleştirilmesi kolaydır: Bir karar ağacını tanımlamak ve çizmek, Destek
Vektör Makinelerini tanımlamaktan tartışmasız daha kolaydır.
• Parametrik değildirler ve verilerin belirli bir dağıtımı takip etmesini gerektirmez veya varsaymazlar: bu, verileri
normal şekilde dağıtmak için dönüştürürken size zaman kazandıracaktır.
• Karma veri türlerini işleyebilirler
• Özelliklerin çoklu doğrusallığı(multi-collinearity), modelin doğruluğunu ve tahmin performansını etkilemez:
özelliklerin aralarındaki korelasyonları ve etkileşimleri azaltmak için kaldırılmasına veya başka şekilde
tasarlanmasına gerek yoktur.
• Aşırı uydurmaya karşı dayanıklıdırlar: çünkü yetersiz uyan (yüksek önyargı) birçok zayıf öğrenen kullanırlar ve
bu tahminleri daha güçlü bir öğrenenle birleştirirler, modelin aşırı uymasını (varyansını) azaltırlar.
• Aykırı değerlere ve gürültüye karşı nispeten sağlamdırlar: genel olarak gürültülü verileri (ör. Hedef üzerinde
etkisi olmayan özellikler) veya aykırı değerleri (ör. Uç değerler) iyi işleyecek ve genel performans üzerinde çok
az etkisi olacaktır.
• Girişlerin ölçeklenmesine gerek yoktur: MinMaxScaler veya StandardScaler ile özelliklerin ön işlemesi ve
dönüştürülmesi gerekli değildir
• Hesaplama açısından nispeten ucuzdurlar: Destek Vektör Makineleri veya sinir ağları gibi algoritmalara kıyasla
daha hızlıdırlar
• Genellikle zayıf öğrenenlerden çok daha iyi performans gösterirler: Karar ağaçları, hızlandırma ve torbalama
algoritmalarına kıyasla yüksek varyansları / aşırı uyumları nedeniyle daha az doğru olacaktır.
Boosting
• Boosting'in genel fikri, diğer tüm topluluk algoritmalarında olduğu
gibi, birkaç zayıf öğrenciyi daha güçlü bir şekilde birleştirmektir. Zayıf
bir öğrenci, rastgele olduğundan biraz daha iyi tahmin eden bir
öğrenme algoritmasına atıfta bulunur. Boosting algoritmalarının
temeli, öngörücüleri sırayla denemektir; burada sonraki her model, bir
önceki modelin hatalarını düzeltmeye çalışır.
• Bunun anlamı:
• Ağaçlar sırayla büyüyor
• Her ağaç, önceden yetiştirilen ağaçlardan alınan bilgiler kullanılarak
yetiştirilir.
• Torbalamada olduğu gibi önyükleme örneklemesini içermez
Zayıf öğrencilerin aileleri, aralarında minimum bir korelasyona
sahip olmalıdır.
Adaptive Boosting
• Adaptive Boosting veya en yaygın olarak bilinen AdaBoost algoritması ilk
olarak 1995 yılında Freund & Schapire tarafından tanıtıldı. Karar ağaçlarını
zayıf öğrenenler olarak sırayla büyütmek ve yanlış tahmin edilen örnekleri
her bir tahmin turundan sonra onlara daha büyük bir ağırlık atayarak
cezalandırmaktır. Bu şekilde, algoritma önceki hatalardan ders alıyor. Nihai
tahmin, ağırlıklı çoğunluk oyu (veya regresyon sorunları durumunda ağırlıklı
medyan)
• Herhangi bir seviyede bir sınıflandırıcıyı eğittikten sonra, ada-boost her
eğitim öğesine ağırlık atar. Yanlış sınıflandırılan öğeye, bir sonraki
sınıflandırıcının eğitim alt kümesinde daha yüksek olasılıkla görünmesi için
daha yüksek ağırlık atanır
• Her sınıflandırıcı eğitildikten sonra , sınıflandırıcıya doğruluk temelinde
de bir ağırlık atanır . Daha doğru sınıflandırıcıya, nihai sonuçta daha fazla
etkiye sahip olması için daha yüksek ağırlık atanır.
Adaboost Algoritması
Adaboost

Şekil Kaynak: https://www.analyticsvidhya.com/blog/2015/08/introduction-ensemble-learning/


Algoritma adımları
• İlk tur için numunelerin ağırlıklarını w = 1 / m olarak başlatın, burada
m numune sayısıdır)
• T turlarında t için:
• Adım 1.) Örneklerin toplanmasını sınıflandırarak en iyi işi yapan dağıtım p'yi
kullanarak zayıf bir öğrenen (karar ağacı kökü) yetiştirin; verilerdeki her örnek
için tahmin değerleri ile hipotez h döndür
• Adım 2.) Toplam Hatayı ve sınıflandırıcı ağırlıkları hesaplayın
• Adım 3.) Betayı Hesaplayın
• Adım 4.) Numunelerin ağırlık vektörünü w = w * Beta olarak güncelleyin,
böylece düşük performansa sahip tahminler daha yüksek ağırlığa ve daha iyi
performansa sahip tahminler daha düşük ağırlığa sahip olacaktır.
• Adım 5.) Ağırlık vektörünü w normalleştirerek dağılım p'yi hesaplayın.
10 Numune örneğini düşünün, her numune için
başlangıç ağırlığı 1/10 = 0,1 olacaktır.
• Aşama 1.)
• Zayıf Öğrenci - Karar ağacı kütüğü,
Gini endeksinin en düşük olduğu
özellik ile oluşturulur.
• Başarı olasılığı (yani "Doğru") ve
başarısızlık (yani "Yanlış") (p² +
q²) olasılık karelerinin toplamını
formül kullanarak alt düğümler
için Gini puanını hesaplayın
• ( Bölünmüş her düğümün 1 ağırlıklı
Gini puanı) kullanarak bir bölme
için Gini Endeksini hesaplayın .
• 10 Numune -
• Özellik 1 - sol düğüm - 4 doğru, 2
yanlış, sağ düğüm —3 doğru, 1 yanlış
• Adım 2 • Aşama 3
• Toplam Hata: Bir stump için Toplam Hata , yanlış sınıflandırılmış örneklerle ilişkili • Beta hesapla İçin yanlış sınıflandırılır numuneler -> beta = exp (söz sahibi miktarı)
ağırlıkların toplamıdır.
• İçin doğru bir şekilde sınıflandırılmış numuneler -> beta = exp (Say -Miktar)
• 10 Örnek: Özellik 2 - sol düğüm - 4 doğru, 0 yanlış, sağ düğüm - 4 doğru, 2 yanlış.
• 4. adım
• 2 özellikli stump için Toplam Hata: - 2 hata yaptı, yani 2 * 1/10 = 0.2.
• Ağırlıkları Güncelleme
• Not: - Numunenin tüm ağırlığı 1'e kadar eklendiği için Toplam Hata her zaman 0 ile 1
arasında olacaktır. 0 mükemmel stump, 1 stumpanlamına gelir. • Yeni Numune Ağırlığı = Numune Ağırlığı * Beta
• Söyleme Miktarı • Yanlış sınıflandırılmış iki örnek var, Burada her iki örneğin örnek ağırlığı 0.1 ve
miktarı 0.69. Her iki örnek için Yeni Örnek Ağırlığı = 0,1 * exp (0,69) = 0,1 (1,99) =
• 1/2 * ln ((1- toplam hata) / toplam hata) 0,2
• Öğrenme oranı getirildiğinde, söz miktarı -> öğrenme_ oranı çarpımı (1/2 * ln ((1- • Doğru sınıflandırılmış sekiz örnek vardır, Burada tüm bu örneklerin örnek ağırlığı
toplam hata) / toplam hata)) olacaktır. 1/10 ve miktarı 0,69 Yeni Örnek Ağırlığı = 0,1 * exp (-0,69) = 0,1 (0,5) = 0,05 tüm 8
örnek için, burada dağılım gibi örnek ağırlıkları kullanıyoruz.
• Özellik 2'ye sahip güdük için söylenebilecek miktar [1/2 ln (4)] = 0.69'dur.

• Adım 5
• Ağırlıkları normalleştirme ve yeni dağılım oluşturma Çıktı
AdaBoost algoritması tarafından oluşturulan 4 kütük (Ağaçlar) olduğunu
• Yeni Numune Ağırlıklarını toplarsak, 2 * 0.2 + 8 * (0.05) =
0.8. Bu nedenle, normalleştirilmiş değerleri elde etmek için hayal edin. 4 güdükten 2 güdük test numunesini kategori 1 olarak
her bir numune ağırlığını 0,8'e böleriz. Şimdi sınıflandırır ve diğer 2 güdük test numunesini kategori 2 olarak sınıflandırır.
Normalleştirilmiş Ağırlıkları Yeni Numune Ağırlıkları olarak Bunlar bu güdükler için Say Miktarı 0.69 + 0.6 = 1.29 ve diğer 2 kütük için Sa
kabul ediyoruz
Miktarı 0.41 + 0.82 = 1.23'tür.
• Yeni ağırlıklar - 0.06, 0.06, 0.06, 0.25 , 0.06, 0.06, 0.25 , 0.06
olacaktır. Sonuçta, Kategori 1 , daha büyük Sayma Miktarı (1.29) nedeniyle çıktı
olacaktır.
• Bu nedenle, yanlış sınıflandırılan numunelerin ağırlıkları
0.1'den 0.25'e çıkarılır, böylece sonraki yinelemede birden
çok kez seçilme şansları artar. Bir sonraki güdük oluşturmadan
önce yeni bir veri kümesi oluşturmamız gerekiyor. Burada 0
ile 1 arasında rastgele sayılar seçiyoruz ve sonraki yineleme
için örnekleri seçiyoruz, burada dağılım gibi örnek ağırlıkları
kullanıyoruz.
AdaBoost'un Artıları:
• Düşük gürültülü veri kümelerinde aşırı uyuma göre nispeten sağlam
• AdaBoost, model performansını iyileştirmek için ayarlanması gereken
yalnızca birkaç hiperparametreye sahiptir
• Anlaması ve görselleştirmesi kolay
• AdaBoost'un dezavantajı, gürültülü veriler tarafından kolayca yenilmesi,
algoritma her noktaya mükemmel bir şekilde uymaya çalıştığı için
algoritmanın verimliliğinin aykırı değerlerden oldukça etkilenmesidir.
• Rastgele ormanlar ve XGBoost ile karşılaştırıldığında AdaBoost, alakasız
özellikler dahil edildiğinde daha kötü performans gösterir
• AdaBoost hız için optimize edilmemiştir
Gradient Boosting
• Gradient Boosting, Gradyan İniş + Arttırma anlamına gelir. Bu, çalışma temeli aynı
AdaBoost için gördüğümüz gibi olan çok popüler bir Boosting algoritmasıdır.
Aradaki fark, selefinin yeterince uygun olmayan değerleriyle ne yaptığında
yatmaktadır. Her etkileşimde örnek ağırlıklarını değiştiren AdaBoost'un aksine, bu
yöntem yeni öngörücüyü önceki tahminci tarafından yapılan artık hatalara
uydurmaya çalışır .
• Gradyan artırma, yükseltmeyi sayısal bir optimizasyon problemi olarak yeniden
tanımlar; burada amaç, gradyan-iniş benzeri bir prosedür kullanarak zayıf
öğrenciler ekleyerek modelin kayıp işlevini en aza indirmektir .
• Gradyan artırma, bir kayıp işlevini en aza indirmeye dayandığından, regresyon,
çok sınıflı sınıflandırma vb. İçin uygulanabilecek esnek bir teknikle sonuçlanan
farklı türlerde kayıp işlevleri kullanılabilir .

Maliyet optimizasyonu

• Bu algoritma, negatif gradyan


yönünü işaret eden bir
fonksiyonu (zayıf hipotez)
yinelemeli olarak seçerek,
fonksiyon alanı üzerinden bir
maliyet fonksiyonunu optimize
eder.
• Giriş Verileri: Aşağıdaki 10
örneği girdi olarak düşünün
XGBoost
• Extreme Gradient Boosting, Gradient Boosting'in gelişmiş bir uygulamasıdır. Bu algoritma, "ölçeklenebilir,
taşınabilir ve doğru bir kitaplık sağlamak için makinelerin hesaplama sınırlarının en uç noktasını zorlamak"
için tasarlanmıştır. Dahası, fazla uydurmayı azaltan ve genel performansı artıran çeşitli düzenlemeler içerir.
• Paralel İşleme
• Xgboost, belirttiğiniz gibi birden fazla ağacı paralel olarak çalıştırmaz, gradyanları güncellemek için her
ağaçtan sonra tahminlere ihtiyacınız vardır.
• Paralelleşme, her ağacın inşası sırasında çok düşük bir seviyede gerçekleşir. Ağacın her bir bağımsız dalı ayrı
ayrı eğitilir.
• En İyi Bölmeyi Bulmak
• Bir GBDT'yi eğitmedeki en önemli zorluk, her yaprak için en iyi bölümü bulma sürecidir. Saf bir şekilde
yapıldığında, bu adım algoritmanın her veri noktasının her özelliğinden geçmesini gerektirir. Hesaplama
karmaşıklığı bu nedenle O (n {veri} n {özellik}).
• Histogram tabanlı yöntemler Genellikle bölmedeki küçük değişiklikler ağacın performansında çok fazla fark
yaratmaz. Histogram tabanlı yöntemler, özellikleri bir dizi bölmede gruplandırarak ve özellikler yerine
bölmelerde bölme gerçekleştirerek bu olgudan yararlanır. Bu, modelin değerlendirdiği bölme sayısının alt
örneklemesine eşdeğerdir. Her bir ağaç oluşturulmadan önce özellikler gruplanabildiğinden, bu yöntem
eğitimi büyük ölçüde hızlandırarak hesaplama karmaşıklığını O (n {veri} n {bin}) değerine indirebilir.
XGB'nin Artıları:
• Hem L1 hem de L2 düzenlileştirmesi ile Düzenli Gradyan Arttırma.
• Paralel işlemeyi GB'den çok daha hızlı olarak uygular.
• Kullanıcıların, modele yepyeni bir boyut ekleyerek özel optimizasyon hedefleri ve değerlendirme
kriterleri tanımlamasına olanak tanır.
• Eksik değerleri işlemek için yerleşik bir rutine sahiptir.
• Belirtilen maksimum derinliğe kadar bölmeler yapar ve ardından ağacı geriye doğru budamaya
başlar ve ötesinde pozitif kazanım olmayan bölmeleri kaldırır.
• Bir kullanıcının, artırma işleminin her yinelemesinde bir çapraz doğrulama çalıştırmasına olanak
tanır ve bu nedenle, tek bir çalıştırmada tam olarak optimum yükseltme yinelemesi sayısını elde
etmek kolaydır.
• AdaBoost ve rastgele ormanlara kıyasla XGBoost'un anlaşılması, görselleştirilmesi ve ayarlanması
daha zordur. Performansı artırmak için ayarlanabilen çok sayıda hiperparametre vardır.
• Kategorik özellikleri tek başına ele alamaz, yalnızca Random Forest'a benzer sayısal değerleri kabul
eder. Bu nedenle, XGBoost'a kategorik veri sağlamadan önce etiket kodlama, ortalama kodlama
veya tek sıcak kodlama gibi çeşitli kodlamalar gerçekleştirilmelidir.
Kaynaklar
• https://www.analyticsvidhya.com/blog/2015/08/introduction-
ensemble-learning/

You might also like