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 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.

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:
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.
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:
Daha fazla bagging öğrenmek isterseniz, sklearn kullanan Makine Öğreniminde Bagging Nedir? eğitimimizi okuyun.