Random forest nedir?
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 35/112
- 5 dk
Random forest, birden çok karar ağacını birleştiren ensemble algoritmasıdır.
Random forest nedir?
Tek bir karar ağacı veri değiştikçe çok farklı kurallar öğrenir (yüksek varyans). Random forest yüzlerce ağacı farklı veri örneklemleri ve farklı özellik alt kümeleriyle eğitir, kararlarını oylamayla birleştirir. Ağaçların hataları birbirini götürür.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(X_train, y_train)
print(rf.score(X_test, y_test))
print(len(rf.estimators_)) # 200 ayrı ağaçÖlçekleme gerektirmez, az ayarla iyi çalışır ve çoğu tablo verisinde güçlü bir ilk tercihtir.
Ağaçlar neden farklı?
İki rastgelelik kaynağı vardır:
- Bootstrap: her ağaç, eğitim verisinden yerine koyarak çekilmiş bir örneklemle eğitilir.
- Özellik alt kümesi: her bölmede yalnızca rastgele seçilmiş
max_featuresözellik değerlendirilir (sınıflandırmada varsayılan √p).
İkincisi önemlidir: güçlü bir özellik tüm ağaçların kökünde olsaydı ağaçlar birbirine benzer, ortalamanın faydası azalırdı.
Uygulama Ağaç ve orman
Tek bir DecisionTreeClassifier(random_state=0) ve RandomForestClassifier(n_estimators=200, random_state=0) eğit. İkisinin test doğruluğunu round(..., 3) ile alt alta yazdır.
Başlangıç kodu
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)
from sklearn.tree import DecisionTreeClassifier
# buraya yazÖrnek çözüm
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)
from sklearn.tree import DecisionTreeClassifier
agac = DecisionTreeClassifier(random_state=0).fit(X_train, y_train)
rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(X_train, y_train)
print(round(agac.score(X_test, y_test), 3))
print(round(rf.score(X_test, y_test), 3))Beklenen çıktı
0.902 0.944
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Random forest tek ağaca göre hangi sorunu azaltır?
- Sapmayı her zaman sıfırlar
- Eğitim süresini
- Bellek kullanımını
- Varyansı (kararsızlığı) Doğru cevap
Açıklama: Birbirinden farklı ağaçların ortalaması, tek ağacın dalgalanmasını yumuşatır.
2 300 ağaçlı bir orman oluştur.
rf = RandomForestClassifier(____=300, random_state=0)
rf = RandomForestClassifier(n_estimators=300, random_state=0)
Açıklama: n_estimators ormandaki ağaç sayısıdır.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
bootstrap |
Yerine koyarak örnekleme |
max_features |
Bölmede aday özellik sayısı |
estimators_ |
Eğitilmiş ağaçlar |
oylama |
Kararların birleşimi |