Avantajlar
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 45/112
- 5 dk
Boosting, yüksek doğruluk sağlar ama aşırı öğrenmeye yatkındır.
Boosting'in güçlü yanları
Gradient boosting tablo verisinde çoğu zaman en yüksek skoru verir. Öne çıkan özellikleri:
- Sapmayı da varyansı da düşürebilir (doğru ayarla).
- Ölçekleme gerektirmez;
HistGradientBoostingeksik değer ve kategorik özellikleri doğrudan destekler. - Farklı kayıp fonksiyonları:
loss="absolute_error"aykırılara dayanıklı regresyon,"quantile"tahmin aralığı.
Kategorik özellikler ve NaN
HistGradientBoosting, tam sayı kodlu kategorik sütunları one-hot'a gerek kalmadan doğrudan bölebilir ve eksik değerler için ayrı bir dal öğrenir:
m = HistGradientBoostingClassifier(categorical_features=[0, 3], random_state=0)
m.fit(X_with_nan, y) # SimpleImputer gerekmezBu, ön işleme hattını kısaltır ve yüksek kardinaliteli kategorilerde one-hot'un ürettiği geniş matrisleri önler.
Uygulama Eksik değerle boosting
Meme kanseri verisinin %10'unu np.nan yap (hazır). HistGradientBoostingClassifier(random_state=0)'ı doğrudan eğit ve test doğruluğunu round(..., 3) ile yazdır. Ardından eğitim verisindeki NaN sayısını yazdır.
Başlangıç kodu
import numpy as np
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
rng = np.random.default_rng(0)
X_train = X_train.copy()
X_train[rng.random(X_train.shape) < 0.1] = np.nan
# buraya yazÖrnek çözüm
import numpy as np
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
rng = np.random.default_rng(0)
X_train = X_train.copy()
X_train[rng.random(X_train.shape) < 0.1] = np.nan
m = HistGradientBoostingClassifier(random_state=0).fit(X_train, y_train)
print(round(m.score(X_test, y_test), 3))
print(np.isnan(X_train).sum())Beklenen çıktı
0.93 1311
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boosting'in random forest'e göre dezavantajı hangisidir?
- Hep daha kötüdür
- Daha çok ayar ister ve aşırı öğrenebilir Doğru cevap
- Ölçekleme şarttır
- Sınıflandırma yapamaz
Açıklama: Öğrenme oranı, ağaç sayısı ve derinlik birlikte ayarlanmalıdır.
2 Aykırılara dayanıklı regresyon kaybı seç.
m = HistGradientBoostingRegressor(loss=____)
m = HistGradientBoostingRegressor(loss="absolute_error")
Açıklama: Mutlak hata, büyük kalıntıları karesel hatadan daha az cezalandırır.
3 Özellikleri eşleştir.
| Kavram | Anlamı |
|---|---|
categorical_features |
Kategorileri doğrudan böler |
NaN desteği |
İmputer gerekmez |
loss="quantile" |
Tahmin aralığı |
loss="absolute_error" |
Aykırılara dayanıklı |