Ana içeriğe atla

Python’da AdaBoost Sınıflandırıcı

Topluluk yaklaşımını, AdaBoost algoritmasının çalışma şeklini anlayın ve Python’da AdaBoost model kurmayı öğrenin.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Son yıllarda, boosting algoritmaları veri bilimi veya makine öğrenimi yarışmalarında büyük popülerlik kazandı. Bu yarışmaların kazananlarının çoğu yüksek doğruluk elde etmek için boosting algoritmalarını kullanıyor. Veri bilimi yarışmaları, çeşitli iş ve kamu sorunları için öğrenme, keşfetme ve çözüm üretme konusunda küresel bir platform sunar. Boosting algoritmaları, düşük doğruluğa (veya zayıf) sahip birden çok modeli bir araya getirerek yüksek doğruluğa (veya güçlü) sahip modeller oluşturur. Kredi, sigorta, pazarlama ve satış gibi çeşitli alanlarda kullanılabilir. AdaBoost, Gradient Boosting ve XGBoost gibi boosting algoritmaları, veri bilimi yarışmalarını kazanmak için yaygın olarak kullanılan makine öğrenimi algoritmalarıdır. Bu eğitimde, AdaBoost topluluk (ensemble) boosting algoritmasını öğrenecek ve aşağıdaki konuları ele alacağız:

Topluluk (Ensemble) Makine Öğrenimi Yaklaşımı

Topluluk (ensemble), bir dizi düşük performanslı sınıflandırıcıyı birleştirerek iyileştirilmiş bir sınıflandırıcı oluşturmayı amaçlayan bileşik bir modeldir. Burada, tek tek sınıflandırıcılar oy verir ve nihai tahmin etiketi çoğunluk oylamasıyla döndürülür. Topluluklar, tekil veya temel sınıflandırıcıdan daha yüksek doğruluk sunar. Topluluk yöntemleri, her bir temel öğreniciyi farklı makinlere atayarak paralelleştirilebilir. Sonuç olarak, ensemble öğrenme yöntemlerinin performansı artırmak için birden çok makine öğrenimi yöntemini tek bir öngörücü modelde birleştiren meta-algoritmalar olduğunu söyleyebilirsiniz. Topluluk yöntemleri, bagging yaklaşımıyla varyansı, boosting yaklaşımıyla yanlılığı (bias) azaltabilir veya stacking yaklaşımıyla tahminleri iyileştirebilir.

Topluluk (Ensemble) Makine Öğrenimi Yaklaşımı
  1. Bagging, bootstrap aggregation ifadesinin kısaltmasıdır. Tahminlerin varyansını azaltacak şekilde birden çok öğreniciyi birleştirir. Örneğin, Random Forest M sayıda Karar Ağacı eğitir; verilerin farklı rastgele alt kümeleri üzerinde M farklı ağaç eğitip nihai tahmin için oylama yapabilirsiniz. Bagging topluluk yöntemlerine örnek olarak Random Forest ve Extra Trees verilebilir.

  2. Boosting algoritmaları, yüksek doğrulukta bir sınıflandırıcı oluşturmak için bir dizi düşük doğruluklu sınıflandırıcıdan faydalanır. Düşük doğruluklu (veya zayıf) sınıflandırıcı, yazı tura atmaktan daha iyi doğruluk sunar. Yüksek doğruluklu (veya güçlü) sınıflandırıcı ise hata oranı 0’a yakın olan sınıflandırıcıdır. Boosting algoritması, doğru tahmin yapamayan modeli izleyebilir. Boosting algoritmaları aşırı öğrenme (overfitting) sorunundan daha az etkilenir. Aşağıdaki üç algoritma, veri bilimi yarışmalarında büyük popülerlik kazanmıştır.

    • AdaBoost (Uyarlamalı Boosting)
    • Gradient Tree Boosting
    • XGBoost
  3. Stacking (veya yığıtlı genelleme), birden çok temel sınıflandırma modelinin tahminlerini yeni bir veri kümesinde birleştiren bir ensemble öğrenme tekniğidir. Bu yeni veriler, başka bir sınıflandırıcı için girdi veri olarak ele alınır. Bu sınıflandırıcı, problemi çözmek üzere kullanılır. Stacking, sıklıkla blending olarak da anılır.

Topluluk (Ensemble) Makine Öğrenimi Yaklaşımı

Temel öğrenicilerin düzenlenişine göre ensemble yöntemleri iki gruba ayrılabilir: Paralel ensemble yöntemlerinde temel öğreniciler paralel olarak üretilir; örneğin Random Forest. Sıralı ensemble yöntemlerinde temel öğreniciler sıralı olarak üretilir; örneğin AdaBoost.

Temel öğrenicilerin türüne göre ensemble yöntemleri iki gruba ayrılabilir: Homojen ensemble yöntemi her yinelemede aynı tür temel öğreniciyi kullanır. Heterojen ensemble yöntemi ise her yinelemede farklı tür temel öğrenici kullanır.

AdaBoost Sınıflandırıcı

AdaBoost veya Uyarlamalı Boosting, 1996 yılında Yoav Freund ve Robert Schapire tarafından önerilen ensemble boosting sınıflandırıcılarından biridir. Sınıflandırıcıların doğruluğunu artırmak için birden fazlasını birleştirir. AdaBoost yinelemeli bir ensemble yöntemidir. AdaBoost sınıflandırıcı, birden fazla zayıf performanslı sınıflandırıcıyı birleştirerek yüksek doğruluklu güçlü bir sınıflandırıcı kurar. Adaboost’un temel fikri, her yinelemede sınıflandırıcıların ve eğitim örneklerinin ağırlıklarını öyle ayarlamaktır ki alışılmadık gözlemlerin doğru tahmin edilmesini sağlasın. Eğitim kümesi üzerinde ağırlıkları kabul edebilen her makine öğrenimi algoritması temel sınıflandırıcı olarak kullanılabilir. Adaboost iki koşulu karşılamalıdır:

  1. Sınıflandırıcı, farklı ağırlıklandırılmış eğitim örnekleri üzerinde etkileşimli şekilde eğitilmelidir.
  2. Her yinelemede eğitim hatasını en aza indirerek bu örneklere çok iyi uyum sağlamaya çalışır.

AdaBoost algoritması nasıl çalışır?

Aşağıdaki adımlarla çalışır:

  1. Başlangıçta, Adaboost rastgele bir eğitim alt kümesi seçer.
  2. Bir önceki eğitimin doğru tahminlerine göre eğitim kümesini seçerek AdaBoost makine öğrenimi modelini yinelemeli olarak eğitir.
  3. Yanlış sınıflandırılan gözlemlere daha yüksek ağırlık atar; böylece bir sonraki yinelemede bu gözlemler sınıflandırma için daha yüksek olasılık elde eder.
  4. Ayrıca, her yinelemede eğitilen sınıflandırıcıya doğruluğuna göre ağırlık atar. Daha doğru olan sınıflandırıcı daha yüksek ağırlık alır.
  5. Bu süreç, tüm eğitim verileri hatasız uyana kadar veya belirtilen azami tahminci (estimator) sayısına ulaşılana kadar yinelenir.
  6. Sınıflandırma yapmak için, oluşturduğunuz tüm öğrenme algoritmaları arasında bir "oylama" gerçekleştirin.
AdaBoost algoritması nasıl çalışır?

Python ile Model Kurma

Gerekli Kütüphanelerin İçe Aktarılması

Önce gerekli kütüphaneleri yükleyelim.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
# Import train_test_split function
from sklearn.model_selection import train_test_split
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

Veri Kümesinin Yüklenmesi

Model kurma bölümünde, çok meşhur bir çok sınıflı sınıflandırma problemi olan IRIS veri kümesini kullanabilirsiniz. Bu veri kümesi 4 özelliği (sepal uzunluğu, sepal genişliği, petal uzunluğu, petal genişliği) ve bir hedefi (çiçek türü) içerir. Veride üç çiçek sınıfı vardır: Setosa, Versicolour ve Virginica. Veri kümesi scikit-learn kütüphanesinde mevcuttur veya UCI Machine Learning Library’den de indirebilirsiniz.

# Load data
iris = datasets.load_iris()
X = iris.data
y = iris.target

Veri kümesini bölme

Modelin performansını anlamak için veri kümesini eğitim ve test olarak bölmek iyi bir stratejidir.

train_test_split() fonksiyonunu kullanarak veri kümesini bölelim. Üç parametre geçirmeniz gerekir: özellikler, hedef ve test kümesi boyutu.

# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test

AdaBoost Modelini Kurma

Scikit-learn kullanarak AdaBoost Modeli oluşturalım. AdaBoost varsayılan sınıflandırıcı olarak Decision Tree Classifier kullanır.

# Create adaboost classifer object
abc = AdaBoostClassifier(n_estimators=50,
                         learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)

"En önemli parametreler base_estimator, n_estimators ve learning_rate'tir." (Adaboost Classifier, Chris Albon)

  • base_estimator: Modeli eğitmek için kullanılan zayıf öğrenicidir. Eğitim amacıyla varsayılan zayıf öğrenici olarak DecisionTreeClassifier kullanır. Farklı makine öğrenimi algoritmaları da belirtebilirsiniz.
  • n_estimators: Yinelemeli olarak eğitilecek zayıf öğrenici sayısı.
  • learning_rate: Zayıf öğrenicilerin ağırlıklarına katkıda bulunur. Varsayılan değeri 1’dir.

Modeli Değerlendirme

Sınıflandırıcının veya modelin kültivar türünü ne kadar doğru tahmin edebildiğini tahmin edelim.

Doğruluk, gerçek test kümesi değerleriyle tahmin edilen değerleri karşılaştırarak hesaplanabilir.

# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.8888888888888888

Burada %88,88 doğruluk elde ettiniz; iyi bir doğruluk olarak kabul edilir.

Daha ileri değerlendirme için, farklı Temel Tahminciler (Base Estimators) kullanarak da bir model oluşturabilirsiniz.

Farklı Temel Öğreniciler Kullanma

Temel tahminci olarak SVC kullandım. Örnek ağırlığını kabul ediyorsa Decision Tree, Support Vector Classifier gibi herhangi bir ML öğrenicisini temel tahminci olarak kullanabilirsiniz.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier

# Import Support Vector Classifier
from sklearn.svm import SVC
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')

# Create adaboost classifer object
abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)

# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)


# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.9555555555555556

Burada %95,55’lik bir sınıflandırma oranı elde ettiniz; bu da iyi bir doğruluk olarak kabul edilir.

Bu durumda, SVC Temel Tahmincisi, Karar Ağacı Temel Tahmincisine göre daha iyi doğruluk sağlıyor.

Artılar

AdaBoost uygulaması kolaydır. Zayıf sınıflandırıcının hatalarını yinelemeli olarak düzeltir ve zayıf öğrenicileri birleştirerek doğruluğu artırır. AdaBoost ile birçok temel sınıflandırıcı kullanabilirsiniz. AdaBoost aşırı öğrenmeye yatkın değildir. Bu durum deney sonuçlarıyla görülebilir, ancak elde somut bir neden yoktur.

Eksiler

AdaBoost gürültülü verilere duyarlıdır. Her noktayı mükemmel şekilde uydurmaya çalıştığı için aykırı değerlere yüksek derecede etkilenir. AdaBoost, XGBoost’a kıyasla daha yavaştır.

Sonuç

Tebrikler, bu eğitimin sonuna geldiniz!

Bu eğitimde, Topluluk (Ensemble) Makine Öğrenimi Yaklaşımlarını, AdaBoost algoritmasını, çalışma şeklini, Python Scikit-learn paketiyle model kurmayı ve değerlendirmeyi öğrendiniz. Ayrıca artılarını ve eksilerini tartıştık.

Geri bildirimlerinizi veya sorularınızı duymaktan memnuniyet duyarım. Yorum bırakarak soru sorabilirsiniz; yanıtlamak için elimden geleni yapacağım.

Python ile makine öğrenimi hakkında daha fazla bilgi edinmek isterseniz, DataCamp'in XGBoost ile Aşırı Gradyan Artırma (Extreme Gradient Boosting) kursuna ve Python Makine Öğrenimi: Scikit-Learn Eğitimine göz atın.

Konular
Python

Python Kursları

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör