Makine Öğrenmesi
Learning rate
Learning rate, her ağacın katkısını ölçekler.
Öğrenme oranı
learning_rate her ağacın katkısını küçültür. Küçük oran, aynı başarıya daha çok ağaçla ama daha iyi genelleyerek ulaşır; buna shrinkage (büzme) denir. Öğrenme oranı ile ağaç sayısı birlikte ayarlanır:
for lr, n in [(1.0, 50), (0.1, 500)]:
m = GradientBoostingClassifier(learning_rate=lr, n_estimators=n, random_state=0)
print(lr, n, m.fit(X_train, y_train).score(X_test, y_test))
Random forest'in aksine boosting'de ağaç sayısı artınca aşırı öğrenme olur.
Erken durdurma
Kaç ağacın yeteceğini elle aramak yerine eğitim, doğrulama skoru iyileşmeyi bıraktığında durdurulabilir. HistGradientBoosting'de iç doğrulama kümesiyle kendiliğinden yapılır:
m = HistGradientBoostingClassifier(max_iter=1000, early_stopping=True,
validation_fraction=0.1, n_iter_no_change=10,
random_state=0).fit(X_train, y_train)
print(m.n_iter_) # gerçekte kullanılan ağaç sayısı
Klasik GradientBoosting'de aynı iş n_iter_no_change parametresiyle yapılır.
Uygulama Erken durdurma
HistGradientBoostingClassifier(max_iter=1000, early_stopping=True, n_iter_no_change=10, random_state=0) eğit. Kullanılan tur sayısını (n_iter_) ve test doğruluğunu round(..., 3) ile alt alta yazdır.
Örnek çözümü göster
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
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)
from sklearn.ensemble import HistGradientBoostingClassifier
m = HistGradientBoostingClassifier(max_iter=1000, early_stopping=True, n_iter_no_change=10, random_state=0).fit(X_train, y_train)
print(m.n_iter_)
print(round(m.score(X_test, y_test), 3))
Kendini test et
-
Öğrenme oranı yarıya indirilirse ağaç sayısı için genel kural nedir?
- Değişmez
- Bire düşer
- Yaklaşık iki katına çıkarılır
- Yarıya indirilir
Cevabı göster
Yaklaşık iki katına çıkarılır — Her adım küçüldüğü için aynı yolu gitmek daha çok adım ister.
-
Ağaç katkısını küçült.
m = GradientBoostingClassifier(____=0.05, n_estimators=400)
Cevabı göster
m = GradientBoostingClassifier(learning_rate=0.05, n_estimators=400)
-
Ayarları eşleştir.
- learning_rate
- Adım büyüklüğü
- n_estimators
- Ağaç sayısı
- n_iter_no_change
- Erken durdurma sabrı
- n_iter_
- Kullanılan tur
Sıradaki ders: Avantajlar