Ana içeriğe geç

Boosting Nedir?

Boosting, hataları art arda düzelterek ve zayıf öğrenicileri güçlü kestiricilere dönüştürerek makine öğrenimi performansını artırır.
· 11 dk. oku

Yapay Zeka ile Keşfedin

Makine öğrenimindeki son gelişmeler, karmaşık sorunların ele alınması için yeni yollar sundu. Boosting, sürekli olarak umut vadeden tekniklerden biridir. Birden fazla algoritmayı kullanarak performansı iyileştirmesi sayesinde veri modellemeye yaklaşımımızı değiştiriyor. Boosting kavramı gelişmeye devam ederken Gradient Boosting ve XGBoost gibi daha yeni varyantlar ortaya çıktı ve hız ile doğruluğun sınırlarını zorluyor.

Öngörücü modelleme alanında öğrenilecek çok şey var gibi hissediyorsanız endişelenmeyin. Öğrenmeye devam etmek için Python ile Yardımcı Veri Bilimci veya Python ile Veri Bilimci kariyer yollarımızı ve ayrıca Topluluk Öğrenme Tekniklerini Keşfedin başlıklı eğitimimizi deneyin. 

Makine Öğreniminde Boosting

Boosting, makine öğreniminde güçlü bir topluluk (ensemble) öğrenme yöntemidir ve özellikle, rastgele tahminden yalnızca biraz daha iyi performans gösteren birden çok zayıf öğreniciyi tek bir güçlü öğreniciye dönüştürerek öngörücü modellerin doğruluğunu artırmak üzere tasarlanmıştır. 

Boosting’in özünde, her bir zayıf öğrenicinin selefinin hatalarını düzeltmek üzere eğitildiği yinelemeli bir süreç yatar; bu da zamanla genel model performansını artırır. Önceki modellerin yaptığı hatalara odaklanarak boosting, bir zayıf öğreniciler kümesini daha doğru bir modele dönüştürür. 

Boosting Nasıl Çalışır

Boosting, sıralı model eğitiminde hataları azaltmaya odaklanan sistematik bir süreçle zayıf öğrenicileri tek bir birleşik, güçlü öğreniciye dönüştürür. Yer alan adımlar şunlardır:

  1. Başlangıç Ağırlıklarını Seçin: Öğrenme sürecindeki önemlerini belirtmek için tüm veri noktalarına başlangıç ağırlıkları atayın.
  2. Sıralı Olarak Eğitin: İlk zayıf öğreniciyi veriler üzerinde eğitin. Performansını değerlendirdikten sonra yanlış sınıflandırılmış örneklerin ağırlıklarını artırın. Bu, bir sonraki zayıf öğrenicinin daha zor örneklere odaklanmasını sağlar.
  3. Süreci Yineleyin: Ağırlıkları ayarlama ve sonraki öğrenicileri eğitme sürecini tekrarlayın. Her yeni model, o ana kadarki topluluğun zayıf yönlerine odaklanır.
  4. Sonuçları Birleştirin: Tüm zayıf öğrenicilerin tahminlerini birleştirerek nihai çıktıyı oluşturun. Birleştirme genellikle ağırlıklıdır; daha doğru öğreniciler daha fazla etkiye sahiptir.

Bu yöntem, eğitim verilerindeki zor örneklere daha yoğun biçimde odaklanarak hataları etkili şekilde en aza indirir ve güçlü bir öngörü performansı sağlar.

Boosting Algoritması Türleri

En bilinen boosting algoritmalarından bazılarına göz atalım. 

AdaBoost (Adaptive Boosting)

AdaBoost, ilk boosting algoritmalarından biridir. Her yeni öğrenici eklendiğinde eğitim örneklerinin ağırlıklarını yeniden ayarlamaya odaklanır ve yanlış sınıflandırılmış örneklere daha fazla önem verir. AdaBoost özellikle ikili sınıflandırma problemlerinde etkilidir. Daha fazla bilgi için Python’da AdaBoost Sınıflandırıcı eğitimimizi okuyun.

Gradient Boosting

Gradient boosting, modelleri sıralı olarak kurar ve ilerledikçe hataları düzeltir. Yeni modeller eklerken kaybı en aza indirmek için gradyan iniş algoritmasını kullanır. Esnektir ve hem regresyon hem de sınıflandırma problemlerinde kullanılabilir. Gradient Boosting Algoritmasına Rehber başlıklı eğitimimiz bu süreci ayrıntılı olarak açıklar. 

XGBoost (Extreme Gradient Boosting)

XGBoost, optimize edilmiş, dağıtık bir gradient boosting kütüphanesidir ve Kaggle’daki pek çok yarışma birincisinin başvurduğu yöntemdir. Yüksek verimlilik, esneklik ve taşınabilirlik için tasarlanmıştır. Gradient Boosting çerçevesi altında makine öğrenimi algoritmalarını uygular ve birçok pratik veri sorununa ölçeklenebilir ve doğru bir çözüm sunar. Daha ayrıntılı bir çalışma için Python’da XGBoost Kullanımı eğitimimizi inceleyin ve şu özel kursu alın: XGBoost ile Aşırı Gradient Boosting.

Topluluk (Ensemble) Yöntemler

Boosting, daha geniş bir topluluk yöntemleri grubuna aittir. Topluluk yöntemleri, birden çok modeli birleştirerek tek bir modelin tek başına genellikle elde edebileceğinden daha doğru tahminler üreten bir makine öğrenimi yaklaşımıdır. Bu teknikler, her birinin kendi güçlü ve zayıf yanları olan farklı modellerin çeşitliliğinden yararlanarak kolektif bir karar verme süreci oluşturur.

Farklı topluluk yöntemleri türleri

Boosting öne çıkan bir topluluk öğrenme tekniğidir ancak modellerin öngörü gücünü artıran birkaç yöntemden yalnızca biridir. Birkaçına bakalım.

  • Bagging (Bootstrap Birleştirme): Eğitim verilerinin rastgele alt kümeleri üzerinde birden fazla model eğitip tahminlerini birleştiren bir yöntem. Varyansı azaltır ve aşırı öğrenmeyi önlemeye yardımcı olur.
  • Stacking (İstifli Genelleme): Temel modellerin tahminlerini en iyi nasıl birleştireceğini öğrenmek için bir meta-modelin eğitildiği teknik. Tekil modellerin kaçırabileceği karmaşık örüntüleri yakalayabilir.
  • Blending: Stacking’e benzer, ancak meta-modeli eğitmek için çapraz doğrulama yerine ayrılmış bir doğrulama seti kullanır. Stacking’ten daha basit ve hızlıdır ancak daha az sağlam olabilir.
  • Oylama: Birden çok modelin tahminlerini ya çoğunluk oyu (sert oylama) ya da tahmin olasılıklarının ağırlıklı ortalamasıyla (yumuşak oylama) birleştirir. Uygulaması basittir ve çeşitli temel modellerle etkili olabilir.

Boosting ve bagging karşılaştırması

Boosting sıklıkla özellikle bagging ile karşılaştırılır. Bazı yönlerden benzeseler de aralarında belirgin farklar vardır. Aşağıda boosting ile bagging’in karşılaştırıldığı bir tablo yer alır:

ÖzellikBoostingBagging
Kavramsal OdakÖnceden yanlış sınıflandırılmış örneklere odaklanarak doğruluğu sıralı biçimde artırır.Rastgele alt kümeler üzerinde birden fazla model eğitir ve tahminlerini ortalar.
Model EğitimiSıralı eğitim, her modelin önceki modelin hatalarından öğrenmesini sağlar.Farklı veri örnekleri üzerinde modellerin paralel eğitimi çeşitliliği artırır.
Hata AzaltmaÖncelikle yanlılığı (bias) ve daha az ölçüde varyansı azaltır.Özellikle aşırı öğrenmeye meyilli karmaşık modellerde varyansı azaltır.
Aykırı Değerlere DuyarlılıkYanlış sınıflandırılmış verilere artan odak nedeniyle daha duyarlıdır.Rastgele örnekleme aykırı değerlerin etkisini seyrelttiği için daha az duyarlıdır.
ÖrneklerAdaBoost, Gradient Boosting, XGBoost.Rastgele Ormanlar, Bootstrap Birleştirme.

Daha fazla bagging öğrenmek isterseniz, sklearn kullanan Makine Öğreniminde Bagging Nedir? eğitimimizi okuyun. 

Python ile Boosting’in Bir Uygulaması

Boosting’i anlamanın en iyi yollarından biri, onu uygulamada göstermeye çalışmaktır. Bunu yapmak için, üç badem türünü içeren bu Almond Types Classification Kaggle veri setini kullanacağız: MAMRA, SANORA ve REGULAR ile alan, çevre ve yuvarlaklık gibi kendilerine özgü fiziksel özellikler. 

Her bir badem örneğinin özellikleri, gelişmiş görüntü işleme teknikleriyle çıkarılmıştır. Veri setindeki boş değerler, bademin dik tutulması, yan yatırılması veya sırtüstü bırakılması gibi yöneliminin özellik çıkarma doğruluğunu etkilediği durumları temsil eder. 

Şimdi bu veri setini bir sınıflandırma görevi denemek için kullanalım. Zayıf öğrenicileri tek bir güçlü öğreniciye dönüştürerek model performansını artıran AdaBoost algoritmasını kullanacağız.

1. Kütüphanelerin içe aktarılması

Gerekli kütüphaneleri içe aktararak ve badem veri setini yükleyerek başlıyoruz. Ardından, özellikleri ve hedef değişkenleri ayırıyoruz.

import pandas as pd
almonds = pd.read_csv('Almond.csv', index_col=0)
X = almonds.drop('Type', axis=1)  
y = almonds['Type']

2. Eksik verilerin ele alınması

Sonra, eksik değerleri KNN tamamlayıcısı ile doldurarak veri setini temizliyoruz. Bu, modelimiz için eksiksiz bir veri setine sahip olmamızı sağlar.

from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5)
X_imputed = imputer.fit_transform(X)

3. Verinin eğitim ve test için bölünmesi

Modelimizin yeni verilerle nasıl başa çıkacağını değerlendirebilmek için veriyi eğitim ve test kümelerine ayırıyoruz.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_imputed, y, test_size=0.2, random_state=42)

4. Bir karar ağacı sınıflandırıcısının eğitimi

Burada, performansını artırmaya geçmeden önce bize bir karşılaştırma tabanı sağlayan basit bir karar ağacı modeli eğitiyoruz.

from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
tree = DecisionTreeClassifier(max_depth=1, random_state=42)
tree.fit(X_train, y_train)
tree_accuracy = accuracy_score(y_test, tree.predict(X_test))

5. AdaBoost ile performansın artırılması

Ardından, hatalarına odaklanıp doğruluğu artırarak karar ağacımızın performansını iyileştirmek için AdaBoost kullanıyoruz.

from sklearn.ensemble import AdaBoostClassifier
ada = AdaBoostClassifier(base_estimator=tree, n_estimators=100, learning_rate=1.0, random_state=42)
ada.fit(X_train, y_train)
ada_accuracy = accuracy_score(y_test, ada.predict(X_test))

# Print the accuracies
print(f'Accuracy of the weak learner (Decision Tree): {tree_accuracy * 100:.2f}%')
print(f'Accuracy of AdaBoost model: {ada_accuracy * 100:.2f}%')

6. Nihai çıktı

Son olarak, sonuçları karşılaştırıyor ve AdaBoost’un doğruluğu nasıl önemli ölçüde artırdığını görüyoruz.

Accuracy of the weak learner (Decision Tree): 43.14%
Accuracy of AdaBoost model: 61.50%

Özetle çıkarım nedir? Sonuçlar, AdaBoost üzerinden topluluk öğrenmenin gücünü gösteriyor. Burada zayıf öğrenici, maksimum derinliği yalnızca bir olan bir karar ağacıydı ve yaklaşık %43 gibi mütevazı bir doğruluğa sahipti. Yalnızca üç tür badem olduğuna göre, %43 doğruluk, ortalama tahmin değerinden çok da yüksek sayılmaz. Ancak bu zayıf öğrenici, 100 yinelemeli bir AdaBoost modelinde temel kestirici olarak kullanıldığında doğruluk %62’ye yükseldi.

Bir adım geri çekilerek bir uyarı notu düşelim: AdaBoost, Bademler veri setimizde daha yüksek doğruluk bildirmiş olsa da her durumda en iyi seçenek olmayabilir. Özellikle bu gibi küçük veri setlerinde modelin aşırı karmaşık hale gelmesiyle aşırı öğrenme riski vardır. Gerçekte, daha basit sınıflandırma teknikleri belirli görevlerde aynı derecede iyi, hatta daha iyi performans gösterebilir. Dolayısıyla burada kavramı açıklamak için AdaBoost kullansak da gerçekten yüksek düzeyde bir karmaşıklık isteyip istemediğimizi düşünmek önemlidir.

Sonuç

Boosting, topluluk yöntemlerinin öngörü doğruluğunu artırmadaki gücünü sergileyerek makine öğrenimi alanında önemli bir ilerlemeyi temsil eder. İncelediğimiz gibi, AdaBoost, Gradient Boosting ve XGBoost gibi boosting algoritmaları temel bir ilke üzerinde çalışır: Birden çok zayıf modeli birleştirerek tek, daha etkili bir kestirici oluşturmak. 

Ancak boosting’in makine öğrenimi araç setindeki tek araç olmadığını unutmamak önemlidir. Etkililiği, özgül probleme bağlı olarak değişebilir. Her makine öğrenimi tekniğinde olduğu gibi, boosting’i ne zaman ve nasıl uygulayacağınızı anlamak, ondan tam potansiyeliyle yararlanmanın anahtarıdır.

Boosting ve diğer makine öğrenimi kavramlarına ilişkin bilginizi derinleştirmek için DataCamp’in kapsamlı Herkes İçin Makine Öğrenimi kariyer yolunu keşfetmeyi düşünebilirsiniz. Daha da uzmanlaşmak isteyenler için Python ile Makine Öğrenimi Bilimcisi kariyer yolu, ileri teknikler ve pratik uygulamalar üzerine derinlemesine eğitim sunar.

Vinod Chugani

Yazar

Vinod Chugani

Vinod Chugani kariyerine Tokyo'da JPMorgan'ın en genç Hedge Fund Sales Desk Lideri olarak başladı ve daha sonra Lehman Brothers'ta bireysel satış rekoru kırdı, ardından 30 ülkede faaliyet gösteren bir elektronik dağıtım işi kurdu ve veriye yönelmeden önce geliri SG$100 milyonun üzerine taşıdı. Duke Ekonomimezunu ve NYC Data Science Academy alum, Maven'de Hugo Bowne-Anderson'ın Building AI Applications kursu için 100+ başvuru arasından seçilen üç bursiyerden biriydi. Bugün, istatistikten ajan temelli yapay zekâya uzanan konularda DataCamp, KDnuggets, Machine Learning Mastery ve Statology için yazıyor ve adında 1.000'i aşkın bire bir oturum bulunan NYC Data Science Academy'de veri profesyonellerine mentorluk yapıyor.

 

Sıkça Sorulan Sorular

Makine öğreniminde boosting nedir?

Boosting, öngörücü modellerin doğruluğunu artırmak için kullanılan bir topluluk öğrenme tekniğidir. Rastgele tahminden sadece biraz daha iyi performans gösteren birden çok zayıf öğreniciyi tek bir güçlü öğreniciye birleştirir ve bu da genel model performansını önemli ölçüde artırır.

Boosting bagging’den nasıl farklıdır?

Boosting ve bagging, tahminleri iyileştirmek için birden çok modeli birleştiren topluluk teknikleridir; ancak farklı çalışırlar. Boosting, modelleri sıralı biçimde eğitir; her yeni model, önceki modellerin hatalarına odaklanarak yanlılığı azaltır ve doğruluğu artırır. Buna karşılık bagging, verinin farklı alt kümeleri üzerinde modelleri paralel şekilde eğitir ve çıktıları ortalayarak varyansı azaltır ve kararlılığı artırır. Boosting aykırı değerlere ve gürültüye daha duyarlı iken, bagging ortalama alma yöntemi sayesinde bunlara karşı daha dayanıklıdır.

Boosting hem sınıflandırma hem de regresyon problemlerinde kullanılabilir mi?

Evet, boosting teknikleri hem sınıflandırma hem de regresyon için uyarlanabilir. AdaBoost daha çok sınıflandırma problemlerinde kullanılırken Gradient Boosting gibi diğer varyantlar regresyonda da etkili şekilde kullanılabilir.

Boosting yineleme sayısı nasıl seçilir?

Bir boosting algoritmasındaki yineleme sayısı, yani zayıf öğrenici sayısı, genellikle veri setine ve problemin karmaşıklığına bağlıdır. Az ve aşırı uyum arasında denge kurmak için çapraz doğrulama veya benzeri tekniklerle belirlenebilir.

AdaBoost, Gradient Boosting gibi diğer boosting tekniklerinden nasıl farklıdır?

AdaBoost, zorlayıcı vakalara odaklanmak için yanlış sınıflandırılmış örneklerin ağırlıklarını artırır. Gradient Boost ise yeni öğrenicileri, önceki modellerin artık (residual) hatalarına uydurur.

AdaBoost kullanmanın başlıca avantajları nelerdir?

AdaBoost’un başlıca avantajları sadeliği, etkililiği ve zayıf öğrenici hakkında ön bilgi gerektirmemesidir. Herhangi bir öğrenme algoritmasıyla birleştirilebilecek kadar esnektir ve diğer yöntemlerin zorlandığı sınıflandırmalarda sıklıkla başarılı olur.

Makine öğrenimi modellerinde performansı artırmak için AdaBoost’a bazı dikkat çekici alternatifler nelerdir?

AdaBoost’a kayda değer alternatifler arasında Gradient Boosting, XGBoost, CatBoost, LightGBM ve HistGradientBoost yer alır.

Boosting dışında hangi tür topluluk öğrenme yöntemleri vardır?

Boosting dışında yaygın topluluk öğrenme biçimleri arasında, modelleri en yüksek öngörü gücü için farklı stratejilerle entegre eden bagging ve stacking bulunur.

Konular

İlgili