Makine Öğrenmesi
Bagging
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 tahmin
OOB 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).
Örnek çözümü göster
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))
Kendini test et
-
Bir bootstrap örnekleminde özgün örneklerin yaklaşık yüzde kaçı yer alır?
Cevabı göster
%63 — Bir örneğin hiç seçilmeme olasılığı (1-1/n)ⁿ ≈ e⁻¹ ≈ 0.37'dir; kalan %63 en az bir kez seçilir.
-
Torba dışı skoru hesaplat.
rf = RandomForestClassifier(n_estimators=200, ____=True)
Cevabı göster
rf = RandomForestClassifier(n_estimators=200, oob_score=True)
-
Kavramları eşleştir.
- bagging
- Bootstrap + ortalama
- random forest
- Bagging + rastgele özellik
- OOB
- Görülmeyen örnekler
- oob_score_
- Ücretsiz doğrulama
Sıradaki ders: Feature importance