Topluluk (Ensemble) Öğrenme

Python ile Ağaç Tabanlı Modellerle Machine Learning

Elie Kawerk

Data Scientist

CART'ların Avantajları

  • Anlaşılması kolay.

  • Yorumlaması kolay.

  • Kullanımı kolay.

  • Esnek: doğrusal olmayan bağımlılıkları yakalar.

  • Ön işleme: özellikleri standartlaştırma/normalize etme gerekmez, ...

Python ile Ağaç Tabanlı Modellerle Machine Learning

CART'ların Sınırlamaları

  • Sınıflandırma: yalnızca ortogonal karar sınırları üretir.

  • Eğitim kümesindeki küçük değişimlere duyarlıdır.

  • Yüksek varyans: kısıtsız CART'lar aşırı uyum gösterebilir.

  • Çözüm: topluluk öğrenme.

Python ile Ağaç Tabanlı Modellerle Machine Learning

Topluluk (Ensemble) Öğrenme

  • Aynı veri üzerinde farklı modeller eğit.

  • Her model tahmin yapsın.

  • Meta-model: bireysel tahminleri birleştirir.

  • Nihai tahmin: daha sağlam, hata eğilimi daha az.

  • En iyi sonuç: modeller farklı şekillerde yetkindir.

Python ile Ağaç Tabanlı Modellerle Machine Learning

Topluluk Öğrenme: Görsel Açıklama

topluluk-görseli

Python ile Ağaç Tabanlı Modellerle Machine Learning

Uygulamada Topluluk: Voting Classifier

  • İkili sınıflandırma görevi.

  • $N$ sınıflandırıcı tahmin yapar: $P_1$, $P_2$, ..., $P_N$; $P_i$ = 0 veya 1.

  • Meta-model tahmini: sert oylama.

Python ile Ağaç Tabanlı Modellerle Machine Learning

Sert (Hard) Oylama

zor-oylama

Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Voting Classifier (Meme Kanseri veri seti)

# Doğruluk hesaplama ve veri bölme fonksiyonlarını içe aktar
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

# Modelleri ve VotingClassifier meta-modelini içe aktar
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.ensemble import VotingClassifier

# Tekrarlanabilirlik için tohum
SEED = 1
Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Voting Classifier (Meme Kanseri veri seti)

# Veriyi %70 eğitim, %30 test olarak böl
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size= 0.3,
                                                    random_state= SEED)
# Bireysel sınıflandırıcıları başlat
lr = LogisticRegression(random_state=SEED)
knn = KNN()
dt = DecisionTreeClassifier(random_state=SEED)

# (sınıflandırıcı_adı, sınıflandırıcı) ikililerini içeren listeyi tanımla classifiers = [('Logistic Regression', lr), ('K Nearest Neighbours', knn), ('Classification Tree', dt)]
Python ile Ağaç Tabanlı Modellerle Machine Learning
# Sınıflandırıcıları içeren tanımlı liste üzerinde döngü
for clf_name, clf in classifiers:
    # Eğitimi uygula
    clf.fit(X_train, y_train)

    # Test kümesinin etiketlerini tahmin et
    y_pred = clf.predict(X_test)

    # Test kümesindeki doğruluğu değerlendir
    print('{:s} : {:.3f}'.format(clf_name, accuracy_score(y_test, y_pred)))
Logistic Regression: 0.947
K Nearest Neighbours: 0.930
Classification Tree: 0.930
Python ile Ağaç Tabanlı Modellerle Machine Learning

sklearn'de Voting Classifier (Meme Kanseri veri seti)

# Bir VotingClassifier 'vc' oluştur
vc = VotingClassifier(estimators=classifiers) 

# 'vc'yi eğit ve test etiketlerini tahmin et
vc.fit(X_train, y_train)   
y_pred = vc.predict(X_test)

# 'vc'nin test doğruluğunu değerlendir
print('Voting Classifier: {.3f}'.format(accuracy_score(y_test, y_pred)))
Voting Classifier: 0.953
Python ile Ağaç Tabanlı Modellerle Machine Learning

Hadi pratik yapalım!

Python ile Ağaç Tabanlı Modellerle Machine Learning

Preparing Video For Download...