Bagging
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 38/112
- 5 dk
Bagging, her ağacı rastgele örneklerle eğiterek çeşitlilik sağlar.
Bagging
Bagging (bootstrap aggregating), herhangi bir modeli bootstrap örneklemleriyle çoğaltıp ortalamasını alan genel yöntemdir. Random forest, bagging'e "bölmede rastgele özellik" eklenmiş halidir:
from sklearn.ensemble import BaggingClassifier
bag = BaggingClassifier(DecisionTreeClassifier(), n_estimators=100, random_state=0)
bag.fit(X_train, y_train)Bagging en çok, kararsız (yüksek varyanslı) modellerde işe yarar: derin ağaçlar, KNN'in küçük k'lısı.
Torba dışı (OOB) skor
Her ağaç örneklerin ~%37'sini hiç görmez. Her örnek, onu görmemiş ağaçların oyuyla değerlendirilince ayrı bir doğrulama kümesi gerekmeden bir başarı tahmini elde edilir:
rf = RandomForestClassifier(n_estimators=200, oob_score=True, random_state=0)
rf.fit(X_train, y_train)
print(rf.oob_score_) # CV'ye yakın, ücretsiz bir tahminOOB skoru büyük veri setlerinde CV'nin hızlı bir alternatifidir.
Uygulama OOB ve test
RandomForestClassifier(n_estimators=200, oob_score=True, random_state=0) eğit. oob_score_ ve test doğruluğunu round(..., 3) ile aynı satırda yazdır. Ardından bir bootstrap örnekleminin özgün örneklerin kaçta kaçını içerdiğini np.unique(rng.integers(0, n, n)).size / n ile hesaplayıp round(..., 2) ile yazdır (n = 10000).
Başlangıç kodu
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
rng = np.random.default_rng(0)
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
rng = np.random.default_rng(0)
rf = RandomForestClassifier(n_estimators=200, oob_score=True, random_state=0).fit(X_train, y_train)
print(round(rf.oob_score_, 3), round(rf.score(X_test, y_test), 3))
n = 10000
print(round(np.unique(rng.integers(0, n, n)).size / n, 2))Beklenen çıktı
0.965 0.944 0.64
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir bootstrap örnekleminde özgün örneklerin yaklaşık yüzde kaçı yer alır?
- %63 Doğru cevap
- %100
- %50
- %37
Açıklama: Bir örneğin hiç seçilmeme olasılığı (1-1/n)ⁿ ≈ e⁻¹ ≈ 0.37'dir; kalan %63 en az bir kez seçilir.
2 Torba dışı skoru hesaplat.
rf = RandomForestClassifier(n_estimators=200, ____=True)
rf = RandomForestClassifier(n_estimators=200, oob_score=True)
Açıklama: oob_score=True eğitim sonrası oob_score_ özniteliğini doldurur.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
bagging |
Bootstrap + ortalama |
random forest |
Bagging + rastgele özellik |
OOB |
Görülmeyen örnekler |
oob_score_ |
Ücretsiz doğrulama |